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 |
Code Block |
---|
h2. Tuples
h3. Flat Tuples
h3. Nested Tuples
|
- AIDATutorial.py
- this is a comment
...
def someExternalFunction(y, x): |
...
return 2*y+3*x[0] def main(): tree = aidaMasterTree aida = AIDA.defaultInstance() funcFac = aida.analysisFactory().createFunctionFactory(tree) |
Code Block |
---|