I know that the code is very simple…
[code]#include <TFile.h>
#include
#include <TMath.h>
#include <TF2.h>
#include <TCanvas.h>
#include <TH2D.h>
#include <TString.h>
#include <string.h>
#include
using namespace std;
double BinormalDistribution(double mu1, double sigma1, double mu2, double sigma2, double ro, double x1, double x2)
{
return 1/(2TMath::Pi()sigma1sigma2TMath::Sqrt(1-TMath::Power(ro,2)))TMath::Exp( -(TMath::Power(x1-mu1,2)/TMath::Power(sigma1,2)- 2ro*(x1-mu1)(x2-mu2)/(sigma1sigma2) + TMath::Power(x2-mu2,2)/TMath::Power(sigma2,2) ));
}
std::string ToString(double& value)
{
std::stringstream sstr;
sstr << value;
return sstr.str();
}
void result(){
TFile *f = TFile::Open(“Noemi_Binormal_Distribution.root”,“RECREATE”);
const unsigned int numhisto = 9;
int NbinX = 100;
float minX = -10.0;
float maxX = 10.0;
int NbinY = 100;
float minY = -10.0;
float maxY = 10.0;
vector<TH2D*> histo;
double mu1 = 0;
double mu2 = 0;
double sigma1 = 2;
double sigma2 = 2;
double ro = 0.8;
TRandom3 x(0);
unsigned int n = 10000;
for( unsigned int k = 0; k < numhisto; k++)
{
string titolo = “Istogramma_”;
titolo+=TString::Itoa(k+1,10).Data();
titolo+=“ro = “;
titolo+= ToString(ro);
titolo+=”; A.U.; A.U.; Eventi";
string nome = "Istogramma”;
nome+=TString::Itoa(k+1,10).Data();
histo.push_back( new TH2D(nome.c_str(), titolo.c_str(), NbinX, minX, maxX, NbinY, minY, maxY) );
for(int i = 0; i < n; i++){
double x1 = x.Uniform( minX, maxX);
double x2 = x.Uniform( minY, maxY);
histo.at(k) -> Fill( x1, x2, BinormalDistribution(mu1, sigma1, mu2, sigma2, ro, x1, x2));
}
ro-=0.2;
}
f->Write();
f->Close();
}[/code]
The error message is:
*** Break *** segmentation violation
Generating stack trace...
0x00007f9be9673c8b in G__exec_asm + 0x4d2b from /usr/lib/root/libCint.so.5.34
0x00007f9be9541060 in <unknown> from /usr/lib/root/libCint.so.5.34
0x00007f9be953c245 in G__exec_statement + 0x95c5 from /usr/lib/root/libCint.so.5.34
0x00007f9be95a0f99 in G__interpret_func + 0x2989 from /usr/lib/root/libCint.so.5.34
0x00007f9be95250a1 in G__getfunction + 0x1901 from /usr/lib/root/libCint.so.5.34
0x00007f9be960e272 in G__getitem + 0x842 from /usr/lib/root/libCint.so.5.34
0x00007f9be9614248 in G__getexpr + 0x4f18 from /usr/lib/root/libCint.so.5.34
0x00007f9be9538f77 in G__exec_statement + 0x62f7 from /usr/lib/root/libCint.so.5.34
0x00007f9be9644aa4 in <unknown> from /usr/lib/root/libCint.so.5.34
0x00007f9be964604e in G__exec_tempfile_fp + 0xe from /usr/lib/root/libCint.so.5.34
0x00007f9be966688b in G__process_cmd + 0x128b from /usr/lib/root/libCint.so.5.34
0x00007f9beb416101 in TCint::ProcessLine(char const*, TInterpreter::EErrorCode*) + 0x451 from /usr/lib/root/libCore.so.5.34
0x00007f9beb3e7da2 in TApplication::ProcessLine(char const*, bool, int*) + 0x362 from /usr/lib/root/libCore.so.5.34
0x00007f9beafdd479 in TRint::HandleTermInput() + 0x219 from /usr/lib/root/libRint.so.5.34
0x00007f9beb4447ed in TUnixSystem::CheckDescriptors() + 0x14d from /usr/lib/root/libCore.so.5.34
0x00007f9beb445f88 in TUnixSystem::DispatchOneEvent(bool) + 0xc8 from /usr/lib/root/libCore.so.5.34
0x00007f9beb3d7d86 in TSystem::InnerLoop() + 0x16 from /usr/lib/root/libCore.so.5.34
0x00007f9beb3d9964 in TSystem::Run() + 0x74 from /usr/lib/root/libCore.so.5.34
0x00007f9beb3e60ff in TApplication::Run(bool) + 0x1f from /usr/lib/root/libCore.so.5.34
0x00007f9beafde157 in TRint::Run(bool) + 0x527 from /usr/lib/root/libRint.so.5.34
0x0000000000400fcc in main + 0x4c from /usr/bin/root.exe
0x00007f9bea506725 in __libc_start_main + 0xf5 from /usr/lib/libc.so.6
0x000000000040103d in <unknown> from /usr/bin/root.exe
Root > Function result() busy flag cleared