You are viewing an old version of this page. View the current version.

Compare with Current View Page History

« Previous Version 2 Next »

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();
	}
}

  • No labels