KaliVeda
Toolkit for HIC analysis
cavata_prescription.h
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 {
46  class cavata_prescription : public KVBase {
56 
57  void make_scale(Int_t npoints);
58 #ifndef WITH_CPP11
59  KVImpactParameter(const KVImpactParameter&) : KVBase() {}; // copying is not possible
60 #endif
61  public:
62 #ifdef WITH_CPP11
63  cavata_prescription(const cavata_prescription&) = delete; // copying is not possible
64 #endif
66  {
67  fData = nullptr;
68  fIPScale = nullptr;
69  fXSecScale = nullptr;
70  fObsTransform = nullptr;
71  fObsTransformXSec = nullptr;
72  Bmax = 1.0;
73  }
79  cavata_prescription(TH1* h, Option_t* evol = "D");
80  virtual ~cavata_prescription();
81 
82  void MakeScale(Int_t npoints = 100, Double_t bmax = 1.0);
83  void MakeAbsoluteScale(Int_t npoints = 100, Double_t bmax = 1.0);
84  TGraph* GetScale() const
85  {
89  return fIPScale;
90  }
92  {
96  return fXSecScale;
97  }
100  TF1* GetTransFunc() const
101  {
103  return fObsTransform;
104  }
106  {
108  return fObsTransformXSec;
109  }
111  {
114  return fObsTransform->Eval(obs);
115  }
117  {
120  return fObsTransformXSec->Eval(obs);
121  }
123  {
126  return fObsTransform->GetX(b);
127  }
129  {
132  return fObsTransformXSec->GetX(sigma);
133  }
134  TH1* GetIPDistribution(TH1* obs, Int_t nbinx = 100, Option_t* norm = "");
135  TGraph* GetIPEvolution(TH2* obscor, TString moment, TString axis = "Y");
136  TH1* GetXSecDistribution(TH1* obs, Int_t nbinx = 100, Option_t* norm = "");
137  TGraph* GetXSecEvolution(TH2* obscor, TString moment, TString axis = "Y");
138 
140  {
144  return 10.*TMath::Pi() * pow(bmax, 2);
145  }
147  {
151  return pow(xsec / 10. / TMath::Pi(), 0.5);
152  }
153  std::vector<Double_t> SliceXSec(Int_t nslices, Double_t totXsec);
154  double GetMeanBForSCA(double bmin, double bmax) const;
155  double GetSigmaBForSCA(double bmin, double bmax) const;
156 
157  ClassDef(cavata_prescription, 2) //Impact parameter analysis tools
158  };
159 }
160 #endif
int Int_t
double Double_t
const char Option_t
#define ClassDef(name, id)
Option_t Option_t TPoint TPoint const char GetTextMagnitude GetFillStyle GetLineColor GetLineWidth GetMarkerStyle GetTextAlign GetTextColor GetTextSize void char Point_t Rectangle_t WindowAttributes_t Float_t Float_t Float_t b
Base class for KaliVeda framework.
Definition: KVBase.h:142
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
RVec< PromoteTypes< T0, T1 > > pow(const T0 &x, const RVec< T1 > &v)
const Double_t sigma
constexpr Double_t Pi()