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

Compare with Current View Page History

« Previous Version 5 Next »

AIDA for Power Users

Introduction

This covers advanced topics in JAS3 and AIDA. The examples in this section are mostly written in the Python language. It's syntax is simpler and less strict than Java, yet very clear. If you do not feel comfortable learning yet another language, please visit the exellent, if slightly dated AIDA documentation. However, please feel encouraged to take a look at the examples. They should all run out of the box (if not, please don't feel discouraged – file a bug report), so that you should still be able to get something out of them.
For this section, you will want to take a look at
PAIDA and AIDA API

Secondary Y Axis

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.

Changing Layout/Style/Properties with a Script

While it is convenient to be able to manipulate your data with the mouse, in many cases you will want to apply the same modifications to a set of similar data, or perform more complicated modifications that are quite possible to do with AIDA, but not (yet) implemented in JAS3. This is where a script comes in handy

Advanced Manipulations of Histograms

Adding and subtracting histograms

Fitting

Using predefined functions

Writing your own function

Oftentimes you will have to perform more complicated computations than can be put in a string. Use this template to

from hep.aida import IFunction
import AIDATutorial
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

## AIDATutorial.py

# this is a comment

# this is a function
def someExternalFunction(y, x):
    return y+x[0]
  • No labels