import hep.aida.*;
import hep.aida.ref.function.*;

import java.util.Random;
public class RuskaRuleta {
  public double tau=0.1;  //defaultova hodnota strednej doby zivota
  public Random r;

  public RuskaRuleta(Random r){
    this.r = r;
  }

  public boolean isHit(double dt){
    //sem doplnte test ci v kratkom case dt nastala zrazka
    if ????????????????????? return true;
    else return false;
  }

  public double getHitTime(){
    //tu sa rata, kedy nastane prvy zasah

    double dt=0.001; // toto je akoze ifininitezimalna doba
    double t=0;
    
    while(!isHit(dt)){
      t=t+dt;
    }
    
    //vyskocilo to z cyklu while, teda bol zasah
    return t;
  }
  public static void main(String[] args) {
    Killer.createKiller();
    RuskaRuleta rr = new RuskaRuleta(new Random(1234));

    //standardne riadky otvarajuce kniznicu JAIDA
    IAnalysisFactory af = IAnalysisFactory.create();
    IHistogramFactory hf = af.createHistogramFactory(null);



    //????????????????????????????????????????????????
    //tu  otvorte histogram s vhodne zadanymi parametrami a naplnte ho 1000
    //hodnotami zrazkoveho casu




    //definovanie fitovacej funkcie 1 premennej s dvoma fitovacimi parametrami
    IFunction f = new AbstractIFunction("exp", 1, 2) {
            public double value(double[] v)
               { return p[0]*
                      Math.exp(- v[0]/p[1]); }
      };

    f.setParameters(new double[] {1000.,0.1} ); //nastavenie pociatocnych hodnot parametrov

    //standardne dva riadky otvarajuce fitovaci kombajn
    IFitFactory fitFactory = af.createFitFactory();
    IFitter fitter = fitFactory.createFitter("chi2","jminuit","noClone=\"true\"");

    IFitResult result = fitter.fit(h,f);   //tu je spustenie fitovacieho kombajnu a vysledok


    IPlotterFactory pf = af.createPlotterFactory(); //otvorenie plotovacej fabriky
    IPlotter plotter = pf.create();
    plotter.currentRegion().plot(h);
    plotter.currentRegion().plot(result.fittedFunction());//nakresli vysledok fitu

    plotter.show(); //vsetko zobrazi
  }
}
