3 const Int_t NMasses = 5;
4 const Double_t Masses[NMasses] = {0.93827231,
9 const Char_t *Names[NMasses] = {
"p",
"K",
"pi",
"e",
"d"};
11 const Char_t *FNames[6] = {
"Bz",
"Girrf",
"Sirrf",
"B70",
"B60",
"RB70"};
12 const Int_t Nlog2dx = 7;
13 const Double_t log2dx[Nlog2dx];
15 Double_t sifunc(Double_t *x,Double_t *par) {
17 Double_t poverm = pove/par[0];
21 return BetheBloch::Girrf(poverm,1.e-3,k);
24 Double_t gfunc(Double_t *x,Double_t *par) {
26 Double_t poverm = pove/par[0];
30 return BetheBloch::Sirrf(poverm,par[2],k);
40 Double_t bichselZ(Double_t *x,Double_t *par) {
42 Double_t poverm = pove/par[0];
43 return TMath::Exp(m_Bichsel->GetMostProbableZM(TMath::Log10(poverm),par[3]));
45 Double_t bichsel70(Double_t *x,Double_t *par) {
47 Double_t poverm = pove/par[0];
48 return m_Bichsel->GetI70M(TMath::Log10(poverm),par[3]);
50 Double_t Rbichsel70(Double_t *x,Double_t *par) {
52 Double_t poverm = pove/par[0];
53 return m_Bichsel->GetI70M(TMath::Log10(poverm),par[3])/m_Bichsel->GetI70M(TMath::Log10(poverm));
55 Double_t Rbichselz(Double_t *x,Double_t *par) {
57 Double_t poverm = pove/par[0];
58 return TMath::Exp(m_Bichsel->GetMostProbableZM(TMath::Log10(poverm),par[3]) -
59 m_Bichsel->GetMostProbableZM(TMath::Log10(poverm)));
61 Double_t bichsel60(Double_t *x,Double_t *par) {
63 Double_t poverm = pove/par[0];
64 return m_Bichsel->GetI60(TMath::Log10(poverm),par[3]);
66 void bichdX(TString Opt =
"I70M") {
67 if (gClassTable->GetID(
"StBichsel") < 0) {
71 gSystem->Load(
"StBichsel");
73 gStyle->SetOptDate(0);
74 if (!m_Bichsel) m_Bichsel = Bichsel::Instance();
75 TCanvas *c1 =
new TCanvas(
"c1");
83 if (Opt.Contains(
"70",TString::kIgnoreCase)) {
85 hr = c1->DrawFrame(1.e-1,0.7,1.e4,1.5);
88 }
else if (Opt.Contains(
"z",TString::kIgnoreCase)) {
90 hr = c1->DrawFrame(1.e-1,0.7,1.e4,1.5);
93 hr->SetTitle(Form(
"Difference Bichsel %s predictions for different dx",Fnames.Data()));
94 hr->SetXTitle(
"#beta#gamma ");
96 hr->SetYTitle(Form(
"%s(dx)/%s(2 cm)",Fnames.Data(),Fnames.Data()));
98 Double_t
params[4] = { 1.0, 0., 60., 1.};
99 TLegend *leg =
new TLegend(0.62,0.7,0.9,0.9,
"");
103 for (Int_t f = 5; f <= 5; f++) {
105 for (Int_t dx = 0; dx < Nlog2dx; dx++) {
106 params[3] = TMath::Log2(dx+1.);;
107 Char_t *FunName = Form(
"%s%s%i",FNames[f],Names[h],dx);
108 if (Opt.Contains(
"70",TString::kIgnoreCase)) func =
new TF1(FunName,Rbichsel70,1.e-1,1.e4,4);
109 if (Opt.Contains(
"z",TString::kIgnoreCase)) func =
new TF1(FunName,Rbichselz,1.e-1,1.e4,4);
110 if (! func)
continue;
111 func->SetLineColor(icol);
114 if (icol == 5) icol++;
115 func->SetParameters(params);
117 leg->AddEntry(func,Form(
"%s dX = %4.1f (cm)",Fnames.Data(),TMath::Power(2.,params[3])),
"L");