//%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% //%%%%%%%Final RIV analysis step - must be preceded by running of Heliophiplot %%%%% //%%%%%%%Version last edited 20090927 - by Russell Leslie //%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% //%%%%%%%%%%%%% List of includes to allow ACLiC to compile file %%%%%% #include "TF1.h" #include "TCanvas.h" #include "TGraph.h" #include "TFile.h" #include "TTree.h" #include "TLeaf.h" #include "TH1F.h" #include "TGraphErrors.h" #include #include #include // using namespace std; // //%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% //%%%%%%%%%%%%%% Set dimensions for global objects%% //%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% // //%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% //%%%%%%%%%%%%%% TF1s %%%%%%%%%%%%%%%%%%%%%%%%%%%%% //%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% TF1 *FAll; TF1 *FAllh1; TF1 *FAllh2; TF1 *FAllh3; // TF1 *FTheta90; TF1 *FTheta90h1; TF1 *FTheta90h2; TF1 *FTheta90h3; // TF1 *FTheta135; TF1 *FTheta135h1; TF1 *FTheta135h2; TF1 *FTheta135h3; // TF1 *FThetaNeg115; TF1 *FThetaNeg115h1; TF1 *FThetaNeg115h2; TF1 *FThetaNeg115h3; // TF1 *FThetaZero; TF1 *FThetaZeroh1; TF1 *FThetaZeroh2; TF1 *FThetaZeroh3; //%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% //%%%%%%%%%%%%%%% TGraphs %%%%%%%%%%%%%%%%%%%%%%%%% //%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% TGraph *x0All; TGraph *x2All; TGraph *x4All; // TGraph *x0Theta90; TGraph *x2Theta90; TGraph *x4Theta90; // TGraph *x0Theta135; TGraph *x2Theta135; TGraph *x4Theta135; // TGraph *x0ThetaNeg115; TGraph *x2ThetaNeg115; TGraph *x4ThetaNeg115; //%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% //%%%%%%%%%%%%%%% TGraphErrors %%%%%%%%%%%%%%%%%%%%%% //%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% TGraphErrors *gr0; TGraphErrors *gr1; TGraphErrors *gr2; TGraphErrors *gr3; //%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% //%%%%%%%%%%%%%%% Array variables %%%%%%%%%%%%%%%%%%% //%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% Double_t X0[20]; Double_t X2[20]; Double_t X4[20]; Double_t h1X0[5]; Double_t h1X2[5]; Double_t h1X4[5]; Double_t h2X0[5]; Double_t h2X2[5]; Double_t h2X4[5]; Double_t h3X0[5]; Double_t h3X2[5]; Double_t h3X4[5]; Double_t h4X0[5]; Double_t h4X2[5]; Double_t h4X4[5]; // //%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% // Double_t fAllh1[20]; Double_t fAllh2[20]; Double_t fAllh3[20]; // Double_t ftheta90h0[5]; Double_t ftheta90h1[5]; Double_t ftheta90h2[5]; Double_t ftheta90h3[5]; // Double_t ftheta135h0[5]; Double_t ftheta135h1[5]; Double_t ftheta135h2[5]; Double_t ftheta135h3[5]; // Double_t fthetaNeg115h0[5]; Double_t fthetaNeg115h1[5]; Double_t fthetaNeg115h2[5]; Double_t fthetaNeg115h3[5]; // Double_t fthetaZeroh0[5]; Double_t fthetaZeroh1[5]; Double_t fthetaZeroh2[5]; Double_t fthetaZeroh3[5]; // Double_t phi[] = {0,45,90,135,180}; Double_t allphi[] = { 0, 45, 90,135,180, 225,270,315,360,405, 450,495,540,585,630, 675,720,765,810,855}; // //%%%%%%%%%%%%%% Integer Constants %%%%%%%%%%%%%%%%%%%%%%%%% Int_t nlines; Int_t i; Int_t n = 5; Int_t m = 20; //%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% //%%%%%%%%%%%%%% Double precision variables %%%%% //%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% // Double_t G2=1; Double_t G4=1; // Double_t G2h1=1; Double_t G4h1=1; // Double_t G2h2=1; Double_t G4h2=1; // Double_t G2h3=1; Double_t G4h3=1; // Double_t G2e; Double_t G4e; // Double_t G2h1e; Double_t G4h1e; // Double_t G2h2e; Double_t G4h2e; // Double_t G2h3e; Double_t G4h3e; // Double_t h0chi; Double_t h1chi; Double_t h2chi; Double_t h3chi; // Double_t h0ndf; Double_t h1ndf; Double_t h2ndf; Double_t h3ndf; // Double_t fAll_val; // //%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% //%%%%%%%%%%%%% User defined fit functions %%%%%%%% //%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% Double_t fAll(Double_t *x, Double_t *par) { if (x[0]<202){ fAll_val = 8* (x0All->Eval(x[0])+par[0]*x2All->Eval(x[0])+par[1]*x4All->Eval(x[0]))/( (x0All->Eval(0)+par[0]*x2All->Eval(0)+par[1]*x4All->Eval(0))+ (x0All->Eval(45)+par[0]*x2All->Eval(45)+par[1]*x4All->Eval(45))*2+ (x0All->Eval(90)+par[0]*x2All->Eval(90)+par[1]*x4All->Eval(90))*2+ (x0All->Eval(135)+par[0]*x2All->Eval(135)+par[1]*x4All->Eval(135))*2+ (x0All->Eval(180)+par[0]*x2All->Eval(180)+par[1]*x4All->Eval(180))); } else if (x[0]<438){ fAll_val = 8* (x0All->Eval(x[0])+par[0]*x2All->Eval(x[0])+par[1]*x4All->Eval(x[0]))/( (x0All->Eval(225)+par[0]*x2All->Eval(225)+par[1]*x4All->Eval(225))+ (x0All->Eval(270)+par[0]*x2All->Eval(270)+par[1]*x4All->Eval(270))*2+ (x0All->Eval(315)+par[0]*x2All->Eval(315)+par[1]*x4All->Eval(315))*2+ (x0All->Eval(360)+par[0]*x2All->Eval(360)+par[1]*x4All->Eval(360))*2+ (x0All->Eval(405)+par[0]*x2All->Eval(405)+par[1]*x4All->Eval(405))); } else if (x[0]<652){ // Angle chosen to minimise discontinuity between -115 and 0 degrees in fitting curve fAll_val = 8* (x0All->Eval(x[0])+par[0]*x2All->Eval(x[0])+par[1]*x4All->Eval(x[0]))/( (x0All->Eval(450)+par[0]*x2All->Eval(450)+par[1]*x4All->Eval(450))+ (x0All->Eval(495)+par[0]*x2All->Eval(495)+par[1]*x4All->Eval(495))*2+ (x0All->Eval(540)+par[0]*x2All->Eval(540)+par[1]*x4All->Eval(540))*2+ (x0All->Eval(585)+par[0]*x2All->Eval(585)+par[1]*x4All->Eval(585))*2+ (x0All->Eval(630)+par[0]*x2All->Eval(630)+par[1]*x4All->Eval(630))); } else { fAll_val = 8* (x0All->Eval(x[0])+par[0]*x2All->Eval(x[0])+par[1]*x4All->Eval(x[0]))/( (x0All->Eval(675)+par[0]*x2All->Eval(675)+par[1]*x4All->Eval(675))+ (x0All->Eval(720)+par[0]*x2All->Eval(720)+par[1]*x4All->Eval(720))*2+ (x0All->Eval(765)+par[0]*x2All->Eval(765)+par[1]*x4All->Eval(765))*2+ (x0All->Eval(810)+par[0]*x2All->Eval(810)+par[1]*x4All->Eval(810))*2+ (x0All->Eval(855)+par[0]*x2All->Eval(855)+par[1]*x4All->Eval(855))); } return fAll_val; } // //%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% void Heliofinal(){ //%%%%%%%%%%%%%% Original data file from the experiment %%%%%%%%%%%%%%%%%// string datafile; ifstream filelist ("Input_files.txt"); if (filelist.is_open()) { while (! filelist.eof() ) { getline (filelist,datafile); } filelist.close(); } else cout << "Unable to open file"; //%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% //%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% TString fname1=datafile+"_PhiCanvas.root"; TString fname2=datafile+"_AllCanvas.root"; TString fname3="Gk_fit_"+datafile+".pdf"; TString fname4="Gk_fit_"+datafile+".txt"; TString fname5="Xk_"+datafile+".txt"; cout << fname1 <Get("AllCanvas"); AllCanvas->Draw(); // // //%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% // TFile* file1 = TFile::Open( fname1, "READ" ); TCanvas * PhiCanvas = (TCanvas*)file1->Get("PhiCanvas"); PhiCanvas->Draw(); // //%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% // TTree *TREE = new TTree("TREE","Xk values from Xk.txt file"); nlines = TREE->ReadFile(fname5,"G:P:X0:X2:X4"); printf(" found %d points\n",nlines); // // //%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% for (i=0;iGetEntry(i); X0[i] = TREE->GetLeaf("X0")->GetValue(0); X2[i] = TREE->GetLeaf("X2")->GetValue(0); X4[i] = TREE->GetLeaf("X4")->GetValue(0); if (i<5){ h1X0[i] = TREE->GetLeaf("X0")->GetValue(0); h1X2[i] = TREE->GetLeaf("X2")->GetValue(0); h1X4[i] = TREE->GetLeaf("X4")->GetValue(0); } else if (i<10){ h2X0[i-5] = TREE->GetLeaf("X0")->GetValue(0); h2X2[i-5] = TREE->GetLeaf("X2")->GetValue(0); h2X4[i-5] = TREE->GetLeaf("X4")->GetValue(0); } else if (i<15) { h3X0[i-10] = TREE->GetLeaf("X0")->GetValue(0); h3X2[i-10] = TREE->GetLeaf("X2")->GetValue(0); h3X4[i-10] = TREE->GetLeaf("X4")->GetValue(0); } else { h4X0[i-15] = TREE->GetLeaf("X0")->GetValue(0); h4X2[i-15] = TREE->GetLeaf("X2")->GetValue(0); h4X4[i-15] = TREE->GetLeaf("X4")->GetValue(0); } } //%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% // TTree *NChoice = new TTree("NChoice","Choose normalisation"); nlines = NChoice->ReadFile("ChooseNormalisation.txt","Pick"); NChoice->GetEntry(0); Int_t Choice = NChoice->GetLeaf("Pick")->GetValue(0); // //%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% // AllCanvas->cd(); // x0All = new TGraph(m,allphi,X0); // x2All = new TGraph(m,allphi,X2); // x4All = new TGraph(m,allphi,X4); // TVirtualPad * pad0 = AllCanvas->cd(); if (pad0) { FAll = new TF1("FAll",fAll,0,855,2); FAll->SetParNames("G2","G4"); FAll->SetParLimits(0,0,1); //Setting parameter limits FAll->SetParLimits(1,0,1); if (Choice==2){ gr0 = (TGraphErrors*)pad0->FindObject("hAlly"); printf("\nAllCanvas - Normalised to 1 for theta = 0\n"); } else if (Choice==1){ gr0 = (TGraphErrors*)pad0->FindObject("hAllx"); printf("\nAllCanvas - No efficiency correction or normalisation\n"); } else { gr0 = (TGraphErrors*)pad0->FindObject("hAll"); printf("\nAllCanvas - Efficiency corrected using DSP values\n"); } if (gr0) { gr0->Fit(FAll,"Q"); G2 = FAll->GetParameter(0); G4 = FAll->GetParameter(1); G2e = FAll->GetParError(0); G4e = FAll->GetParError(1); h0chi = FAll->GetChisquare(); h0ndf = FAll->GetNDF(); printf("\n\n\tG2 = %5.4f +/-%5.4f \n\tG4 = %5.4f +/-%5.4f \n\tChi-squared / NDF = %7.4f/%4.0f \n\n",G2,G2e,G4,G4e,h0chi,h0ndf); // } else { cout << "no graph found" << endl; } } //%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% //%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% AllCanvas->cd(); for (i=0;iSetLineStyle(1); FAllh1->SetLineColor(2); FAllh1->SetLineWidth(3); FAllh1->Draw("CP"); // //%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% //%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% // PhiCanvas->cd(1); // for (i=0;i<5;i++) { ftheta90h0[i]=(h1X0[i]+G2*h1X2[i]+G4*h1X4[i])/(((h1X0[0]+G2*h1X2[0]+G4*h1X4[0])+2*(h1X0[1]+G2*h1X2[1]+G4*h1X4[1])+2*(h1X0[2]+G2*h1X2[2]+G4*h1X4[2])+2*(h1X0[3]+G2*h1X2[3]+G4*h1X4[3])+(h1X0[4]+G2*h1X2[4]+G4*h1X4[4]))/8); ftheta90h1[i]=(h1X0[i]+h1X2[i]+h1X4[i])/(((h1X0[0]+h1X2[0]+h1X4[0])+2*(h1X0[1]+h1X2[1]+h1X4[1])+2*(h1X0[2]+h1X2[2]+h1X4[2])+2*(h1X0[3]+h1X2[3]+h1X4[3])+(h1X0[4]+h1X2[4]+h1X4[4]))/8); ftheta90h2[i]=(h1X0[i]+G2h2*h1X2[i]+G4h2*h1X4[i])/(((h1X0[0]+G2h2*h1X2[0]+G4h2*h1X4[0])+2*(h1X0[1]+G2h2*h1X2[1]+G4h2*h1X4[1])+2*(h1X0[2]+G2h2*h1X2[2]+G4h2*h1X4[2])+2*(h1X0[3]+G2h2*h1X2[3]+G4h2*h1X4[3])+(h1X0[4]+G2h2*h1X2[4]+G4h2*h1X4[4]))/8); ftheta90h3[i]=(h1X0[i]+G2h3*h1X2[i]+G4h3*h1X4[i])/(((h1X0[0]+G2h3*h1X2[0]+G4h3*h1X4[0])+2*(h1X0[1]+G2h3*h1X2[1]+G4h3*h1X4[1])+2*(h1X0[2]+G2h3*h1X2[2]+G4h3*h1X4[2])+2*(h1X0[3]+G2h3*h1X2[3]+G4h3*h1X4[3])+(h1X0[4]+G2h3*h1X2[4]+G4h3*h1X4[4]))/8); } // TGraph *FTheta90h0 = new TGraph(n,phi,ftheta90h0); FTheta90h0->SetLineStyle(1); FTheta90h0->SetLineColor(2); FTheta90h0->SetLineWidth(3); FTheta90h0->Draw("CP"); // TGraph *FTheta90h1 = new TGraph(n,phi,ftheta90h1); FTheta90h1->SetLineStyle(2); FTheta90h1->SetLineColor(4); FTheta90h1->SetLineWidth(3); FTheta90h1->Draw("CP"); // //%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% //%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% // PhiCanvas->cd(2); // for (i=0;i<5;i++) { ftheta135h0[i]=(h2X0[i]+G2*h2X2[i]+G4*h2X4[i])/(((h2X0[0]+G2*h2X2[0]+G4*h2X4[0])+2*(h2X0[1]+G2*h2X2[1]+G4*h2X4[1])+2*(h2X0[2]+G2*h2X2[2]+G4*h2X4[2])+2*(h2X0[3]+G2*h2X2[3]+G4*h2X4[3])+(h2X0[4]+G2*h2X2[4]+G4*h2X4[4]))/8); ftheta135h1[i]=(h2X0[i]+h2X2[i]+h2X4[i])/(((h2X0[0]+h2X2[0]+h2X4[0])+2*(h2X0[1]+h2X2[1]+h2X4[1])+2*(h2X0[2]+h2X2[2]+h2X4[2])+2*(h2X0[3]+h2X2[3]+h2X4[3])+(h2X0[4]+h2X2[4]+h2X4[4]))/8); ftheta135h2[i]=(h2X0[i]+G2h2*h2X2[i]+G4h2*h2X4[i])/(((h2X0[0]+G2h2*h2X2[0]+G4h2*h2X4[0])+2*(h2X0[1]+G2h2*h2X2[1]+G4h2*h2X4[1])+2*(h2X0[2]+G2h2*h2X2[2]+G4h2*h2X4[2])+2*(h2X0[3]+G2h2*h2X2[3]+G4h2*h2X4[3])+(h2X0[4]+G2h2*h2X2[4]+G4h2*h2X4[4]))/8); ftheta135h3[i]=(h2X0[i]+G2h3*h2X2[i]+G4h3*h2X4[i])/(((h2X0[0]+G2h3*h2X2[0]+G4h3*h2X4[0])+2*(h2X0[1]+G2h3*h2X2[1]+G4h3*h2X4[1])+2*(h2X0[2]+G2h3*h2X2[2]+G4h3*h2X4[2])+2*(h2X0[3]+G2h3*h2X2[3]+G4h3*h2X4[3])+(h2X0[4]+G2h3*h2X2[4]+G4h3*h2X4[4]))/8); } // TGraph *FTheta135h0 = new TGraph(n,phi,ftheta135h0); FTheta135h0->SetLineStyle(1); FTheta135h0->SetLineColor(2); FTheta135h0->SetLineWidth(2); FTheta135h0->Draw("CP"); // TGraph *FTheta135h1 = new TGraph(n,phi,ftheta135h1); FTheta135h1->SetLineStyle(2); FTheta135h1->SetLineColor(4); FTheta135h1->SetLineWidth(2); FTheta135h1->Draw("CP"); // //%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% //%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% // PhiCanvas->cd(3); // for (i=0;i<5;i++) { fthetaNeg115h0[i]=(h3X0[i]+G2*h3X2[i]+G4*h3X4[i])/(((h3X0[0]+G2*h3X2[0]+G4*h3X4[0])+2*(h3X0[1]+G2*h3X2[1]+G4*h3X4[1])+2*(h3X0[2]+G2*h3X2[2]+G4*h3X4[2])+2*(h3X0[3]+G2*h3X2[3]+G4*h3X4[3])+(h3X0[4]+G2*h3X2[4]+G4*h3X4[4]))/8); fthetaNeg115h1[i]=(h3X0[i]+h3X2[i]+h3X4[i])/(((h3X0[0]+h3X2[0]+h3X4[0])+2*(h3X0[1]+h3X2[1]+h3X4[1])+2*(h3X0[2]+h3X2[2]+h3X4[2])+2*(h3X0[3]+h3X2[3]+h3X4[3])+(h3X0[4]+h3X2[4]+h3X4[4]))/8); fthetaNeg115h2[i]=(h3X0[i]+G2h2*h3X2[i]+G4h2*h3X4[i])/(((h3X0[0]+G2h2*h3X2[0]+G4h2*h3X4[0])+2*(h3X0[1]+G2h2*h3X2[1]+G4h2*h3X4[1])+2*(h3X0[2]+G2h2*h3X2[2]+G4h2*h3X4[2])+2*(h3X0[3]+G2h2*h3X2[3]+G4h2*h3X4[3])+(h3X0[4]+G2h2*h3X2[4]+G4h2*h3X4[4]))/8); fthetaNeg115h3[i]=(h3X0[i]+G2h3*h3X2[i]+G4h3*h3X4[i])/(((h3X0[0]+G2h3*h3X2[0]+G4h3*h3X4[0])+2*(h3X0[1]+G2h3*h3X2[1]+G4h3*h3X4[1])+2*(h3X0[2]+G2h3*h3X2[2]+G4h3*h3X4[2])+2*(h3X0[3]+G2h3*h3X2[3]+G4h3*h3X4[3])+(h3X0[4]+G2h3*h3X2[4]+G4h3*h3X4[4]))/8); } // TGraph *FThetaNeg115h0 = new TGraph(n,phi,fthetaNeg115h0); FThetaNeg115h0->SetLineStyle(1); FThetaNeg115h0->SetLineColor(2); FThetaNeg115h0->SetLineWidth(2); FThetaNeg115h0->Draw("CP"); // TGraph *FThetaNeg115h1 = new TGraph(n,phi,fthetaNeg115h1); FThetaNeg115h1->SetLineStyle(2); FThetaNeg115h1->SetLineColor(4); FThetaNeg115h1->SetLineWidth(2); FThetaNeg115h1->Draw("CP"); // //%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% //%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% // PhiCanvas->cd(4); // for (i=0;i<5;i++) { fthetaZeroh0[i]=(h4X0[i]+G2*h4X2[i]+G4*h4X4[i])/(((h4X0[0]+G2*h4X2[0]+G4*h4X4[0])+2*(h4X0[1]+G2*h4X2[1]+G4*h4X4[1])+2*(h4X0[2]+G2*h4X2[2]+G4*h4X4[2])+2*(h4X0[3]+G2*h4X2[3]+G4*h4X4[3])+(h4X0[4]+G2*h4X2[4]+G4*h4X4[4]))/8); fthetaZeroh1[i]=(h4X0[i]+h4X2[i]+h4X4[i])/(((h4X0[0]+h4X2[0]+h4X4[0])+2*(h4X0[1]+h4X2[1]+h4X4[1])+2*(h4X0[2]+h4X2[2]+h4X4[2])+2*(h4X0[3]+h4X2[3]+h4X4[3])+(h4X0[4]+h4X2[4]+h4X4[4]))/8); fthetaZeroh2[i]=(h4X0[i]+G2h2*h4X2[i]+G4h2*h4X4[i])/(((h4X0[0]+G2h2*h4X2[0]+G4h2*h4X4[0])+2*(h4X0[1]+G2h2*h4X2[1]+G4h2*h4X4[1])+2*(h4X0[2]+G2h2*h4X2[2]+G4h2*h4X4[2])+2*(h4X0[3]+G2h2*h4X2[3]+G4h2*h4X4[3])+(h4X0[4]+G2h2*h4X2[4]+G4h2*h4X4[4]))/8); fthetaZeroh3[i]=(h4X0[i]+G2h3*h4X2[i]+G4h3*h4X4[i])/(((h4X0[0]+G2h3*h4X2[0]+G4h3*h4X4[0])+2*(h4X0[1]+G2h3*h4X2[1]+G4h3*h4X4[1])+2*(h4X0[2]+G2h3*h4X2[2]+G4h3*h4X4[2])+2*(h4X0[3]+G2h3*h4X2[3]+G4h3*h4X4[3])+(h4X0[4]+G2h3*h4X2[4]+G4h3*h4X4[4]))/8); } // TGraph *FThetaZeroh0 = new TGraph(n,phi,fthetaZeroh0); FThetaZeroh0->SetLineStyle(1); FThetaZeroh0->SetLineColor(2); FThetaZeroh0->SetLineWidth(2); FThetaZeroh0->Draw("CP"); // TGraph *FThetaZeroh1 = new TGraph(n,phi,fthetaZeroh1); FThetaZeroh1->SetLineStyle(2); FThetaZeroh1->SetLineColor(4); FThetaZeroh1->SetLineWidth(2); FThetaZeroh1->Draw("CP"); // PhiCanvas->SaveAs(fname3); // ofstream gk_file; gk_file.open (fname4); gk_file << "############################################" << endl; gk_file << "####\t"+datafile+"\t####" << endl; gk_file << "############################################" << endl; gk_file << "#" << endl; gk_file << Form("\tG2 = %5.4f +/-%5.4f \n\tG4 = %5.4f +/-%5.4f \n\tChi-squared / NDF = %7.4f/%4.0f ",G2,G2e,G4,G4e,h0chi,h0ndf) << endl; gk_file << "#" << endl; gk_file << "############################################" << endl; gk_file.close (); // }