THIS PAGE IS UNDER CONSTRUCTION
AIDA for Power Users
...
Comparing two datasets in the same plot is a very convenient feature in AIDA. However, those two datasets may not always have the same scale, or even the same units. JAS3 lets you add a secondary Y Axis, which can be scaled independently of the primary one. Just select the Data tab in the Plot Properties
dialog. For each data set listed on the left-hand side, you can select which axis to associate it with by selecting either Y0 for the primary Y Axis on the left-hand side of the plot, or Y1 for the secondary Y Axis on the right-hand side of the plot. The properties of each axis, like range and label can be changed in the Y Axis tab.
You can also do it in a program:
Code Block |
---|
import hep.aida.*; import java.util.Random; public class SecondAxis { public static void main(String[] argv) { IAnalysisFactory af = IAnalysisFactory.create(); ITree tree = af.createTreeFactory().create(); IHistogramFactory hf = af.createHistogramFactory(tree); IHistogram1D h1 = hf.createHistogram1D("h1",100,-6,4); IHistogram1D h2 = hf.createHistogram1D("h2",100,-4,6); Random r = new Random(); for ( int i = 0; i<1000; i++ ) { h1.fill(r.nextGaussian()-1.); h2.fill(r.nextGaussian()+1.); h2.fill(r.nextGaussian()+1.); } IPlotterFactory plotterFactory = af.createPlotterFactory(); IPlotter plotter = plotterFactory.create("Styles.java plot"); // Change the default styles for the region to hide // legend and statistics IPlotterStyle regionStyle = plotter.region(0).style(); regionStyle.legendBoxStyle().setVisible(false); regionStyle.statisticsBoxStyle().setVisible(false); // >>>>> This style overwrites default "Y0" position of y axis // IPlotterStyle style = plotterFactory.createPlotterStyle(); style.yAxisStyle().setParameter("yAxis", "Y1"); // // >>>>> plotter.region(0).plot(h1); plotter.region(0).plot(h2, style); plotter.show(); } } |
Changing Layout/Style/Properties with a Script
...
Code Block |
---|
from hep.aida import IFunction from org.lcsim.util.aida import AIDATutorialAIDA import math class MyFunc(IFunction): def __init__(self, track): self.title = "My Own Function" return def providesGradient(self): return false # This Function returns the value f(x) # x can be multi-dimensional def value(self, x): y = x[0] + math.exp(x[1]) + x[0]*x[1] externalValue = AIDATutorial.someExternalFunction(y, x) return externalValue-y # This tells AIDA the dimension of the function def dimension(self): return 2 def annotation(self): ann = IAnnotation() ann.addItem('Title', self.title) return ann |
Tuples
Flat Tuples
Nested Tuples
Code Block |
---|
## AIDATutorial.py # this is a comment # this is a function def someExternalFunction(y, x): return 2*y+3*x[0] def main(): tree = aidaMasterTree aida = AIDA.defaultInstance() funcFac = aida.analysisFactory().createFunctionFactory(tree) |
Code Block |
---|