// // // #include "Omnes_fitting.hpp" #include #include #include #include #include #include #include #include #include Double_t Omnes_fit(Double_t *par); int main(){ TLegend * legend=new TLegend(); // rhoPiPi = |A * zOmnes00 + B * zOmnes11 |^2 TFile *hFile=TFile::Open("plots_1.root"); hFile->ls(); TH1D * h_pion_invariant_mass_weight; TH1D * h_pion_invariant_mass_Stat_Syst; hFile->GetObject("h_pion_invariant_mass_weight", h_pion_invariant_mass_weight); hFile->GetObject("h_pion_invariant_mass_Stat_Syst", h_pion_invariant_mass_Stat_Syst); h_pion_invariant_mass_weight->SetLineColor(2); h_pion_invariant_mass_weight->SetMarkerColor(2); h_pion_invariant_mass_weight->SetMarkerStyle(kFullSquare); h_pion_invariant_mass_weight->Draw("E1"); h_pion_invariant_mass_Stat_Syst->Draw("same E1"); legend->AddEntry(h_pion_invariant_mass_weight,"Stat","EP"); legend->AddEntry(h_pion_invariant_mass_Stat_Syst,"Stat+Sys","EP"); legend->Draw(); TF1 *omnes= new TF1("omnes", Omnes_fit,0.0,1.0,2); omnes->SetParameter(0,0.707); omnes->SetParameter(1,0.707); omnes->SetLineColor(4); omnes->Draw("sames"); } Double_t Omnes_fit(Double_t *par){ Double_t result=0.0; int mPts; const Int_t nPts = mPts; mPts=0; float mass,re, im; TComplex zOmnes00[nPts],zOmnes11[nPts]; Double_t zOmnes11M[nPts],zOmnes00M[nPts],xOmnes11[nPts],xOmnes00[nPts],yOmnes11[nPts],yOmnes00[nPts]; Double_t MassPiPi[nPts]; char rhomeson[32] = "Omnes11.txt"; FILE * fOmnes; fOmnes=fopen(rhomeson,"r"); char line[charLine],chars[80]; // Read Header lines fgets(line,charLine,fOmnes); // How many data lines? fgets(line,charLine,fOmnes); sscanf(line,"%d", &mPts); // fgets(line,charLine,fOmnes); char Sigmameson[32] = "Omnes00KM.txt"; FILE * fOmnes1; fOmnes1=fopen(Sigmameson,"r"); // Read Header lines fgets(line,charLine,fOmnes1); // How many data lines? fgets(line,charLine,fOmnes1); sscanf(line,"%d", &mPts); for (Int_t iPt=0; iPt< nPts; iPt++) { if(fgets(line,charLine,fOmnes)==NULL){ printf("Error reading File %s line %d\n", rhomeson, iPt+iHeader); continue; } else { sscanf(line,"%f %f %f", &mass,&re, &im); MassPiPi[iPt] = mass; xOmnes11[iPt]=re; yOmnes11[iPt]=im; zOmnes11[iPt] = TComplex(re,im); zOmnes11M[iPt]=sqrt(re*re+im*im); } mPts=0; if(fgets(line,charLine,fOmnes1)==NULL){ printf("Error reading File %s line %d\n", Sigmameson, iPt+iHeader); continue; } else { sscanf(line,"%f %f %f", &mass,&re, &im); xOmnes00[iPt]=re; yOmnes00[iPt]=im; zOmnes00[iPt] = TComplex(re,im); zOmnes00M[iPt]=sqrt(re*re+im*im); printf("xOmenes= %f \n", xOmnes00[iPt]); mPts++; } result = par[0]*zOmnes00M[iPt]; result += par[1]*zOmnes11M[iPt]; result=result* result; } fclose(fOmnes); fclose(fOmnes1); return mPts; return result; }