Hello,
I would like to know how can I plot a 2D histogram, where I plot different Gaussian for corresponding center x and center y and sigma x and sigma y.
I started defining the code as follow:
[code]TH2F *h2 = new TH2F(“h2”,“distribution”, 50,0,25,50,0,25);
for (Float_t centre_x=2.7; centre_x<12.8; centre_x+=1.0) {
for (Float_t centre_y=2.7; centre_y<12.8; centre_y+=1.0) {
TF2 *f2 = new TF2("f2","TMath::Gaus(1,centre_x,[1])*TMath::Gaus(1,centre_y,[1])",0,25,0,25);
// code to follow the for loop
f2->SetParameter(1,h6->GetRMS());
h2->Fill(f2);
h2->Draw();
[/code]
but I am arriving no where. Can you please help me to plot it.
I am writing the whole code also, in case I am not clear…
[code] TH2F *relation = new TH2F(“relation”,“intrinsic spatial resolution”, 50,0,25,50,0,25);
for (Float_t centre_x=2.7; centre_x<12.8; centre_x+=1.0) {
for (Float_t centre_y=2.7; centre_y<12.8; centre_y+=1.0) {
TF2 *rel = new TF2(“rel”,“TMath::Gaus(1,centre_x,[1])*TMath::Gaus(1,centre_y,[1])”,0,25,0,25);
TH1F *h6 = new TH1F("h6", "dist", 200, 4, 20);
for (Int_t i=0; i<10; i++){ TF1 f1("f1","gaus",0,30000); f1->SetParameters(1,16000,545);
Float_t bin0 = (f1->GetRandom())*0.3;
TF1 *f7 = new TF1("f7", "TMath::Poisson(x,[5])",0,10000);
f7->SetParameter(5,bin0);
const Int_t Nx = 15;
Double_t edgesx[(Nx + 1)] = {0, 3, 3.2, 6.2, 6.4, 9.4, 9.6, 12.6, 12.8, 15.8, 16, 19, 19.2, 22.2, 22.4, 25.4};
const Int_t Ny = 15;
Double_t edgesy[(Ny + 1)] = {0, 3, 3.2, 6.2, 6.4, 9.4, 9.6, 12.6, 12.8, 15.8, 16, 19, 19.2, 22.2, 22.4, 25.4};
TH2F *h2 = new TH2F("h2","h",Nx,edgesx,Ny,edgesy); //Canvas to see the 2D distribution of optical photons over SiPM matrix
TF2 *f2 = new TF2("f2","xygaus",0,20,0,20);
f2->SetParameters(1, centre_x, 3, centre_y, 3); //amplitude, meanx,sigmax,meany,sigmay
h2->FillRandom("f2",f7->GetRandom());
TF1 *f5 = new TF1("f5", "TMath::Poisson(x, [0])", 0, 10000);
f5->SetParameter(0, 1);
TH2F *h5 = new TH2F("h5", "d=0.8 and t=0.4mm", Nx, edgesx, Ny, edgesy);
for (Int_t ix = 1; ix <= h5->GetNbinsX(); ix+=2) {
for (Int_t iy = 1; iy <= h5->GetNbinsY(); iy+=2) {
Double_t par = 0.30 * h2->GetBinContent(ix, iy);
if (par > 0.0) {
f5->SetParameter(0, par);
h5->SetBinContent(ix, iy, f5->GetRandom());
} else {
// h5->SetBinContent(ix, iy, 0.0);
}
}
}
h6->Fill(h5->GetMean()); delete h5; delete h2;
}
rel->SetParameter(1,h6->GetRMS());
relation->Fill(rel);
}
}
relation->Draw();
[/code]
Thank you.
Regards,
Kajal