/// \file /// \ingroup tutorial_hist /// \notebook -js /// Illustrate use of the TH1::GetCumulative method. /// /// \macro_image /// \macro_code /// /// \author M. Schiller #include #include #include "TH1.h" #include "TH1D.h" #include "TCanvas.h" #include "TRandom.h" #include #include #include #include #include #include #include void original() { TCanvas* c = new TCanvas("c","c",1000,700); ifstream inp; Int_t Y = 5; Int_t xcoil = 4; Int_t xfil = 6; Float_t margin = 0.5; Float_t MeanCoil[4] = {0.0,0.0,0.0,0.0}; Float_t MinCoil[xcoil]; Float_t MaxCoil[xcoil]; Float_t Max,Min; Float_t YCoilLow[Y]; Float_t YCoilMedium[Y]; Float_t YCoilHigh[Y]; Float_t YCoilExtraHigh[Y]; Float_t XCoil[xcoil]; Float_t Y2DRef[Y]; Float_t MeanFil[6] = {0.0,0.0,0.0,0.0,0.0,0.0}; Float_t MinFil[xfil]; Float_t MaxFil[xfil]; Float_t YFilExtraLow[Y]; Float_t YFilLow[Y]; Float_t YFilMediumMinus[Y]; Float_t YFilMediumPlus[Y]; Float_t YFilHigh[Y]; Float_t YFilExtraHigh[Y]; Float_t XFil[xfil]; Int_t i; Float_t x,y; //-----------------------------------------------------------Reference 2D //Read File 20000_stats inp.open("20000_stats.txt"); for (i = 0; i< Y; i++){ inp >> y; Y2DRef[i] = y; } inp.close(); //-----------------------------------------------------------Coil Int_t position = 0; //Coil Low inp.open("Coil_Low.txt"); for (i = 0; i< Y; i++){ inp >> x >> y; XCoil[position] = x; YCoilLow[i] = y; MeanCoil[position] += y; if (i == 0) MinCoil[position] = y; else if (MinCoil[position] > y) MinCoil[position] = y; if (i == 0) MaxCoil[position] = y; else if (MaxCoil[position] < y) MaxCoil[position] = y; if (i == 0){ Min = y; Max = y; }else{ if (Min > y) Min = y; if (Max < y) Max = y; } } inp.close(); MeanCoil[position] /= Y; position = 1; //Coil Medium inp.open("Coil_Medium.txt"); for (i = 0; i< Y; i++){ inp >> x >> y; XCoil[position] = x; YCoilMedium[i] = y; MeanCoil[position] += y; if (i == 0) MinCoil[position] = y; else if (MinCoil[position] > y) MinCoil[position] = y; if (i == 0) MaxCoil[position] = y; else if (MaxCoil[position] < y) MaxCoil[position] = y; if (Min > y) Min = y; if (Max < y) Max = y; } inp.close(); MeanCoil[position] /= Y; position = 2; //Coil High inp.open("Coil_High.txt"); for (i = 0; i< Y; i++){ inp >> x >> y; XCoil[position] = x; YCoilHigh[i] = y; MeanCoil[position] += y; if (i == 0) MinCoil[position] = y; else if (MinCoil[position] > y) MinCoil[position] = y; if (i == 0) MaxCoil[position] = y; else if (MaxCoil[position] < y) MaxCoil[position] = y; if (Min > y) Min = y; if (Max < y) Max = y; } inp.close(); MeanCoil[position] /= Y; position = 3; //Coil High inp.open("Coil_ExtraHigh.txt"); for (i = 0; i< Y; i++){ inp >> x >> y; XCoil[position] = x; YCoilExtraHigh[i] = y; MeanCoil[position] += y; if (i == 0) MinCoil[position] = y; else if (MinCoil[position] > y) MinCoil[position] = y; if (i == 0) MaxCoil[position] = y; else if (MaxCoil[position] < y) MaxCoil[position] = y; if (Min > y) Min = y; if (Max < y) Max = y; } inp.close(); MeanCoil[position] /= Y; //-----------------------------------------------------------Filament position = 0; //Fil ExtraLow inp.open("Fil_ExtraLow.txt"); for (i = 0; i< Y; i++){ inp >> x >> y; XFil[position] = x; YFilExtraLow[i] = y; MeanFil[position] += y; if (i == 0) MinFil[position] = y; else if (MinFil[position] > y) MinFil[position] = y; if (i == 0) MaxCoil[position] = y; else if (MaxFil[position] < y) MaxFil[position] = y; if (Min > y) Min = y; if (Max < y) Max = y; } inp.close(); MeanFil[position] /= Y; position = 1; //Fil Low inp.open("Fil_Low.txt"); for (i = 0; i< Y; i++){ inp >> x >> y; XFil[position] = x; YFilLow[i] = y; MeanFil[position] += y; if (i == 0) MinFil[position] = y; else if (MinFil[position] > y) MinFil[position] = y; if (i == 0) MaxCoil[position] = y; else if (MaxFil[position] < y) MaxFil[position] = y; if (Min > y) Min = y; if (Max < y) Max = y; } inp.close(); MeanFil[position] /= Y; position = 2; //Fil Medium- inp.open("Fil_Medium-.txt"); for (i = 0; i< Y; i++){ inp >> x >> y; XFil[position] = x; YFilMediumMinus[i] = y; MeanFil[position] += y; if (i == 0) MinFil[position] = y; else if (MinFil[position] > y) MinFil[position] = y; if (i == 0) MaxCoil[position] = y; else if (MaxFil[position] < y) MaxFil[position] = y; if (Min > y) Min = y; if (Max < y) Max = y; } inp.close(); MeanFil[position] /= Y; position = 3; //Fil Medium+ inp.open("Fil_Medium+.txt"); for (i = 0; i< Y; i++){ inp >> x >> y; XFil[position] = x; YFilMediumPlus[i] = y; MeanFil[position] += y; if (i == 0) MinFil[position] = y; else if (MinFil[position] > y) MinFil[position] = y; if (i == 0) MaxFil[position] = y; else if (MaxFil[position] < y) MaxFil[position] = y; if (Min > y) Min = y; if (Max < y) Max = y; } inp.close(); MeanFil[position] /= Y; position = 4; //Fil High inp.open("Fil_High.txt"); for (i = 0; i< Y; i++){ inp >> x >> y; XFil[position] = x; YFilHigh[i] = y; MeanFil[position] += y; if (i == 0) MinFil[position] = y; else if (MinFil[position] > y) MinFil[position] = y; if (i == 0) MaxFil[position] = y; else if (MaxFil[position] < y) MaxFil[position] = y; if (Min > y) Min = y; if (Max < y) Max = y; } inp.close(); MeanFil[position] /= Y; position = 5; //Fil ExtraHigh inp.open("Fil_ExtraHigh.txt"); for (i = 0; i< Y; i++){ inp >> x >> y; XFil[position] = x; YFilExtraHigh[i] = y; MeanFil[position] += y; if (i == 0) MinFil[position] = y; else if (MinFil[position] > y) MinFil[position] = y; if (i == 0) MaxFil[position] = y; else if (MaxFil[position] < y) MaxFil[position] = y; if (Min > y) Min = y; if (Max < y) Max = y; } inp.close(); MeanFil[position] /= Y; Color_t Coil = kAzure; Color_t Fil = kPink; //--------------------------------------------------------MultiGraph TGraph *GMeanCoil = new TGraph(xcoil,XCoil,MeanCoil); GMeanCoil->SetLineWidth(3); GMeanCoil->SetMarkerSize(1); GMeanCoil->SetMarkerColor(Coil-1); GMeanCoil->SetLineColor(Coil-1); //GMeanCoil->GetYaxis()->SetRangeUser(Min-margin,Max+margin); //GMeanCoil->GetXaxis()->SetRangeUser(2.0-margin,XCoil[3]+margin); TGraph *GMeanFil = new TGraph(xfil,XFil,MeanFil); GMeanFil->SetLineWidth(3); GMeanFil->SetMarkerSize(1); GMeanFil->SetMarkerColor(Fil-1); GMeanFil->SetLineColor(Fil-1); //GMeanFil->GetYaxis()->SetRangeUser(Min-margin,Max+margin); //GMeanFil->GetXaxis()->SetRangeUser(2.0-margin,XCoil[3]+margin); auto g = new TMultiGraph(); g->Add(GMeanCoil); g->Add(GMeanFil); g->Draw("APL"); g->SetTitle("Optimization with 20 000 Samples"); g->GetYaxis()->SetRangeUser(Min-margin,Max+margin); g->GetXaxis()->SetRangeUser(2.0-margin,XCoil[3]+margin); g->GetXaxis()->SetTitle("Amplitude of deviation in mm (average)"); g->GetXaxis()->CenterTitle(); g->GetXaxis()->SetTitleSize(0.05); g->GetXaxis()->SetTickLength(-0.02); g->GetXaxis()->SetLabelSize(0.05); g->GetXaxis()->SetLabelOffset(0.02); g->GetXaxis()->SetTitleOffset(1.4); g->GetYaxis()->SetTitle("Penalty Value"); g->GetYaxis()->CenterTitle(); g->GetYaxis()->SetTitleSize(0.05); g->GetYaxis()->SetTickLength(-0.013); g->GetYaxis()->SetLabelSize(0.05); g->GetYaxis()->SetLabelOffset(0.013); g->GetYaxis()->SetTitleOffset(.9); g->DrawClone("APL"); gPad->SetGrid(1,1); TLine *l = new TLine(2.0-margin,9.278828,XCoil[3]+margin,9.278828); l->SetLineColor(14); l->SetLineWidth(2); l->SetLineStyle(7); l->Draw(); TMarker *m,*n,*o; Int_t MarkStyl = 20; Float_t MarkSiz = 1.9; for (i=0; iSetMarkerStyle(MarkStyl); m->SetMarkerSize(MarkSiz); m->SetMarkerColor(30); if (y < 5.6) m->SetMarkerColor(46); else n = m; m->Draw("same"); y = YCoilLow[i]; m = new TMarker(XCoil[0],y, 7); m->SetMarkerStyle(MarkStyl); m->SetMarkerSize(MarkSiz); m->SetMarkerColor(Coil); if (y == MinCoil[0]) m->SetMarkerColor(Coil+1); else n = m; m->Draw("same"); y = YCoilMedium[i]; m = new TMarker(XCoil[1],y, 7); m->SetMarkerStyle(MarkStyl); m->SetMarkerSize(MarkSiz); m->SetMarkerColor(Coil); if (y == MinCoil[1]) m->SetMarkerColor(Coil+1); m->Draw("same"); y = YCoilHigh[i]; m = new TMarker(XCoil[2],y, 7); m->SetMarkerStyle(MarkStyl); m->SetMarkerSize(MarkSiz); m->SetMarkerColor(Coil); if (y == MinCoil[2]) m->SetMarkerColor(Coil+1); m->Draw("same"); y = YCoilExtraHigh[i]; m = new TMarker(XCoil[3],y, 7); m->SetMarkerStyle(MarkStyl); m->SetMarkerSize(MarkSiz); m->SetMarkerColor(Coil); if (y == MinCoil[3]) m->SetMarkerColor(Coil+1); m->Draw("same"); y = YFilExtraLow[i]; m = new TMarker(XFil[0],y, 7); m->SetMarkerStyle(MarkStyl); m->SetMarkerSize(MarkSiz); m->SetMarkerColor(Fil); if (y == MinFil[0]) m->SetMarkerColor(Fil+1); m->Draw("same"); y = YFilLow[i]; m = new TMarker(XFil[1],y, 7); m->SetMarkerStyle(MarkStyl); m->SetMarkerSize(MarkSiz); m->SetMarkerColor(Fil); if (y == MinFil[1]) m->SetMarkerColor(Fil+1); m->Draw("same"); y = YFilMediumMinus[i]; m = new TMarker(XFil[2],y, 7); m->SetMarkerStyle(MarkStyl); m->SetMarkerSize(MarkSiz); m->SetMarkerColor(Fil); if (y == MinFil[2]) m->SetMarkerColor(Fil+1); m->Draw("same"); y = YFilMediumPlus[i]; m = new TMarker(XFil[3],y, 7); m->SetMarkerStyle(MarkStyl); m->SetMarkerSize(MarkSiz); m->SetMarkerColor(Fil); if (y == MinFil[3]) m->SetMarkerColor(Fil+1); else o = m; m->Draw("same"); y = YFilHigh[i]; m = new TMarker(XFil[4],y, 7); m->SetMarkerStyle(MarkStyl); m->SetMarkerSize(MarkSiz); m->SetMarkerColor(Fil); if (y == MinFil[4]) m->SetMarkerColor(Fil+1); else o = m; m->Draw("same"); y = YFilExtraHigh[i]; m = new TMarker(XFil[5],y, 7); m->SetMarkerStyle(MarkStyl); m->SetMarkerSize(MarkSiz); m->SetMarkerColor(Fil); if (y == MinFil[5]) m->SetMarkerColor(Fil+1); else o = m; m->Draw("same"); } auto legend = new TLegend(0.11,0.736,0.43,0.886); legend->AddEntry(n,"Coil Optimization","P"); legend->AddEntry(o,"Filament Optimization","P"); legend->AddEntry(l,"Reference case","L"); legend->SetMargin(0.23); legend->SetTextSize(0.039); legend->Draw(); c->Modified(); gPad->Print("StatsFull.tex"); gPad->Print("StatsFull.pdf"); }