Logo ROOT   6.30.04
Reference Guide
 All Namespaces Files Pages
Deconvolution2_2.C
Go to the documentation of this file.
1 /// \file
2 /// \ingroup tutorial_spectrum
3 /// \notebook
4 /// Example to illustrate the Gold deconvolution (class TSpectrum2).
5 ///
6 /// \macro_image
7 /// \macro_code
8 ///
9 /// \authors Miroslav Morhac, Olivier Couet
10 
11 #include <TSpectrum2.h>
12 
13 void Deconvolution2_2() {
14  Int_t i, j;
15  const Int_t nbinsx = 64;
16  const Int_t nbinsy = 64;
17  Double_t xmin = 0;
18  Double_t xmax = (Double_t)nbinsx;
19  Double_t ymin = 0;
20  Double_t ymax = (Double_t)nbinsy;
21  Double_t** source = new Double_t*[nbinsx];
22  for (i=0;i<nbinsx;i++)
23  source[i]=new Double_t[nbinsy];
24  TString dir = gROOT->GetTutorialDir();
25  TString file = dir+"/spectrum/TSpectrum2.root";
26  TFile *f = new TFile(file.Data());
27  auto decon=(TH2F*) f->Get("decon2");
28  Double_t** response = new Double_t*[nbinsx];
29  for (i=0;i<nbinsx;i++)
30  response[i]=new Double_t[nbinsy];
31  auto resp=(TH2F*) f->Get("resp2");
32  gStyle->SetOptStat(0);
33  auto *s = new TSpectrum2();
34  for (i = 0; i < nbinsx; i++){
35  for (j = 0; j < nbinsy; j++){
36  source[i][j] = decon->GetBinContent(i + 1,j + 1);
37  }
38  }
39  for (i = 0; i < nbinsx; i++){
40  for (j = 0; j < nbinsy; j++){
41  response[i][j] = resp->GetBinContent(i + 1,j + 1);
42  }
43  }
44  s->Deconvolution(source,response,nbinsx,nbinsy,1000,1,1);
45  for (i = 0; i < nbinsx; i++){
46  for (j = 0; j < nbinsy; j++)
47  decon->SetBinContent(i + 1,j + 1, source[i][j]);
48  }
49  decon->Draw("SURF2");
50 }