StRoot  1
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Groups Pages
Bichsel70.C
1 class Bichsel;
2 //Bichsel *m_Bichsel = Bichsel::instance();
3 Bichsel *m_Bichsel = 0;
4 TF1 *sipi = 0, *sie = 0, *sip = 0, *siK = 0, *sid = 0, *sit = 0, *sihe3 = 0;
5 //________________________________________________________________________________
6 Double_t sifunc(Double_t *x,Double_t *par) {
7  Double_t pove = pow(10.,x[0]);
8  Double_t ppion = pove*0.13956995;
9  Double_t poverm = ppion/par[0];
10  Int_t k = par[1];
11  Double_t charge2 = 1;
12  if (k == 1) {
13  charge2 = 4;
14  poverm *= 2;
15  }
16  return TMath::Log(charge2*BetheBloch::Sirrf(poverm,60,k==3)/BetheBloch::Sirrf(pove,60,0));
17 }
18 //________________________________________________________________________________
19 Double_t bichsel70(Double_t *x,Double_t *par) {
20  Double_t pove = pow(10.,x[0]);
21  Double_t ppion = pove*0.13956995;
22  Double_t poverm = ppion/par[0];
23  Int_t k = par[1];
24  Double_t charge2 = 1;
25  if (k == 1) {
26  charge2 = 4;
27  poverm *= 2;
28  }
29  Double_t val1 = m_Bichsel->GetI70(TMath::Log10(poverm),1.);
30  Double_t val2 = m_Bichsel->GetI70(TMath::Log10(pove),1.);
31  Double_t val = 0;
32  if (val1 > 0 && val2 > 0) val = TMath::Log(val1/val2);
33  // cout << "pove\t" << pove << "\t" << val1 << "\tpoverm\t" << val2 << "\t" << val << endl;
34  return val;
35 }
36 //________________________________________________________________________________
37 
38 void Bichsel70(const Char_t *tag = "") {
39 #if 1
40  if (gClassTable->GetID("StBichsel")) {
41  gSystem->Load("libTable");
42  gSystem->Load("St_base");
43  gSystem->Load("StarClassLibrary");
44  gSystem->Load("StBichsel");
45  }
46 #endif
47  if (!m_Bichsel) m_Bichsel = Bichsel::Instance();
48  TLegend *leg = new TLegend(0.72,0.7,0.9,0.9,"");//TLegend(0.79,0.91,0.89,0.89,"");
49  sipi = new TF1(Form("%sbipi",tag),bichsel70,-1.,4.0,2);
50  sipi->SetParameter(0,0.13956995);
51  sipi->SetParameter(1,0);
52  sie = new TF1(Form("%sbie",tag),bichsel70,-1.,4.0,2);
53  sie->SetParameter(0,0.51099907e-3);
54  sie->SetParameter(1,3);
55  sie->SetLineColor(2);
56  leg->AddEntry(sie,"e-#pi","L");
57 // TF1 *sie1 = new TF1(Form("%sbie1",tag),bichsel70,-1.,4.0,2);
58 // sie1->SetParameter(0,0.51099907e-3);
59 // sie1->SetParameter(1,0);
60 // sie1->SetLineColor(2);
61  sip = new TF1(Form("%sbip",tag),bichsel70,-1.,4.0,2);
62  sip->SetParameter(0,0.93827231);
63  sip->SetParameter(1,0);
64  sip->SetLineColor(3);
65  leg->AddEntry(sip,"p-#pi","L");
66  sim = new TF1(Form("%sbim",tag),bichsel70,-1.,4.0,2);
67  sim->SetParameter(0,0.1056584);
68  sim->SetParameter(1,0);
69  sim->SetLineColor(8);
70  leg->AddEntry(sim,"#mu-#pi","L");
71  siK = new TF1(Form("%sbiK",tag),bichsel70,-1.,4.0,2);
72  siK->SetParameter(0,0.493677);
73  siK->SetParameter(1,0);
74  siK->SetLineColor(4);
75  leg->AddEntry(siK,"K-#pi","L");
76  sid = new TF1(Form("%sbid",tag),bichsel70,-1.,4.0,2);
77  sid->SetParameter(0,0.1876E+01);
78  sid->SetParameter(1,0);
79  sid->SetLineColor(6);
80  leg->AddEntry(sid,"d-#pi","L");
81  TF1 *sit = new TF1(Form("%sbit",tag),bichsel70,-1.,4.0,2);
82  sit->SetParameter(0,0.2809E+01);
83  sit->SetParameter(1,0);
84  sit->SetLineColor(7);
85  leg->AddEntry(sit,"t-#pi","L");
86 
87 // sihe3 = new TF1(Form("%sbihe3",tag),bichsel70,-1.,4.0,2);
88 // sihe3->SetParameter(0,0.2809E+01);
89 // sihe3->SetParameter(1,1);
90 // sihe3->SetLineColor(1);
91 // leg->AddEntry(sihe3,"He3-#pi","L");
92  sipi->Draw("same");
93  sim->Draw("same");
94  sie->Draw("same");
95  // sie1->Draw("same");
96  siK->Draw("same");
97  sip->Draw("same");
98  sid->Draw("same");
99  sit->Draw("same");
100 // sihe3->Draw("same");
101  leg->Draw();
102 }
103 Double_t Divation(Double_t *x,Double_t *par) {
104  Double_t val[7];
105  // val[0] = sipi->Eval(x);
106  TF1 *f;
107  f = (TF1 *) gROOT->GetListOfFunctions()->FindObject("bie"); if (f) val[1] = f->Eval(x);
108  f = (TF1 *) gROOT->GetListOfFunctions()->FindObject("biK"); if (f) val[2] = f->Eval(x);
109  f = (TF1 *) gROOT->GetListOfFunctions()->FindObject("bip"); if (f) val[3] = f->Eval(x);
110  f = (TF1 *) gROOT->GetListOfFunctions()->FindObject("bid"); if (f) val[4] = f->Eval(x);
111  f = (TF1 *) gROOT->GetListOfFunctions()->FindObject("bit"); if (f) val[5] = f->Eval(x);
112  f = (TF1 *) gROOT->GetListOfFunctions()->FindObject("bihe3");if (f) val[6] = f->Eval(x);
113  Double_t min = 9999.;
114  for (int i = 1; i <7; i++) {
115  Double_t dev = TMath::Abs(val[i]);
116  if (dev < min) min = dev;
117  }
118  return min;
119 }