int Inverse(double A[4][4],double B[4][4]){ int i,j,k; double tmp_a[4][4]; double inv_a[4][4]; double buf; int n=4; for(i=0;iSetPoint(i,readx,ready,readz); tr0->SetPoint(kk,readz,readx,ready); //trj_line->SetPoint(i,readx,ready,readz); trj_line->SetPoint(kk,readz,readx,ready); } if(i<11){ x[i]=readx; y[i]=ready; z[i]=readz; vx00[i]=readVx; vy00[i]=readVy; vz00[i]=readVz; if(i==0){ vx0=readVx; vy0=readVy; vz0=readVz; x0=readx; y0=ready; z0=readz; } vx[i]=readVx/(double)readvv; vy[i]=readVy/(double)readvv; vz[i]=readVz/(double)readvv; printf("i=%d\n",i); } if(i%1==0)kk++; i++; } fclose(infile); int numi=11; double rnx[16],rny[16],rnz[16],rr[16],ttt0,pp1; for(int i=0;iSetStyle("Plain"); gROOT->ForceStyle(); gStyle->SetOptStat(0); gStyle->SetCanvasBorderMode(0); gStyle->SetPadColor(0); gStyle->SetTitleFillColor(0); gStyle->SetStatColor(0); double xxp[20][2]; double yyp[20][2]; double xy[20][2]; double xpyp[20][2]; char com[20][128]; sprintf(com[0],"y=%d cm",fnm[0]); sprintf(com[1],"y=%d cm",fnm[1]); int color=0; char fc[32]; TCanvas *c16 = new TCanvas("c16","test_1",300,100,800,800); c16->Divide(3,2); TH2F *frame16[6]; for(int i=0;i<6;++i){ // lcom[i].SetTextSize(0.07); sprintf(fc,"frame16_%d",i); if(y0>110 && i<3)frame16[i] = new TH2F(fc," ",10, -6, 6, 10, -0.06,0.06); if(y0<110 && i<3)frame16[i] = new TH2F(fc," ",10, -6, 6, 10, -0.06,0.06); if(i==3)frame16[i] = new TH2F(fc," ",10, -6, 6, 10, -6,6); if(i==4)frame16[i] = new TH2F(fc," ",10, -0.05, 0.05, 10, -0.05,0.05); if(i==5)frame16[i] = new TH2F(fc," ",10, -5, 5, 10, -5,5); frame16[i]->SetTitle(""); frame16[i]->GetXaxis()->SetLabelSize(0.04); frame16[i]->GetXaxis()->SetTitleSize(0.05); frame16[i]->GetYaxis()->SetLabelSize(0.04); frame16[i]->GetYaxis()->SetTitleSize(0.06); if(i==0){ frame16[0]->GetXaxis()->SetTitle("X[cm]"); frame16[0]->GetYaxis()->SetTitle("#deltaV_{X}/V"); } if(i==1){ frame16[1]->GetXaxis()->SetTitle("Y[cm]"); frame16[1]->GetYaxis()->SetTitle("#deltaV_{Y}/V"); } if(i==2){ frame16[2]->GetXaxis()->SetTitle("Z[cm]"); frame16[2]->GetYaxis()->SetTitle("#deltaV_{Z}/V"); } if(i==3){ frame16[3]->GetXaxis()->SetTitle("X[cm]"); frame16[3]->GetYaxis()->SetTitle("Y[cm]"); } if(i==4){ frame16[4]->GetXaxis()->SetTitle("#deltaV_{X}/V"); frame16[4]->GetYaxis()->SetTitle("#deltaV_{Y}/V"); } frame16[i]->GetYaxis()->SetTitleOffset(1.5); frame16[i]->SetStats(0); } c16->cd(1); c16->SetLeftMargin(0.16); c16->SetRightMargin(0.05); frame16[0]->Draw(); printf("ppp\n"); int fit_frag=1; double par0=1; TF1 *funcxx[20]; char ff[20]; gr_txx->SetMarkerStyle(9); gr_txx->SetMarkerColor(2); gr_txx->SetLineColor(2); gr_txx->Draw("p"); c16->SetGridx(); c16->SetGridy(); //lcom[0].DrawLatex(0,ymax0[0][0]*0.9,com[0]); printf("ppp\n"); c16->cd(2); c16->SetLeftMargin(0.16); c16->SetRightMargin(0.05); frame16[1]->Draw(); gr_tyy->SetMarkerStyle(7); gr_tyy->SetMarkerColor(2); gr_tyy->SetLineColor(2); gr_tyy->Draw("p"); c16->SetGridx(); c16->SetGridy(); printf("ppp\n"); c16->cd(3); c16->SetLeftMargin(0.16); c16->SetRightMargin(0.05); frame16[2]->Draw(); color=0; c16->SetGridx();c16->SetGridy(); //lcom[2].DrawLatex(0,ymax0[2]*0.9,com[2]); c16->cd(4); c16->SetLeftMargin(0.16); c16->SetRightMargin(0.05); frame16[3]->Draw(); gr_txy->SetMarkerStyle(7); gr_txy->SetMarkerColor(2); gr_txy->SetLineColor(2); gr_txy->Draw("p"); c16->SetGridx(); c16->SetGridy(); c16->cd(5); c16->SetLeftMargin(0.16); c16->SetRightMargin(0.05); frame16[4]->Draw(); gr_tpxpy->SetMarkerStyle(7); gr_tpxpy->SetMarkerColor(2); gr_tpxpy->SetLineColor(2); gr_tpxpy->Draw("p"); c16->SetGridx(); c16->SetGridy(); ///////////////////////////////////////////////////// ///////////create input////////// double rz,rvz; double rrx[100*2],rry[100*2],rrvx[100*2],rrvy[100*2],rrz[100*2],rrvz[100*2]; rz=0;rvz=0; FILE *ofileT; char onameS[256]; sprintf(onameS,"InputTest_Lsol_XY_line4.txt");// ofileT=fopen(onameS,"w"); double fac=0.; for(int i=0;iSetPoint(i,zz,xx,yy); vxx=rz*svx+vx0; vyy=rz*svy+vy0; vzz=rz*svz+vz0; rrx[i]=tdx[i]*Minv[0][0]+tdy[i]*Minv[0][1]+0*Minv[0][2]; rry[i]=tdx[i]*Minv[1][0]+tdy[i]*Minv[1][1]+0*Minv[1][2]; rrz[i]=tdx[i]*Minv[2][0]+tdy[i]*Minv[2][1]+0*Minv[2][2]; // printf("%d,%9.8e,%9.8e,%9.8e\n",i,tdx[i],tdy[i],tdz[i]); rrx[i]=rrx[i]+xx; rry[i]=rry[i]+yy; rrz[i]=rrz[i]+zz; //dist->SetPoint(i,rrz[i],rrx[i],rry[i]); printf("%d,%9.8e,%9.8e,%9.8e\n",i,rrx[i],rry[i],rrz[i]); rrvx[i]=(tpx[i]*Minv[0][0]+tpy[i]*Minv[0][1]+0*Minv[0][2])*cV0[0]; rrvy[i]=(tpx[i]*Minv[1][0]+tpy[i]*Minv[1][1]+0*Minv[1][2])*cV0[0]; rrvz[i]=(tpx[i]*Minv[2][0]+tpy[i]*Minv[2][1]+0*Minv[2][2])*cV0[0]; rrvx[i]=rrvx[i]+vxx; rrvy[i]=rrvy[i]+vyy; rrvz[i]=rrvz[i]+vzz; fprintf(ofileT,"%d,%d,%d,%9.8e,%9.8e,%9.8e,",i,0,0,rrx[i],rry[i],rrz[i]); fprintf(ofileT,"%9.8e,%9.8e,%9.8e,%9.8e,%9.8e,",rrvx[i],rrvy[i],rrvz[i],tt[i],0.); fprintf(ofileT,"%d,%9.8e,%9.8e,%9.8e,",0,x0,y0,z0); fprintf(ofileT,"%9.8e,%9.8e,%9.8e\n",vx0,vy0,vz0); } fclose(ofileT); TGraph *gr_yxcomp[2]; TGraph *gr_yzcomp[2]; TGraph *gr_yxpcomp[2]; TGraph *gr_yypcomp[2]; TGraph *gr_yzpcomp[2]; /////// double tmpV2[3][100]; for(int pp=0;pp<100;++pp){ tmpV2[0][pp]=rrvx[pp]/(double)cV0[0]; tmpV2[1][pp]=rrvy[pp]/(double)cV0[0]; tmpV2[2][pp]=rrvz[pp]/(double)cV0[0]; } gr_yxcomp[1]= new TGraph(100,rry,rrx); gr_yzcomp[1]= new TGraph(100,rry,rrz); gr_yxpcomp[1]= new TGraph(100,rry,tmpV2[0]); gr_yypcomp[1]= new TGraph(100,rry,tmpV2[1]); gr_yzpcomp[1]= new TGraph(100,rry,tmpV2[2]); gr_yxcomp[0]= new TGraph(20,posy[0],posx[0]); gr_yzcomp[0]= new TGraph(20,posy[0],posz[0]); gr_yxpcomp[0]= new TGraph(20,posy[0],tmpV2[0]); gr_yypcomp[0]= new TGraph(20,posy[0],tmpV2[1]); gr_yzpcomp[0]= new TGraph(20,posy[0],tmpV2[2]); TCanvas *c18 = new TCanvas("c18","test2",300,100,800,800); c18->Divide(3,2); TH2F *frame18[6]; for(int i=0;i<6;++i){ // lcom[i].SetTextSize(0.07); sprintf(fc,"frame18_%d",i); if(i==0)frame18[i] = new TH2F(fc," ",10, 130, 160, 10, 80,100);//yx if(i==1)frame18[i] = new TH2F(fc," ",10, 130, 160, 10, 40,60);//yz if(i==2)frame18[i] = new TH2F(fc," ",10, 130, 160, 10, -1,1.0);//ypx if(i==3)frame18[i] = new TH2F(fc," ",10, 130, 160, 10, -0.5,0.5);//ypy if(i==4)frame18[i] = new TH2F(fc," ",10, 130, 160, 10, -0.2,0.5);//yyypz if(i==5)frame18[i] = new TH2F(fc," ",10, 130, 160, 10, -1,1);//yyypz frame18[i]->SetTitle(""); frame18[i]->GetXaxis()->SetLabelSize(0.04); frame18[i]->GetXaxis()->SetTitleSize(0.05); frame18[i]->GetYaxis()->SetLabelSize(0.04); frame18[i]->GetYaxis()->SetTitleSize(0.06); if(i==0){ frame18[0]->GetXaxis()->SetTitle("y[cm]"); frame18[0]->GetYaxis()->SetTitle("x[cm]"); } if(i==1){ frame18[1]->GetXaxis()->SetTitle("y[cm]"); frame18[1]->GetYaxis()->SetTitle("z[cm]"); } if(i==2){ frame18[2]->GetXaxis()->SetTitle("y[cm]"); frame18[2]->GetYaxis()->SetTitle("vx[rad]"); } if(i==3){ frame18[3]->GetXaxis()->SetTitle("y[cm]"); frame18[3]->GetYaxis()->SetTitle("vy[rad]"); } if(i==4){ frame18[4]->GetXaxis()->SetTitle("y[cm]"); frame18[4]->GetYaxis()->SetTitle("vz[rad]"); } frame18[i]->GetYaxis()->SetTitleOffset(1.5); frame18[i]->SetStats(0); } c18->cd(1); c18->SetLeftMargin(0.16); c18->SetRightMargin(0.05); frame18[0]->Draw(); printf("ppp\n"); for(int i=0;i<2;++i){ color=i+1; gr_yxcomp[i]->SetMarkerStyle(7); gr_yxcomp[i]->SetMarkerSize(1); gr_yxcomp[i]->SetMarkerColor(color); gr_yxcomp[i]->SetLineColor(color); gr_yxcomp[i]->Draw("p"); } c18->cd(2); c18->SetLeftMargin(0.16); c18->SetRightMargin(0.05); frame18[1]->Draw(); for(int i=0;i<2;++i){ color=i+1; gr_yzcomp[i]->SetMarkerStyle(7); gr_yzcomp[i]->SetMarkerSize(1); gr_yzcomp[i]->SetMarkerColor(color); gr_yzcomp[i]->SetLineColor(color); gr_yzcomp[i]->Draw("p"); } c18->SetGridx(); c18->SetGridy(); c18->cd(3); c18->SetLeftMargin(0.16); c18->SetRightMargin(0.05); frame18[2]->Draw(); color=0; for(int i=0;i<2;++i){ color=i+1; gr_yxpcomp[i]->SetMarkerStyle(7); gr_yxpcomp[i]->SetMarkerSize(1); gr_yxpcomp[i]->SetMarkerColor(color); gr_yxpcomp[i]->SetLineColor(color); gr_yxpcomp[i]->Draw("p"); } c18->SetGridx();c18->SetGridy(); c18->cd(4); c18->SetLeftMargin(0.16); c18->SetRightMargin(0.05); frame18[3]->Draw(); for(int i=0;i<2;++i){ color=i+1; gr_yypcomp[i]->SetMarkerStyle(7); gr_yypcomp[i]->SetMarkerSize(1); gr_yypcomp[i]->SetMarkerColor(color); gr_yypcomp[i]->SetLineColor(color); gr_yypcomp[i]->Draw("p"); } c18->SetGridx(); c18->SetGridy(); c18->cd(5); c18->SetLeftMargin(0.16); c18->SetRightMargin(0.05); frame18[4]->Draw(); for(int i=0;i<2;++i){ color=i+1; gr_yzpcomp[i]->SetMarkerStyle(7); gr_yzpcomp[i]->SetMarkerSize(1); gr_yzpcomp[i]->SetMarkerColor(color); gr_yzpcomp[i]->SetLineColor(color); gr_yzpcomp[i]->Draw("p"); } c18->SetGridx(); c18->SetGridy(); ///////////////////////////////////////////////////// TCanvas *cz = new TCanvas("cz","z-t",300,100,800,800); TH2F *frame; frame = new TH2F("frame"," ",10, -.2, .2, 10, -1E-2,1E-2);//yyypz frame->SetTitle(""); frame->GetXaxis()->SetLabelSize(0.04); frame->GetXaxis()->SetTitleSize(0.05); frame->GetYaxis()->SetLabelSize(0.04); frame->GetYaxis()->SetTitleSize(0.06); frame->Draw("same"); gr_zt->SetMarkerStyle(7); gr_zt->Draw("p");//cm rad TCanvas *c3 = new TCanvas("c3","3-D track",200,100,700,800); TH3F *frame3; frame3 = new TH3F("frame3","test",10, -1+z0, 1+z0,10, -1+x0, 1+x0, 10,-1+y0,1+y0); //frame3 = new TH3F("frame3","test",10, -80, 80,10, -80, 80, 10,-0,200); frame3->GetXaxis()->SetLabelSize(0.04); frame3->GetXaxis()->SetTitleSize(0.04); frame3->GetYaxis()->SetLabelSize(0.04); frame3->GetYaxis()->SetTitleSize(0.04); frame3->GetZaxis()->SetLabelSize(0.04); frame3->GetZaxis()->SetTitleSize(0.04); frame3->GetXaxis()->SetTitle("x"); frame3->GetYaxis()->SetTitle("y"); frame3->GetZaxis()->SetTitle("z"); frame3->GetXaxis()->SetTitleOffset(1.8); frame3->GetYaxis()->SetTitleOffset(1.5); frame3->GetZaxis()->SetTitleOffset(1.5); frame3->SetStats(0); frame3->Draw(); c3->SetLeftMargin(0.15); c3->SetRightMargin(0.1); c3->SetBottomMargin(0.1); c3->Draw(); tr0->SetMarkerStyle(20); tr0->SetMarkerColor(3); // tr0->Draw("same"); trj_line->SetLineColor(2); trj_line->Draw("same"); dist->SetMarkerStyle(4); dist->SetMarkerColor(4); dist->Draw("same"); // tr0->Draw("same"); } int FtoV(double A[4][4], double V[4],double VV[4]){ int i,j; for(i=0;i<4;++i){ VV[i]=0; for(j=0;j<4;++j){ VV[i]=VV[i]+A[i][j]*V[j]; } } return 1; } int TransT4(double A[4][4], double B[4][4]){ int i,j; for(i=0;i<4;++i){ for(j=0;j<4;++j){ B[j][i]=A[i][j]; } } return 1; } double trace(double A[2][2]){ double ans; ans=A[0][0]+A[1][1]; return ans; } double det(double A[2][2]){ double ans; ans=A[0][0]*A[1][1]-A[0][1]*A[1][0]; return ans; } int TtoT(double A[2][2],double B[2][2],double C[2][2]){ for(int i=0;i<2;++i){ for(int j=0;j<2;++j){ C[i][j]=0; for(int k=0;k<2;++k){ C[i][j]=C[i][j]+A[i][k]*B[k][j]; } printf("%lf ",C[i][j]); } printf("\n"); } return 1; } int SumTwo(double A[2][2], double B[2][2],double C[2][2]){ for(int i=0;i<2;++i){ for(int j=0;j<2;++j){ C[i][j]=0; C[i][j]=A[i][j]+B[i][j]; } } return 1; } int DiffTwo(double A[2][2], double B[2][2],double C[2][2]){ for(int i=0;i<2;++i){ for(int j=0;j<2;++j){ C[i][j]=0; C[i][j]=A[i][j]-B[i][j]; } } return 1; } int FtoF(double A[4][4], double B[4][4],double C[4][4]){ printf("FtoF-A*B---\n"); printf("---A-------------\n"); printf("%lf %lf %lf %lf\n",A[0][0],A[0][1],A[0][2],A[0][3]); printf("%lf %lf %lf %lf\n",A[1][0],A[1][1],A[1][2],A[1][3]); printf("%lf %lf %lf %lf\n",A[2][0],A[2][1],A[2][2],A[2][3]); printf("%lf %lf %lf %lf\n",A[3][0],A[3][1],A[3][2],A[3][3]); printf("---B-------------\n"); printf("%lf %lf %lf %lf\n",B[0][0],B[0][1],B[0][2],B[0][3]); printf("%lf %lf %lf %lf\n",B[1][0],B[1][1],B[1][2],B[1][3]); printf("%lf %lf %lf %lf\n",B[2][0],B[2][1],B[2][2],B[2][3]); printf("%lf %lf %lf %lf\n",B[3][0],B[3][1],B[3][2],B[3][3]); printf("---A*B-------------\n"); for(int i=0;i<4;++i){ for(int j=0;j<4;++j){ C[i][j]=0; for(int k=0;k<4;++k){ C[i][j]=C[i][j]+A[i][k]*B[k][j]; } printf("%lf ",C[i][j]); } printf("\n"); } return 1; }