+
+ // Fit function
+ TF1 *func = new TF1("RegFunc",RegFunc,0.23,50.,3);
+ func->SetParNames("A_meas","A_scatt","B");
+
+ // line to draw on the plots
+ TLine *lin = new TLine(-1,1,1.69,1);
+ lin->SetLineStyle(2);
+ lin->SetLineWidth(2);
+
+ // matrix used to store fit results
+ TMatrixD fitRes(9,3);
+
+ // --- c00 ---
+
+ // create the canvas
+ TCanvas *canv00 = new TCanvas("canv00","c00",0,0,700,900);
+ canv00->Divide(1,2);
+ // create the graph for cov matrix
+ TGraphErrors *gr00 = new TGraphErrors(kfitbins,p,mean00,ep,sigma00);
+ TString title00("C(y,y)"); title00.Prepend(part);
+ TH2F *frame00 = new TH2F("frame00",title00.Data(),2,0.1,50,2,0,5e-3);
+ frame00->SetXTitle("p [GeV/c]");
+ canv00->cd(1); gPad->SetLogx();
+ frame00->Draw();
+ gr00->Draw("P");
+ // Sets initial values for parameters
+ func->SetParameters(1.6e-3,1.9e-4,1.5);
+ // Fit points in range defined by function
+ gr00->Fit("RegFunc","R,Q");
+ func->GetParameters(fitpar);
+ for(Int_t i=0; i<3; i++) fitRes(0,i)=fitpar[i];
+ for(Int_t l=0; l<kfitbins; l++) {
+ rmean[l] = mean00[l]/RegFunc(&p[l],fitpar);
+ rsigma[l] = sigma00[l]/RegFunc(&p[l],fitpar);
+ }
+ // create the graph the regularized cov. matrix
+ TGraphErrors *gr00reg = new TGraphErrors(kfitbins,p,rmean,ep,rsigma);
+ TString regtitle00("C(y,y)/(A_meas+A_scatt/p^{B})");
+ regtitle00.Prepend(part);
+ TH2F *frame00reg = new TH2F("frame00reg",regtitle00.Data(),2,0.1,50,2,0,2);
+ frame00reg->SetXTitle("p [GeV/c]");
+ canv00->cd(2); gPad->SetLogx();
+ frame00reg->Draw();
+ gr00reg->Draw("P");
+ lin->Draw("same");
+
+
+ // --- c11 ---
+
+ // create the canvas
+ TCanvas *canv11 = new TCanvas("canv11","c11",0,0,700,900);
+ canv11->Divide(1,2);
+ // create the graph for cov matrix
+ TGraphErrors *gr11 = new TGraphErrors(kfitbins,p,mean11,ep,sigma11);
+ TString title11("C(z,z)"); title11.Prepend(part);
+ TH2F *frame11 = new TH2F("frame11",title11.Data(),2,0.1,50,2,0,6e-3);
+ frame11->SetXTitle("p [GeV/c]");
+ canv11->cd(1); gPad->SetLogx();
+ frame11->Draw();
+ gr11->Draw("P");
+ // Sets initial values for parameters
+ func->SetParameters(1.2e-3,8.1e-4,1.);
+ // Fit points in range defined by function
+ gr11->Fit("RegFunc","R,Q");
+ func->GetParameters(fitpar);
+ for(Int_t i=0; i<3; i++) fitRes(1,i)=fitpar[i];
+ for(Int_t l=0; l<kfitbins; l++) {
+ rmean[l] = mean11[l]/RegFunc(&p[l],fitpar);
+ rsigma[l] = sigma11[l]/RegFunc(&p[l],fitpar);
+ }
+ // create the graph the regularized cov. matrix
+ TGraphErrors *gr11reg = new TGraphErrors(kfitbins,p,rmean,ep,rsigma);
+ TString regtitle11("C(z,z)/(A_meas+A_scatt/p^{B})");
+ regtitle11.Prepend(part);
+ TH2F *frame11reg = new TH2F("frame11reg",regtitle11.Data(),2,0.1,50,2,0,2);
+ frame11reg->SetXTitle("p [GeV/c]");
+ canv11->cd(2); gPad->SetLogx();
+ frame11reg->Draw();
+ gr11reg->Draw("P");
+ lin->Draw("same");
+
+
+ // --- c20 ---
+
+ // create the canvas
+ TCanvas *canv20 = new TCanvas("canv20","c20",0,0,700,900);
+ canv20->Divide(1,2);
+ // create the graph for cov matrix
+ TGraphErrors *gr20 = new TGraphErrors(kfitbins,p,mean20,ep,sigma20);
+ TString title20("C(#eta, y)"); title20.Prepend(part);
+ TH2F *frame20 = new TH2F("frame20",title20.Data(),2,0.1,50,2,0,2.5e-4);
+ frame20->SetXTitle("p [GeV/c]");
+ canv20->cd(1); gPad->SetLogx();
+ frame20->Draw();
+ gr20->Draw("P");
+ // Sets initial values for parameters
+ func->SetParameters(7.3e-5,1.2e-5,1.5);
+ // Fit points in range defined by function
+ gr20->Fit("RegFunc","R,Q");
+ func->GetParameters(fitpar);
+ for(Int_t i=0; i<3; i++) fitRes(2,i)=fitpar[i];
+ for(Int_t l=0; l<kfitbins; l++) {
+ rmean[l] = mean20[l]/RegFunc(&p[l],fitpar);
+ rsigma[l] = sigma20[l]/RegFunc(&p[l],fitpar);
+ }
+ // create the graph the regularized cov. matrix
+ TGraphErrors *gr20reg = new TGraphErrors(kfitbins,p,rmean,ep,rsigma);
+ TString regtitle20("C(#eta, y)/(A_meas+A_scatt/p^{B})");
+ regtitle20.Prepend(part);
+ TH2F *frame20reg = new TH2F("frame20reg",regtitle20.Data(),2,0.1,50,2,0,2);
+ frame20reg->SetXTitle("p [GeV/c]");
+ canv20->cd(2); gPad->SetLogx();
+ frame20reg->Draw();
+ gr20reg->Draw("P");
+ lin->Draw("same");
+
+
+ // --- c22 ---
+
+ // create the canvas
+ TCanvas *canv22 = new TCanvas("canv22","c22",0,0,700,900);
+ canv22->Divide(1,2);
+ // create the graph for cov matrix
+ TGraphErrors *gr22 = new TGraphErrors(kfitbins,p,mean22,ep,sigma22);
+ TString title22("C(#eta, #eta)"); title22.Prepend(part);
+ TH2F *frame22 = new TH2F("frame22",title22.Data(),2,0.1,50,2,0,3e-5);
+ frame22->SetXTitle("p [GeV/c]");
+ canv22->cd(1); gPad->SetLogx();
+ frame22->Draw();
+ gr22->Draw("P");
+ // Sets initial values for parameters
+ func->SetParameters(5.2e-6,1.1e-6,2.);
+ // Fit points in range defined by function
+ gr22->Fit("RegFunc","R,Q");
+ func->GetParameters(fitpar);
+ for(Int_t i=0; i<3; i++) fitRes(3,i)=fitpar[i];
+ for(Int_t l=0; l<kfitbins; l++) {
+ rmean[l] = mean22[l]/RegFunc(&p[l],fitpar);
+ rsigma[l] = sigma22[l]/RegFunc(&p[l],fitpar);
+ }
+ // create the graph the regularized cov. matrix
+ TGraphErrors *gr22reg = new TGraphErrors(kfitbins,p,rmean,ep,rsigma);
+ TString regtitle22("C(#eta, #eta)/(A_meas+A_scatt/p^{B})");
+ regtitle22.Prepend(part);
+ TH2F *frame22reg = new TH2F("frame22reg",regtitle22.Data(),2,0.1,50,2,0,2);
+ frame22reg->SetXTitle("p [GeV/c]");
+ canv22->cd(2); gPad->SetLogx();
+ frame22reg->Draw();
+ gr22reg->Draw("P");
+ lin->Draw("same");
+
+
+ // --- c31 ---
+
+ // create the canvas
+ TCanvas *canv31 = new TCanvas("canv31","c31",0,0,700,900);
+ canv31->Divide(1,2);
+ // create the graph for cov matrix
+ TGraphErrors *gr31 = new TGraphErrors(kfitbins,p,mean31,ep,sigma31);
+ TString title31("C(tg #lambda,z)"); title31.Prepend(part);
+ TH2F *frame31 = new TH2F("frame31",title31.Data(),2,0.1,50,2,-2e-4,0);
+ frame31->SetXTitle("p [GeV/c]");
+ canv31->cd(1); gPad->SetLogx();
+ frame31->Draw();
+ gr31->Draw("P");
+ // Sets initial values for parameters
+ func->SetParameters(-1.2e-5,-1.2e-5,1.5);
+ // Fit points in range defined by function
+ gr31->Fit("RegFunc","R,Q");
+ func->GetParameters(fitpar);
+ for(Int_t i=0; i<3; i++) fitRes(4,i)=fitpar[i];
+ for(Int_t l=0; l<kfitbins; l++) {
+ rmean[l] = mean31[l]/RegFunc(&p[l],fitpar);
+ rsigma[l] = -sigma31[l]/RegFunc(&p[l],fitpar);
+ }
+ // create the graph the regularized cov. matrix
+ TGraphErrors *gr31reg = new TGraphErrors(kfitbins,p,rmean,ep,rsigma);
+ TString regtitle31("C(tg #lambda,z)/(A_meas+A_scatt/p^{B})");
+ regtitle31.Prepend(part);
+ TH2F *frame31reg = new TH2F("frame31reg",regtitle31.Data(),2,0.1,50,2,0,2);
+ frame31reg->SetXTitle("p [GeV/c]");
+ canv31->cd(2); gPad->SetLogx();
+ frame31reg->Draw();
+ gr31reg->Draw("P");
+ lin->Draw("same");
+
+
+ // --- c33 ---
+
+ // create the canvas
+ TCanvas *canv33 = new TCanvas("canv33","c33",0,0,700,900);
+ canv33->Divide(1,2);
+ // create the graph for cov matrix
+ TGraphErrors *gr33 = new TGraphErrors(kfitbins,p,mean33,ep,sigma33);
+ TString title33("C(tg #lambda,tg #lambda)"); title33.Prepend(part);
+ TH2F *frame33 = new TH2F("frame33",title33.Data(),2,0.1,50,2,0,1e-5);
+ frame33->SetXTitle("p [GeV/c]");
+ canv33->cd(1); gPad->SetLogx();
+ frame33->Draw();
+ gr33->Draw("P");
+ // Sets initial values for parameters
+ func->SetParameters(1.3e-7,4.6e-7,1.7);
+ // Fit points in range defined by function
+ gr33->Fit("RegFunc","R,Q");
+ func->GetParameters(fitpar);
+ for(Int_t i=0; i<3; i++) fitRes(5,i)=fitpar[i];
+ for(Int_t l=0; l<kfitbins; l++) {
+ rmean[l] = mean33[l]/RegFunc(&p[l],fitpar);
+ rsigma[l] = sigma33[l]/RegFunc(&p[l],fitpar);
+ }
+ // create the graph the regularized cov. matrix
+ TGraphErrors *gr33reg = new TGraphErrors(kfitbins,p,rmean,ep,rsigma);
+ TString regtitle33("C(tg #lambda,tg #lambda)/(A_meas+A_scatt/p^{B})");
+ regtitle33.Prepend(part);
+ TH2F *frame33reg = new TH2F("frame33reg",regtitle33.Data(),2,0.1,50,2,0,2);
+ frame33reg->SetXTitle("p [GeV/c]");
+ canv33->cd(2); gPad->SetLogx();
+ frame33reg->Draw();
+ gr33reg->Draw("P");
+ lin->Draw("same");
+
+
+ // --- c40 ---
+
+ // create the canvas
+ TCanvas *canv40 = new TCanvas("canv40","c40",0,0,700,900);
+ canv40->Divide(1,2);
+ // create the graph for cov matrix
+ TGraphErrors *gr40 = new TGraphErrors(kfitbins,p,mean40,ep,sigma40);
+ TString title40("C(C,y)"); title40.Prepend(part);
+ TH2F *frame40 = new TH2F("frame40",title40.Data(),2,0.1,50,2,0,1e-6);
+ frame40->SetXTitle("p [GeV/c]");
+ canv40->cd(1); gPad->SetLogx();
+ frame40->Draw();
+ gr40->Draw("P");
+ // Sets initial values for parameters
+ func->SetParameters(4.e-7,4.4e-8,1.5);
+ // Fit points in range defined by function
+ gr40->Fit("RegFunc","R,Q");
+ func->GetParameters(fitpar);
+ for(Int_t i=0; i<3; i++) fitRes(6,i)=fitpar[i];
+ for(Int_t l=0; l<kfitbins; l++) {
+ rmean[l] = mean40[l]/RegFunc(&p[l],fitpar);
+ rsigma[l] = sigma40[l]/RegFunc(&p[l],fitpar);
+ }
+ // create the graph the regularized cov. matrix
+ TGraphErrors *gr40reg = new TGraphErrors(kfitbins,p,rmean,ep,rsigma);
+ TString regtitle40("C(C,y)/(A_meas+A_scatt/p^{B})");
+ regtitle40.Prepend(part);
+ TH2F *frame40reg = new TH2F("frame40reg",regtitle40.Data(),2,0.1,50,2,0,2);
+ frame40reg->SetXTitle("p [GeV/c]");
+ canv40->cd(2); gPad->SetLogx();
+ frame40reg->Draw();
+ gr40reg->Draw("P");
+ lin->Draw("same");
+
+
+ // --- c42 ---
+
+ // create the canvas
+ TCanvas *canv42 = new TCanvas("canv42","c42",0,0,700,900);
+ canv42->Divide(1,2);
+ // create the graph for cov matrix
+ TGraphErrors *gr42 = new TGraphErrors(kfitbins,p,mean42,ep,sigma42);
+ TString title42("C(C, #eta)"); title42.Prepend(part);
+ TH2F *frame42 = new TH2F("frame42",title42.Data(),2,0.1,50,2,0,2.2e-7);
+ frame42->SetXTitle("p [GeV/c]");
+ canv42->cd(1); gPad->SetLogx();
+ frame42->Draw();
+ gr42->Draw("P");
+ // Sets initial values for parameters
+ func->SetParameters(3.e-8,8.2e-9,2.);
+ // Fit points in range defined by function
+ gr42->Fit("RegFunc","R,Q");
+ func->GetParameters(fitpar);
+ for(Int_t i=0; i<3; i++) fitRes(7,i)=fitpar[i];
+ for(Int_t l=0; l<kfitbins; l++) {
+ rmean[l] = mean42[l]/RegFunc(&p[l],fitpar);
+ rsigma[l] = sigma42[l]/RegFunc(&p[l],fitpar);
+ }
+ // create the graph the regularized cov. matrix
+ TGraphErrors *gr42reg = new TGraphErrors(kfitbins,p,rmean,ep,rsigma);
+ TString regtitle42("C(C, #eta)/(A_meas+A_scatt/p^{B})");
+ regtitle42.Prepend(part);
+ TH2F *frame42reg = new TH2F("frame42reg",regtitle42.Data(),2,0.1,50,2,0,2);
+ frame42reg->SetXTitle("p [GeV/c]");
+ canv42->cd(2); gPad->SetLogx();
+ frame42reg->Draw();
+ gr42reg->Draw("P");
+ lin->Draw("same");
+
+
+ // --- c44 ---
+
+ // create the canvas
+ TCanvas *canv44 = new TCanvas("canv44","c44",0,0,700,900);
+ canv44->Divide(1,2);
+ // create the graph for cov matrix
+ TGraphErrors *gr44 = new TGraphErrors(kfitbins,p,mean44,ep,sigma44);
+ TString title44("C(C,C)"); title44.Prepend(part);
+ TH2F *frame44 = new TH2F("frame44",title44.Data(),2,0.1,50,2,0,2e-9);
+ frame44->SetXTitle("p [GeV/c]");
+ canv44->cd(1); gPad->SetLogx();
+ frame44->Draw();
+ gr44->Draw("P");
+ // Sets initial values for parameters
+ func->SetParameters(1.8e-10,5.8e-11,2.);
+ // Fit points in range defined by function
+ gr44->Fit("RegFunc","R,Q");
+ func->GetParameters(fitpar);
+ for(Int_t i=0; i<3; i++) fitRes(8,i)=fitpar[i];
+ for(Int_t l=0; l<kfitbins; l++) {
+ rmean[l] = mean44[l]/RegFunc(&p[l],fitpar);
+ rsigma[l] = sigma44[l]/RegFunc(&p[l],fitpar);
+ }
+ // create the graph the regularized cov. matrix
+ TGraphErrors *gr44reg = new TGraphErrors(kfitbins,p,rmean,ep,rsigma);
+ TString regtitle44("C(C,C)/(A_meas+A_scatt/p^{B})");
+ regtitle44.Prepend(part);
+ TH2F *frame44reg = new TH2F("frame44reg",regtitle44.Data(),2,0.1,50,2,0,2);
+ frame44reg->SetXTitle("p [GeV/c]");
+ canv44->cd(2); gPad->SetLogx();
+ frame44reg->Draw();
+ gr44reg->Draw("P");
+ lin->Draw("same");
+
+
+
+
+ switch (pdg) {
+ case 211:
+ new(&fRegParPi) TMatrixD(fitRes);
+ break;
+ case 321:
+ new(&fRegParKa) TMatrixD(fitRes);
+ break;
+ case 2212:
+ new(&fRegParPr) TMatrixD(fitRes);
+ break;
+ case 11:
+ new(&fRegParEl) TMatrixD(fitRes);
+ break;
+ case 13:
+ new(&fRegParMu) TMatrixD(fitRes);
+ break;