Fitting in aida
This presentation is the property of its rightful owner.
Sponsored Links
1 / 21

Fitting in AIDA PowerPoint PPT Presentation


  • 47 Views
  • Uploaded on
  • Presentation posted in: General

Fitting in AIDA. General Concepts Requirements JAIDA Examples Interfaces Overview Conclusions. General Concepts. The main players: Data Set the actual data, i.e. an Histogram Model or Function a set of parametric shapes to describe the data Fitter

Download Presentation

Fitting in AIDA

An Image/Link below is provided (as is) to download presentation

Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author.While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server.


- - - - - - - - - - - - - - - - - - - - - - - - - - E N D - - - - - - - - - - - - - - - - - - - - - - - - - -

Presentation Transcript


Fitting in aida

Fitting in AIDA

  • General Concepts

  • Requirements

  • JAIDA

  • Examples

  • Interfaces Overview

  • Conclusions


General concepts

General Concepts

  • The main players:

    • Data Set

      • the actual data, i.e. an Histogram

    • Model or Function

      • a set of parametric shapes to describe the data

    • Fitter

      • the engine that finds the best fit between the data and the model by changing a set of paramters

    • Fit Method

      • the method used by the fitter to evaluate the “best fit”, i.e. Chi2, Least Squares etc.

    • Fit Result

      • the actual result of a fit

        • new set of parameters

        • covariance matrix

        • contours

        • scans

    • Optimizer

      • the engine that calculates the minimum (or maximum) of the problem


General concepts optimizing

User

General Concepts Optimizing

Optimizer

Model/Function

Result


General concepts fitting

Fit Method

Data Set

Model/Function

User

General Concepts Fitting

Optimizer

Fitter

Fit Result


Requirements

Requirements

  • Easy to use and configure

    • change fit method

    • change data set

    • change model

  • Easy access to pool of optimizers

    • Minuit is a must, but not the only product. Many optimizers are available.

  • Accept user-provided custom functions

  • Straightforward way to build complicated models

    • Add, multiply and convolute (analytically when possible)


Requirements1

Requirements

  • Same interface for binned and unbinned fits

    • binned fit to histogram

    • unbinned fit to a tuple

  • Similar interfaces for fitting and optimization

  • Multiple fit methods supported

    • least squares

    • chi2

    • …user defined (advanced)

  • Support for simultaneous fits

    • fits over different data sets


Jaida

JAIDA

  • JAIDA is our Java implementation of AIDA

    • http://java.freehep.org/jaida/index.html

  • Fitting implementation:

    • fit methods

      • least squares

        • “leastsquares”, “ls”

      • chi2

        • “chi2”, “chisquared”

      • clever chi2

        • “cleverchi2”, cleverchisquared”

      • binned maximum likelihood

        • “bml”, “binnedmaxlikelihood”, binnedmaximumlikelihood”

      • unbinned maximum likelihood

        • “uml”, “unbinnedmaxlikelihood”, “unbinnedmaximumlikelihood”

    • engines

      • Minuit

      • Uncmin (pure java code)


Jaida1

JAIDA

  • built-in functions

    • gaussian “g”

      • “amplitude”, “mean”, “sigma”

    • exponential “e”

      • “amplitude”, “exponent”

    • polynomials “p0”,”p1”,…

      • “p1”,”p2”…

  • Clear distinction between optimization and error analysis

    • easy to adopt new optimizers

  • The examples below are based on JAIDA

    • other implementations might have different fit methods or optimizers.


  • Examples binned fit to an ihistogram

    Examples Binned fit to an IHistogram

    //Create the factories

    IFitter fitter = af.createFitFactory().createFitter();

    //Perform the fit

    IFitResult result = fitter.fit(hist,”g”);

    //Plot the result

    IPlotter p = af.createPlotterFactory().create();

    p.region(0).plot(hist);

    p.region(0).plot(result.fittedFunction());

    p.show()


    Examples binned fit to a 2d histogram

    Examples Binned fit to a 2D Histogram

    //Create the factories

    IFunctionfactory funcFactory = af.createFunctionFactory( tree );

    IFitter fitter = af.createFitFactory().createFitter("chi2","minuit");

    //Create a scripted function, a sum of two gaussians

    IFunction func = funcFactory.createFunctionFromScript("twoDdistr",2,"N*(a*exp( -(x[0]-mu0)*(x[0]-mu0)/(2*s0*s0) )+(1-a)*exp( -(x[0]-mu1)*(x[0]-mu1)/(2*s1*s1) ))*exp( -(x[1]-mu2)*(x[1]-mu2)/(2*s2*s2) )","N,a,mu0,s0,mu1,s1,mu2,s2","",null);

    //Set the initial parameters

    double[] initialPars = { 1, 0.8, 5, 1, 5, 2, 0, 1};

    func.setParameters( initialPars );

    //Control the parameters and set constraints

    fitter.fitParameterSettings("mu2").setFixed(true);

    fitter.fitParameterSettings("a").setBounds(0.5,0.9);

    fitter.fitParameterSettings("a").setStepSize(0.001);

    fitter.fitParameterSettings("s1").setBounds(2,4);

    fitter.fitParameterSettings("s1").setStepSize(0.1);

    fitter.setConstraint("s0 = s2");

    fitter.setConstraint("mu0 = mu1");

    //Perform the fit

    IFitResult fitResult = fitter.fit(hist2d,func);


    Examples unbinned fit

    Examples Unbinned Fit

    //Create the factories

    IFunctionfactory funcFactory = af.createFunctionFactory( tree );

    IFitFactory fitf = af.createFitFactory();

    IFitter fitter = fitf.createFitter(“uml",“uncmin");

    IFitData data = fitf.createFitData();

    ITupleFactory tupf = af.createTupleFactory(tree);

    //Create a function, control the parameters, set bounds and constraints…

    //…

    //Get and ITuple and create an IEvaluator for its columns

    ITuple tuple = (ITuple) tree.find(“myTuple”);

    IEvaluator eval = tupf.createEvaluator(“sqrt(px*px + py*py)”);

    //Connect the data set to the ITuple through the IEvaluator

    data.createConnection(tuple, eval);

    //Perform the fit

    IFitResult fitResult = fitter.fit(data,func);


    Interfaces overview the factories

    Interfaces Overview The factories

    • From IAnalysisFactory

      • IFitFactory createFitFactory()

      • IFunctionFactory createFunctionFactory(ITree)

    • IFitFactory creates

      • fitters

      • data sets (for advanced data handling)

        • e.g. select columns from tuple

    • IFunctionFactory creates

      • functions


    Interfaces overview ifitfactory

    Interfaces Overview IFitFactory

    • Methods

      • IFitData createFitData()

      • IFitter createFitter(fitMethod,engine)

    • Through IFitData connections to all the AIDA data objects are established

    • IFitter is the main fitting engine


    Interfaces overview ifunctionfactory

    Interfaces Overview IFunctionFactory

    • IFunction creatFunctionByName(name,model)

    • IFunction createFunctionFromScript(……)

    • IFunction cloneFunction(name, function)

    • IFunctionCatalog catalog()

    • “byName” are built-in functions

    • “fromScript” are scripted functions

    • user-defined functions

      • e.g. define “Gauss+Gauss+Pol1+…” to be “myFavoriteFunc”

    • …that can be added to a function catalog for future use


    Interfaces overview ifitter

    Interfaces Overview IFitter

    • Do the fit

      • IFitResult fit(“data”,”model”,”pars”)

      • IDataPointSet createContour(IFitData, IFitResult…..)

      • IDataPointSet createScan1D(IFitData, IFunction…)

    • Configure the fitter

      • void setFitMethod(String)

      • String fitMethodName()

      • void setEngine(String)

      • String engineName()

      • void setUseFunctionGradient(boolean)

      • boolean userFunctionGradient()

    • Control the parameters in the fit

      • IFitParameterSetting fitParameterSettings(String)

      • String[] listParameterSettings()

      • void resetParameterSettings()


    Interfaces overview ifitter1

    Interfaces Overview IFitter

    • Constraints

      • void setConstraint(String)

      • String[] constraints()

      • void resetConstraints()

    • The fitter does not change the function; the fitted parameters are in the IFitResult


    Interfaces overview ifitresult

    Interfaces Overview IFitResult

    • Fit outcome

      • int fitStatus()

      • int ndf()

      • double quality()

    • Fit info

      • String fitMethodName()

      • String engineName()

      • String dataDescription()

      • String[] constraints()

    • Fitted function

      • IFunction fittedFunction()

      • String[] fittedParameterNames()

      • double fittedParameter(String)

      • double fittedParameters()

      • IFitParameterSettings fitParameterSettings(String)

    • Errors

      • double covMatrixElement(int,int)

      • double[] errors()

      • double[] errorsMinus()

      • double[] errorsPlus()


    Interfaces overview ifitdata

    Interfaces Overview IFitData

    • Connect the data

      • create1DConnection(…)

      • create2DConnection(…)

      • create3DConnection(…)

      • createConnection(…)

    • Ranges

      • IRangeSet range(int)

    • Utils

      • String dataDescription()

      • int dimension()

      • reset()


    Interfaces overview ifunction

    Interfaces Overview IFunction

    • General

      • double value(double[])

      • double[] gradient(double[] x)

      • int dimension()

      • int numberOfParameters()

      • boolean providesGradient()

    • Variables

      • String variableName(int)

      • String[] variableNames()

    • Parameters

      • String[] parameterNames()

      • double[] parameters()

      • double parameter(String)

      • int indexOfParameter(String)

      • void setParameter(String,double)

      • void setParameters(double[])


    Interfaces overview ifitparametersettings

    Interfaces Overview IFitParameterSettings

    • Control a parameter

      • Bounds

        • double lowerBound()

        • void setLowerBound(double)

        • double upperBound()

        • void setUpperBound()

        • boolean isBound()

        • void setBounds(double, double)

        • void removeBounds()

      • Step

        • void setStepSize(double)

        • double stepSize()

      • Fix

        • boolean isFixed()

        • void setFixed(boolean)

      • Other

        • void reset()

        • String name()


    Conclusions

    Conclusions

    • AIDA has a complete set of interfaces for fitting

    • flexible interfaces

      • room for improvements

    • JAIDA future:

      • Extend the pool of optimizers

      • Implement more built-in functions

      • Allow model-building


  • Login