Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.
Comment: Migration of unmigrated content due to installation of a new plugin

(warning) 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

Tuples

Flat Tuples

Nested Tuples