Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revision Previous revision
Next revision
Previous revision
hepsim:jas4pp [2021/02/13 23:12]
hepsim17 [Reading LCIO files]
hepsim:jas4pp [2021/02/17 16:15] (current)
hepsim17 [Reading ROOT files]
Line 41: Line 41:
   * Downloading and searching HepSim data   * Downloading and searching HepSim data
   * Processing ProMC files from HepSim   * Processing ProMC files from HepSim
 +  * Processing ROOT files created by the Delphes program for fast simulation
   * Running over SLCIO files with Geant4 simulated / reconstructed events.   * Running over SLCIO files with Geant4 simulated / reconstructed events.
   * Data analysis (jets, physics vectors, histogram packages)   * Data analysis (jets, physics vectors, histogram packages)
-  * Visualisation of reconstructed events using Wired4 display+  * Visualization of reconstructed events using Wired4 display
  
-You can find more details in [[https://atlaswww.hep.anl.gov/hepsim/description.php|HepSim manual]].+You can find more details in [[https://atlaswww.hep.anl.gov/hepsim/doc/doku.php|HepSim manual]].
  
  
Line 198: Line 199:
 ======  Reading ROOT files ====== ======  Reading ROOT files ======
  
-Jas4pp natively reads ROOT files including files created using ROOT 6 (ROOT3, 4 and are also supported). For example, one can read ROOT trees/ntuples+Jas4pp natively reads commonly used objects and data structures from [[https://root.cern/ROOT files]]  (versions 3, 4and 6).  
-One can find some examples in the directory "examples/root". Here is a Jython/Python example showing how to read a ROOT tree:+ROOT files can be loaded using the Jas4pp menu [File]-[Open data source]-[Root file] (*.root). 
 + 
 +In addition, one can work with ROOT files using Python/Jython or Groovy scripts.  
 +One can find some examples in the directory "examples/root" Here is a Jython/Python example showing how to read a ROOT tree:
    
 <hidden Show example of a Python code here> <hidden Show example of a Python code here>
Line 308: Line 312:
 You will see the browsers: You will see the browsers:
  
-{{:asc:browser_histograms.png?300|Histogram browser}}+{{:hepsim:browser_histograms.png?300|Histogram browser}}
  
-{{:asc:root_browser.png?300|Object browser}}+{{:hepsim:root_browser.png?300|Object browser}}
  
 The script that call these browsers  can be put into Jython or Groovy files and executed as binary programs. The script that call these browsers  can be put into Jython or Groovy files and executed as binary programs.
  
-Jas4pp does not support ROOT files with complex objects created using ROOT 6i.eTH1DTH2D and TGraph.  Under investigation.+ 
 +To read ROOT files from Delphes simulationsuse  
 +[[https://atlaswww.hep.anl.gov/asc/jas4pp/api/rootio/Delphes.html|Delphes class]] and its "get" methods, 
 +getFloat, getDouble, getInt, and getBoolBut first, explore the Delphes ROOT file using the browser shown above. 
 + 
 +Here is an example that uses high-level classes to read transverse momentum (PT) and pseudorapidity (ETA) of Monte Carlo particles: 
 + 
 +  
 +<hidden Click here to show  a Python code to read Delphes files> 
 +<code python> 
 +from  hep.io.root import RootFileReader 
 +from rootio import * 
 + 
 +reader = RootFileReader("mg5_ttbar_Njet_001.root"
 +tree = reader.get("Delphes"); 
 +maxevents=tree.getEntries() 
 +branches=tree.getBranches() 
 +print "Nr of events=",tree.getEntries() 
 +print "Nr of branches=",branches.size() 
 +print "Branches:" 
 +for l in xrange( branches.size()  ): 
 +   print "Branch=",l," name=",(branches.get(l)).getName() 
 + 
 +particles=tree.getBranch("Particle") # get  generator particles 
 + 
 +ptEvents=Delphes.getFloat(particles,"PT"  # get PT array 
 +etaEvents=Delphes.getFloat(particles,"Eta") # get ETA array 
 + 
 +from jhplot import * 
 +h1 = H1D("PT of particles",100, 0, 100) 
 +h2 = H1D("Eta of particles",100, -4, 4) 
 +for i in xrange(tree.getEntries()): 
 +       pt,eta=ptEvents[i],etaEvents[i] 
 +       for j in xrange(len(pt)): 
 +           h1.fill(pt[j]) 
 +           h2.fill(eta[j]) 
 +c=HPlot("pT",600,300,2,1) 
 +c.visible() 
 +c.setAutoRange() 
 +c.draw(h1) 
 + 
 +c.cd(2,1) 
 +c.setAutoRange() 
 +c.draw(h2) 
 +</code> 
 +</hidden> 
 + 
 +{{:hepsim:pt_eta_delphes.png?300|}} 
 + 
 +<note warning>Reading Delphes trees is an experimental feature. Under study </note>
  
 ====== Using GUI mode ====== ====== Using GUI mode ======