ROOT logo
#ifndef __CINT__
#include <iostream>
#include <TH1.h>
#include <TH2.h>
#include <TF1.h>
#include <TList.h>
#include <TDirectory.h>
#include <TFile.h>
#include <TCanvas.h>
#include <TPad.h>
#include <THistPainter.h>
#include <TObject.h>
#include <TMath.h>
#include <TFile.h>
#include <TGraphErrors.h>
#include <TLatex.h>
#include <TLine.h>
#include <TMarker.h>
#include <TStyle.h>
#include <TVirtualFitter.h>
#include "/home/caz/ALICE/AliRoot/ANALYSIS/AliUnfolding.h"
#include "/home/caz/ALICE/AliRoot/ANALYSIS/AliUnfolding.cxx"
#include <AliPWG0Helper.h>
// #include <AliMultiplicityCorrection.h>
//#include <TMinuit.h>
#include <TBox.h>
#include <TGaxis.h>
#else
class TF1;
class TH1D;
class TH1F;
class TGraphErrors;
class TGaxis;
// class AliUnfolding;
#endif
using namespace std;


void UnfoldChi2Min(TH1F*   data, 
		   TH1F*&  unfolded, 
		   TH2D*   response=0 ,
		   TH1F*   eff =0,
		   Int_t   regularization=1,
		   Float_t   regularizationWeight=1000,
		   Float_t minInitialValue=0.0001, 
		   Bool_t  skipBin0InChi2= kFALSE,
		   Int_t   skipNbins=0 ){
#ifdef __CINT__
  gSystem->Load("libANALYSIS");
  gSystem->Load("libANALYSISalice");
  gSystem->Load("libPWG0base");
  gSystem->Load("libPWG0dep");
  gSystem->Load("libPWG0selectors");
#endif

  cout << data << "  " << unfolded << endl;
  
  AliUnfolding::RegularizationType type = AliUnfolding::kNone;
  switch (regularization) {
  case 0: type = AliUnfolding::kNone; break; 
  case 1: type = AliUnfolding::kPol0; break; 
  case 2: type = AliUnfolding::kPol1; break; 
  case 3: type = AliUnfolding::kLog; break; 
  case 4: type = AliUnfolding::kEntropy; break; 
  case 5: type = AliUnfolding::kCurvature; break; 
  case 6: type = AliUnfolding::kRatio; break; 
  };

  AliUnfolding::SetUnfoldingMethod(AliUnfolding::kChi2Minimization);
  AliUnfolding::SetNbins(data->GetNbinsX(), unfolded->GetNbinsX()); 
  AliUnfolding::SetMinimumInitialValue(kTRUE, minInitialValue);
  AliUnfolding::SetSkip0BinInChi2(skipBin0InChi2);
  AliUnfolding::SetSkipBinsBegin(skipNbins);
  AliUnfolding::SetChi2Regularization(type, regularizationWeight);
  //AliUnfolding::SetCreateOverflowBin(1e-6);
    
  AliUnfolding::Unfold(response, eff, data, data, unfolded, kFALSE);
 
 
}
 unfoldChi2Method.C:1
 unfoldChi2Method.C:2
 unfoldChi2Method.C:3
 unfoldChi2Method.C:4
 unfoldChi2Method.C:5
 unfoldChi2Method.C:6
 unfoldChi2Method.C:7
 unfoldChi2Method.C:8
 unfoldChi2Method.C:9
 unfoldChi2Method.C:10
 unfoldChi2Method.C:11
 unfoldChi2Method.C:12
 unfoldChi2Method.C:13
 unfoldChi2Method.C:14
 unfoldChi2Method.C:15
 unfoldChi2Method.C:16
 unfoldChi2Method.C:17
 unfoldChi2Method.C:18
 unfoldChi2Method.C:19
 unfoldChi2Method.C:20
 unfoldChi2Method.C:21
 unfoldChi2Method.C:22
 unfoldChi2Method.C:23
 unfoldChi2Method.C:24
 unfoldChi2Method.C:25
 unfoldChi2Method.C:26
 unfoldChi2Method.C:27
 unfoldChi2Method.C:28
 unfoldChi2Method.C:29
 unfoldChi2Method.C:30
 unfoldChi2Method.C:31
 unfoldChi2Method.C:32
 unfoldChi2Method.C:33
 unfoldChi2Method.C:34
 unfoldChi2Method.C:35
 unfoldChi2Method.C:36
 unfoldChi2Method.C:37
 unfoldChi2Method.C:38
 unfoldChi2Method.C:39
 unfoldChi2Method.C:40
 unfoldChi2Method.C:41
 unfoldChi2Method.C:42
 unfoldChi2Method.C:43
 unfoldChi2Method.C:44
 unfoldChi2Method.C:45
 unfoldChi2Method.C:46
 unfoldChi2Method.C:47
 unfoldChi2Method.C:48
 unfoldChi2Method.C:49
 unfoldChi2Method.C:50
 unfoldChi2Method.C:51
 unfoldChi2Method.C:52
 unfoldChi2Method.C:53
 unfoldChi2Method.C:54
 unfoldChi2Method.C:55
 unfoldChi2Method.C:56
 unfoldChi2Method.C:57
 unfoldChi2Method.C:58
 unfoldChi2Method.C:59
 unfoldChi2Method.C:60
 unfoldChi2Method.C:61
 unfoldChi2Method.C:62
 unfoldChi2Method.C:63
 unfoldChi2Method.C:64
 unfoldChi2Method.C:65
 unfoldChi2Method.C:66
 unfoldChi2Method.C:67
 unfoldChi2Method.C:68
 unfoldChi2Method.C:69
 unfoldChi2Method.C:70
 unfoldChi2Method.C:71
 unfoldChi2Method.C:72
 unfoldChi2Method.C:73
 unfoldChi2Method.C:74
 unfoldChi2Method.C:75
 unfoldChi2Method.C:76
 unfoldChi2Method.C:77
 unfoldChi2Method.C:78
 unfoldChi2Method.C:79
 unfoldChi2Method.C:80
 unfoldChi2Method.C:81