23 cout <<
"changing nsteps to " << nsteps << endl;
44 TCanvas *
c =
new TCanvas(
"c",
"dedx_p");
46 TFile
infile(
"dedx_out.root",
"READ");
50 case 0: h = (TH2F*)
infile.Get(
"hdedx_p_e");
break;
51 case 1: h = (TH2F*)
infile.Get(
"hdedx_p_mu");
break;
52 case 2: h = (TH2F*)
infile.Get(
"hdedx_p_pi");
break;
53 case 3: h = (TH2F*)
infile.Get(
"hdedx_p_k");
break;
54 case 4: h = (TH2F*)
infile.Get(
"hdedx_p_p");
68 TCanvas *
c2 =
new TCanvas(
"c2",
"slices");
72 double stepsize = 1.5/
nsteps;
73 x[
i] = (
i + 0.5) * stepsize;
80 case 0: fname.Prepend(
"e_"); fgname.Prepend(
"fe_");
break;
81 case 1: fname.Prepend(
"mu_"); fgname.Prepend(
"fmu_");
break;
82 case 2: fname.Prepend(
"pi_"); fgname.Prepend(
"fpi_");
break;
83 case 3: fname.Prepend(
"k_"); fgname.Prepend(
"fk_");
break;
84 case 4: fname.Prepend(
"p_"); fgname.Prepend(
"fp_");
86 title = fname; title +=
"("; title += (x[
i] - 0.5 * stepsize); title +=
", "; title += (x[
i] + 0.5 * stepsize); title +=
") GeV"; title += ((
i + 1) * limit - 1);
88 htemp[
i] =
new TH1D(fname, title, 100, 0, yup);
89 h->ProjectionY(fname, limit *
i, (i + 1) * limit - 1,
"o");
94 double tmpmu = htemp[
i]->GetMean() ;
95 double tmpsig = htemp[
i]->GetRMS();
96 double gaus_inf = tmpmu - 3 * tmpsig;
97 double gaus_sup = tmpmu + 3 * tmpsig;
99 fgaus[
i] =
new TF1(
"fgname",
"gaus(0)", gaus_inf, gaus_sup);
100 fgaus[
i]->SetParameters(1, tmpmu, tmpsig);
101 htemp[
i]->Fit(
"fgname",
"R");
102 mean[
i] = fgaus[
i]->GetParameter(1);
103 sigma[
i] = fgaus[
i]->GetParameter(2);
104 meanerr[
i] = fgaus[
i]->GetParError(1);
105 sigmaerr[
i] = fgaus[
i]->GetParError(2);
109 TCanvas *
graphs =
new TCanvas(
"graphs",
"graphs");
110 graphs->Divide(2, 1);
115 for(
int istep = 0; istep <
nsteps; istep++) xerr[istep] = 0;
117 TGraphErrors *
g =
new TGraphErrors(nsteps, x, mean, xerr, meanerr);
118 TF1 *fdedx =
new TF1(
"fdedx", fundedx, mean_inf, mean_sup);
119 fdedx->SetParameters(1, 1, 1);
122 g->GetYaxis()->SetRangeUser(0, 100);
123 g->Fit(
"fdedx",
"R");
129 TGraphErrors *gs =
new TGraphErrors(nsteps, x, sigma, xerr, sigmaerr);
130 TF1 *sfdedx =
new TF1(
"sfdedx", funsig, sigma_inf, sigma_sup);
133 gs->GetYaxis()->SetRangeUser(0, 5);
134 gs->Fit(
"sfdedx",
"R");
139 TF1 *
fdedx2 =
new TF1(
"fdedx2", fundedx, 0., 1.5);
140 fdedx2->SetParameters(par);
141 c->cd(); fdedx2->SetLineColor(kOrange); fdedx2->Draw(
"SAME");
144 for(
int i = 0; i <
npartot; i++) {
145 if(i < npardedx) parcomp[
i] = par[
i];
149 TF1 *
fsum =
new TF1(
"fsum", funsum, 0., 1.5);
150 fsum->SetParameters(parcomp);
152 TF1 *
fdiff =
new TF1(
"fdiff", fundiff, 0., 1.5);
153 fdiff->SetParameters(parcomp);
160 cout <<
"ifile " << ifile << endl;
161 cout <<
" momentum sampled over " << nsteps <<
" with step width " << 1.5/nsteps << endl;
163 cout <<
"MEAN DEDX PARAMETRIZATION" << endl;
164 cout <<
"mom limits " << mean_inf <<
" " << mean_sup << endl;
165 cout <<
"mu: ";
for(
int param = 0; param <
npardedx; param++) cout << fdedx->GetParameter(param) <<
", "; cout << endl;
167 cout <<
"SIGMA DEDX PARAMETRIZATION" << endl;
168 cout <<
"mom limits " << sigma_inf <<
" " << sigma_sup << endl;
169 cout <<
"sig: ";
for(
int param = 0; param <
nparsig; param++) cout << sfdedx->GetParameter(param) <<
", " ; cout << endl;
friend F32vec4 fabs(const F32vec4 &a)
Double_t sigmaerr[nsteps]
TFile infile("dedx_out.root","READ")