TH1F Example
This example is from the SVN repository:
import java.util.Random; import hep.physics.vec.*; import org.lcsim.thirdparty.javaROOT.*; public class Test { public static void main(String[] args) { // Load the library try { System.loadLibrary( "javaROOT" ); } catch( UnsatisfiedLinkError javaROOT_linkError ) { System.err.println( "JavaROOT native library failed to load.\n" + javaROOT_linkError + "\n" ); System.exit( -1 ); } // Create a file RootSessionField sess = new RootSessionField( "FromJava.root", "RECREATE", "Test", 1 ); // Create a tree, populate it with branches and set it up for use sess.newTTree( "demoT", "TestTree", 99 ); sess.branchTTreeFloat( "demoT", "fX" ); sess.branchTTreeFloat( "demoT", "fY" ); sess.branchTTreeFloat( "demoT", "fZ" ); sess.branchTTreeInt( "demoT", "iX" ); sess.branchTTreeInt( "demoT", "iY" ); sess.branchTTreeInt( "demoT", "iZ" ); sess.branchTTreeTVector3( "demoT", "vec1" ); sess.setupTTree( "demoT" ); // Create another tree sess.newTTree( "demoU", "AnotherTestTree", 99 ); sess.branchTTreeDouble( "demoU", "dX" ); sess.branchTTreeDouble( "demoU", "dY" ); sess.branchTTreeDouble( "demoU", "dZ" ); sess.branchTTreeBool( "demoU", "bX" ); sess.branchTTreeBool( "demoU", "bY" ); sess.branchTTreeBool( "demoU", "bZ" ); sess.branchTTreeTLorentzVector( "demoU", "lvec1" ); sess.setupTTree( "demoU" ); Random r = new Random( 0 ); vectorFloat fVals; vectorInt iVals; vectorDouble dVals; vectorBool bVals; for( int i = 0; i < 4096; i++ ) { sess.fillBranchFloat( "demoT", "fZ", (float) r.nextGaussian() ); sess.fillBranchFloat( "demoT", "fX", (float) r.nextGaussian() ); sess.fillBranchFloat( "demoT", "fY", (float) r.nextGaussian() ); sess.fillBranchInt( "demoT", "iZ", (int) ( r.nextGaussian() * 1024 ) ); sess.fillBranchInt( "demoT", "iY", (int) ( r.nextGaussian() * 1024 ) ); sess.fillBranchInt( "demoT", "iX", (int) ( r.nextGaussian() * 1024 ) ); BasicHep3Vector t = new BasicHep3Vector( r.nextGaussian(), r.nextGaussian(), r.nextGaussian() ); sess.fillBranchTVector3( "demoT", "vec1", t ); sess.fillBranchDouble( "demoU", "dY", r.nextGaussian() ); sess.fillBranchDouble( "demoU", "dZ", 2 * r.nextGaussian() ); sess.fillBranchDouble( "demoU", "dX", 3 * r.nextGaussian() + 2 ); sess.fillBranchBool( "demoU", "bY", ( r.nextGaussian() > 0 ) ? true : false ); sess.fillBranchBool( "demoU", "bX", ( r.nextGaussian() > 0 ) ? true : false ); sess.fillBranchBool( "demoU", "bZ", ( r.nextGaussian() > 0 ) ? true : false ); BasicHepLorentzVector t2 = new BasicHepLorentzVector( r.nextGaussian(), r.nextGaussian(), r.nextGaussian(), r.nextGaussian() ); sess.fillBranchTLorentzVector( "demoU", "lvec1", t2 ); // Fill the trees. sess.fillTTree( "demoT" ); sess.fillTTree( "demoU" ); } // Make a subdirectory and switch to it. sess.mkdir( "subdir1" ); sess.cd( "subdir1" ); // Create two TH1Fs (inside the new subdirectory) and fill them sess.newTH1F( "demoA", "demoA", 100, 0, 1 ); sess.newTH1F( "demoB", "demoB", 100, 0, 1 ); sess.fillTH1F( "demoA", 0.9 ); sess.fillTH1F( "demoB", 0.3 ); // Save and close the file sess.delete(); } }