This commit is contained in:
David Baranyai 2017-10-31 15:18:45 +01:00
commit 7174755a0b
3 changed files with 145 additions and 0 deletions

View File

@ -2,6 +2,7 @@
#include "BM1DProcess.hh"
#include "Plotter.hh"
#include "TApplication.h"
#include "Analyse.hh"
using namespace std;
@ -71,6 +72,13 @@ int main(int argc, char* argv[])
Plotter* myPlotter = new Plotter(vis==1);
myPlotter->Plot(nRuns, nSteps, myBM1DProcess->GetT(), myBM1DProcess->GetX());
Analyse *myAnalyse = new Analyse();
switch(random_type){
case 'g' :
myAnalyse->AnalyseGaus(myBM1DProcess->GetT(),myBM1DProcess->GetX());
}
App.Run();
return 0;

34
include/Analyse.hh Normal file
View File

@ -0,0 +1,34 @@
#ifndef Analyse_h
#define Analyse_h 1
#include <iostream>
#include <string>
#include <fstream>
#include <cmath>
#include <limits>
#include "TH1.h"
#include "TF1.h"
#include "TMath.h"
class Analyse{
public:
Analyse();
~Analyse();
Double_t GetP0();
Double_t GetMu();
Double_t GetSigma();
void AnalyseGaus(std::vector<Double_t> t, std::vector<Double_t> x);
private:
Double_t _p0;
Double_t _mu;
Double_t _sigma;
};
#endif

103
src/Analyse.cc Normal file
View File

@ -0,0 +1,103 @@
#include "Analyse.hh"
Analyse::Analyse() : _p0(0), _mu(0), _sigma(0) {}
Analyse::~Analyse() {;}
Double_t Analyse::GetP0() {
return _p0;
}
Double_t Analyse::GetMu(){
return _mu;
}
Double_t Analyse::GetSigma(){
return _sigma;
}
void Analyse::AnalyseGaus(std::vector<Double_t> t, std::vector<Double_t> x){
Double_t dx = 0.0;
Double_t q = 10000;
Double_t max = std::numeric_limits<int>::min();
Double_t min = std::numeric_limits<int>::max();
for (int i = 1; i < t.size(); i++) dx += TMath::Abs(x[i]-x[i-1]);
dx/=t.size();
dx/=q;
for (int i = 1; i < t.size(); i++){
if(TMath::Abs(x[i]-x[i-1]) < dx) _p0 += 1.0;
}
//std::cout << "t.size " << t.size() << std::endl;
_p0 /= (Double_t)t.size();
//std::cout << "p0 = " << _p0 << std::endl;
std::vector<Double_t> deltax;
deltax.push_back(x[0]);
for (int i = 1; i < t.size(); i++) {
if(TMath::Abs(x[i]-x[i-1]) > dx){
deltax.push_back(x[i]-x[i-1]);
}
//std::cout << deltax[i-1] << std::endl;
}
for (int i = 0; i < deltax.size(); i++){
Double_t loc_dx = deltax[i];
max = (loc_dx > max) ? loc_dx : max;
min = (loc_dx < min) ? loc_dx : min;
}
Int_t nbin = (max-min)/0.1;
//std::cout << nbin << std::endl;
TH1D* dxhisto = new TH1D("dxhisto","dxhisto", nbin, min+0.1*min,max+0.1*max);
for (int i = 0; i < deltax.size(); i++) dxhisto->Fill(deltax[i]);
dxhisto->Fit("gaus");
dxhisto->Draw();
//std::cout << dxhisto->GetFunction("gaus")->GetParameter(1) <<std::endl;
_mu = dxhisto->GetFunction("gaus")->GetParameter(1);
_sigma = dxhisto->GetFunction("gaus")->GetParameter(2);
std::cout << "p0 = " << _p0 << std::endl;
std::cout << "mu = " << _mu << std::endl;
std::cout << "sigma = " << _sigma << std::endl;
}