#include "TMultiGraph.h" #include "TGraph.h" #include "TH1F.h" #include void bpm_plot(){ TCanvas *c1 = new TCanvas("c1","multigraph",200,10,700,500); c1->Divide(2,2,0.0001,0.0001,10); for(int ip=0;ip<4;ip++){ fsubpad = (TPad*)c1->GetPad(ip+1); // settare i colori dei Pad fsubpad->SetFillColor(10); fsubpad->SetFrameFillColor(10); fsubpad->SetFrameBorderMode(0); fsubpad->SetBorderMode(0); fsubpad->SetGrid(); fsubpad = 0; } char fname[100],gname[100],gname2[100]; double x,y,dp,s; double xx[78],yy[78],dpp[78],ss[78]; double xc[41],yc[41],dpc[41],sc[41]; double xf[41],yf[41],dpf[41],sf[41]; TMultiGraph *mgxc = new TMultiGraph(); TMultiGraph *mgyc = new TMultiGraph(); TMultiGraph *mgxf = new TMultiGraph(); TMultiGraph *mgyf = new TMultiGraph(); TGraph *gxc[52], *gyc[52]; for(int i=0;i<52;i++){ sprintf(fname,"dp_bpm_%d",i+1); ifstream in(fname); int n=0; while (in >> s >> x >> y >> dp){ sc[n]=s; xc[n]=x; yc[n]=y; dpc[n]=dp; n++; } gxc[i] = new TGraph(41,dpc,xc); gyc[i] = new TGraph(41,dpc,yc); gxc[i]->SetMarkerColor(i+1); gxc[i]->SetLineColor(i+1); gxc[i]->SetLineWidth(3); gyc[i]->SetMarkerColor(i+1); gyc[i]->SetLineColor(i+1); gyc[i]->SetLineWidth(3); // gr1->SetMarkerStyle(21); mgxc->Add(gxc[i]); mgyc->Add(gyc[i]); in.close(); } TGraph *gxf[26], *gyf[26]; for(int i=0;i<26;i++){ sprintf(fname,"dp_bpm_%d",(52+i+1)); ifstream in(fname); int n=0; while ( in >> s >> x >> y >> dp ){ sf[n]=s; xf[n]=x; yf[n]=y; dpf[n]=dp; n++; } gxf[i]= new TGraph(41,dpf,xf); gyf[i]= new TGraph(41,dpf,yf); gxf[i]->SetMarkerColor(i+1); gxf[i]->SetLineColor(i+1); gxf[i]->SetLineWidth(3); gyf[i]->SetMarkerColor(i+1); gyf[i]->SetLineColor(i+1); gyf[i]->SetLineWidth(3); mgxf->Add(gxf[i]); mgyf->Add(gyf[i]); in.close(); } c1->cd(1); mgxc->SetTitle("COLLIMATION section: horizontal bpm readings"); mgxc->Draw("APL"); TLegend *lego = new TLegend(0.9,0.9,0.99,0.99); for(int j=0;j<52;j++){ sprintf(fname,"dp_bpm_%d ",j+1); lego->AddEntry(gxc[j],fname,"lp"); } lego->Draw(); c1->cd(2); mgyc->SetTitle("COLLIMATION section: vertical bpm readings"); mgyc->Draw("APL"); TLegend *lego1 = new TLegend(0.9,0.9,0.99,0.99); for(int j=0;j<52;j++){ sprintf(fname,"dp_bpm_%g",j+1); lego1->AddEntry(gyc[j],fname,"lp"); } lego1->Draw(); c1->cd(3); mgxf->SetTitle("Final Focus section: horizontal bpm readings"); mgxf->Draw("APL"); TLegend *lego2 = new TLegend(0.9,0.9,0.99,0.99); for(int j=0;j<26;j++){ sprintf(fname,"dp_bpm_%d",(52+j+1)); lego2->AddEntry(gxf[j],fname,"lp"); } lego2->Draw(); c1->cd(4); mgyf->SetTitle("Final Focus section: vertical bpm readings"); mgyf->Draw("APL"); TLegend *lego3 = new TLegend(0.9,0.9,0.99,0.99); for(int j=0;j<26;j++){ sprintf(fname,"dp_bpm_%d",(52+j+1)); lego3->AddEntry(gyf[j],fname,"lp"); } lego3->Draw(); TMultiGraph *mgx = new TMultiGraph(); TMultiGraph *mgy = new TMultiGraph(); TGraph *gx[41], *gy[41]; for(int i=0;i<41;i++){ double gf=0.986 +0.0005*i; sprintf(fname,"bpm_readings_%g",gf); ifstream in(fname); int n=0; while (in >> s >> x >> y >> dp){ ss[n]=s; xx[n]=x; yy[n]=y; dpp[n]=dp; n++; } gx[i] = new TGraph(78,ss,xx); gy[i] = new TGraph(78,ss,yy); if(i==0){ gx[i]->SetMarkerColor(1); gx[i]->SetLineColor(1); gx[i]->SetLineWidth(3); gy[i]->SetMarkerColor(1); gy[i]->SetLineColor(1); gy[i]->SetLineWidth(3); } else if (i==10) { gx[i]->SetMarkerColor(7); gx[i]->SetLineColor(7); gx[i]->SetLineWidth(3); gy[i]->SetMarkerColor(7); gy[i]->SetLineColor(7); gy[i]->SetLineWidth(3); } else { gx[i]->SetMarkerColor(i); gx[i]->SetLineColor(i); gx[i]->SetLineWidth(3); gy[i]->SetMarkerColor(i); gy[i]->SetLineColor(i); gy[i]->SetLineWidth(3); // gr1->SetMarkerStyle(21); } if(i%2==0){ mgx->Add(gx[i]); mgy->Add(gy[i]); } in.close(); } TCanvas *c2 = new TCanvas("c2","multigraph",200,10,700,500); c2->Divide(1,2,0.0001,0.0001,10); for(int ip=0;ip<2;ip++){ fsubpad = (TPad*)c2->GetPad(ip+1); // settare i colori dei Pad fsubpad->SetFillColor(10); fsubpad->SetFrameFillColor(10); fsubpad->SetFrameBorderMode(0); fsubpad->SetBorderMode(0); fsubpad->SetGrid(); fsubpad = 0; } c2->cd(1); mgx->SetTitle("CLIC BDS: horizontal bpm readings"); mgx->Draw("APL"); TLegend *leg = new TLegend(0.9,0.9,0.99,0.99); for(int j=0;j<41;j++){ double gf=0.986 +0.0005*j; if(j%2==0){ sprintf(fname,"E/E_{0} = %g ",gf); leg->AddEntry(gx[j],fname,"lp"); } } leg->Draw(); c2->cd(2); mgy->SetTitle("CLIC BDS: vertical bpm readings"); mgy->Draw("APL"); TLegend *leg2 = new TLegend(0.9,0.9,0.99,0.99); for(int j=0;j<41;j++){ double gf=0.986 +0.0005*j; if(j%2==0){ sprintf(fname,"E/E_{0} = %g ",gf); leg2->AddEntry(gy[j],fname,"lp"); } } leg2->Draw(); }