#include <iostream>
#include <math.h>
#include "TSystem.h"
#include "TMath.h"
Include dependency graph for NIMmodel.h:
This graph shows which files directly or indirectly include this file:
Go to the source code of this file.
Functions | |
double | poisson (double u, int n) |
double | gn (double x, double n, double q0, double sigma0, double q1, double sigma1) |
double | NIMmodel (double *xpar, double *par) |
double poisson | ( | double | u, | |
int | n | |||
) |
double gn | ( | double | x, | |
double | n, | |||
double | q0, | |||
double | sigma0, | |||
double | q1, | |||
double | sigma1 | |||
) |
Definition at line 20 of file NIMmodel.h.
00021 { 00022 double sigman = sqrt(sigma0*sigma0+n*sigma1*sigma1); 00023 double xn = x-q0-n*q1; 00024 double tmp = pow(xn,2)/(2*sigman*sigman); 00025 return exp(-tmp)/(sigman*sqrt(2*TMath::Pi())); 00026 }
double NIMmodel | ( | double * | xpar, | |
double * | par | |||
) |
Definition at line 28 of file NIMmodel.h.
00028 { 00029 double x = xpar[0]; 00030 double norm = par[0]; 00031 double q0 = par[1]; 00032 double sigma0 = par[2]; 00033 double q1 = par[3]; 00034 double sigma1 = par[4]; 00035 double w = par[5]; 00036 double a = par[6]; 00037 double u = par[7]; 00038 int nmin = 1; 00039 int nmax = 6; 00040 00041 double total = 0; 00042 for(int i=nmin; i<nmax; i++){ 00043 int n = i; 00044 double tmp = poisson(u,n); 00045 double tmp2 = gn(x,n,q0,sigma0,q1,sigma1); 00046 double qn = q0+n*q1; 00047 double sigman = sqrt(sigma0*sigma0+n*sigma1*sigma1); 00048 00049 double tmp3 = exp(-a*(x-qn-a*sigman*sigman/2.))*a/2.; 00050 double tmp4 = TMath::Erf(fabs(q0-qn-a*sigman*sigman)/(sigman*sqrt(2.))); 00051 double sign = 1.0; 00052 if((x-qn-sigman*sigman*a)<0) sign = -1.0; 00053 tmp4 += sign*TMath::Erf(fabs(x-qn-sigman*sigman*a)/(sigman*sqrt(2.))); 00054 tmp3 *= tmp4; 00055 00056 double result = tmp*((1-w)*tmp2+w*tmp3); 00057 total += result; 00058 } 00059 return total*norm; 00060 }