KaliVeda  1.13/01
Heavy-Ion Analysis Toolkit
cavata_prescription.h
Go to the documentation of this file.
1 
4 #ifndef __KVIMPACTPARAMETER_H
5 #define __KVIMPACTPARAMETER_H
6 #include "KVBase.h"
7 #include "TH1.h"
8 #include "TString.h"
9 #include "TGraph.h"
10 #include "TF1.h"
11 #include "KVHistoManipulator.h"
12 #include <vector>
13 
14 namespace KVImpactParameters {
45  class cavata_prescription : public KVBase {
55 
56  void make_scale(Int_t npoints);
57 #ifndef WITH_CPP11
58  KVImpactParameter(const KVImpactParameter&) : KVBase() {}; // copying is not possible
59 #endif
60  public:
61 #ifdef WITH_CPP11
62  cavata_prescription(const cavata_prescription&) = delete; // copying is not possible
63 #endif
65  {
66  fData = nullptr;
67  fIPScale = nullptr;
68  fXSecScale = nullptr;
69  fObsTransform = nullptr;
70  fObsTransformXSec = nullptr;
71  Bmax = 1.0;
72  }
78  cavata_prescription(TH1* h, Option_t* evol = "D");
79  virtual ~cavata_prescription();
80 
81  void MakeScale(Int_t npoints = 100, Double_t bmax = 1.0);
82  void MakeAbsoluteScale(Int_t npoints = 100, Double_t bmax = 1.0);
83  TGraph* GetScale() const
84  {
88  return fIPScale;
89  }
91  {
95  return fXSecScale;
96  }
99  TF1* GetTransFunc() const
100  {
102  return fObsTransform;
103  }
105  {
107  return fObsTransformXSec;
108  }
110  {
113  return fObsTransform->Eval(obs);
114  }
116  {
119  return fObsTransformXSec->Eval(obs);
120  }
122  {
125  return fObsTransform->GetX(b);
126  }
128  {
131  return fObsTransformXSec->GetX(sigma);
132  }
133  TH1* GetIPDistribution(TH1* obs, Int_t nbinx = 100, Option_t* norm = "");
134  TGraph* GetIPEvolution(TH2* obscor, TString moment, TString axis = "Y");
135  TH1* GetXSecDistribution(TH1* obs, Int_t nbinx = 100, Option_t* norm = "");
136  TGraph* GetXSecEvolution(TH2* obscor, TString moment, TString axis = "Y");
137 
139  {
143  return 10.*TMath::Pi() * pow(bmax, 2);
144  }
146  {
150  return pow(xsec / 10. / TMath::Pi(), 0.5);
151  }
152  std::vector<Double_t> SliceXSec(Int_t nslices, Double_t totXsec);
153  double GetMeanBForSCA(double bmin, double bmax) const;
154  double GetSigmaBForSCA(double bmin, double bmax) const;
155 
156  ClassDef(cavata_prescription, 2) //Impact parameter analysis tools
157  };
158 }
159 #endif
int Int_t
#define b(i)
double Double_t
const char Option_t
#define ClassDef(name, id)
double pow(double, double)
Base class for KaliVeda framework.
Definition: KVBase.h:141
Toolkit for various operations on histograms & graphs not provided by ROOT.
Impact parameter estimation neglecting using sharp cut-off approximation.
Double_t BTransform(Double_t *, Double_t *)
double GetMeanBForSCA(double bmin, double bmax) const
static Double_t GetIPFromXSec(Double_t xsec)
TGraph * fXSecScale
derived relation between observable and cross-section
TGraph * GetIPEvolution(TH2 *obscor, TString moment, TString axis="Y")
TGraph * fIPScale
derived relation between observable and impact-parameter
std::vector< Double_t > SliceXSec(Int_t nslices, Double_t totXsec)
cavata_prescription(const cavata_prescription &)=delete
TF1 * fObsTransform
function for transforming observable into impact parameter
TGraph * GetXSecEvolution(TH2 *obscor, TString moment, TString axis="Y")
TF1 * fObsTransformXSec
function for transforming observable into cross-section
Double_t XTransform(Double_t *, Double_t *)
KVHistoManipulator HM
for scaling transormations of histograms, graphs, etc.
void MakeScale(Int_t npoints=100, Double_t bmax=1.0)
TH1 * fData
histogram containing distribution of ip-related observable
static Double_t GetXSecFromIP(Double_t bmax)
TString fEvol
how the observable evolves with b
Double_t Smax
maximum of cross-section scale
double GetSigmaBForSCA(double bmin, double bmax) const
TH1 * GetIPDistribution(TH1 *obs, Int_t nbinx=100, Option_t *norm="")
void MakeAbsoluteScale(Int_t npoints=100, Double_t bmax=1.0)
TH1 * GetXSecDistribution(TH1 *obs, Int_t nbinx=100, Option_t *norm="")
virtual Double_t GetX(Double_t y, Double_t xmin=0, Double_t xmax=0, Double_t epsilon=1.E-10, Int_t maxiter=100, Bool_t logx=false) const
virtual Double_t Eval(Double_t x, Double_t y=0, Double_t z=0, Double_t t=0) const
const Double_t sigma
constexpr Double_t Pi()