#include #include #include #include #include void coordinates() { //************************************************************ // //Optical survey coordinates // //************************************************************ double tg1P1[4]={-37.8873,35.6630,0,1}; double tg1P2[4]={-.2745,.0640,0,1}; double tg2P1[4]={-37.8945,35.6770,0,1}; double tg2P2[4]={-.3065,.0480,0,1}; TVector3 transTtg1; transTtg1.SetXYZ(tg1P2[0],tg1P2[1],tg1P2[2]); TVector3 transTtg2; transTtg2.SetXYZ(tg2P2[0],tg2P2[1],tg2P2[2]); //making new base double __x[3]; __x[0]=-1;__x[1]=0;__x[2]=0; double __y[3]; __y[0]=0;__y[1]=1;__y[2]=0; double __z[3]; __z[0]=0;__z[1]=0;__z[2]=1; double invTransMatTG1[4][4]; invTransMatTG1[0][0]=__x[0]; invTransMatTG1[0][1]=__y[0]; invTransMatTG1[0][2]=__z[0]; invTransMatTG1[0][3]=transTtg1.x(); invTransMatTG1[1][0]=__x[1]; invTransMatTG1[1][1]=__y[1]; invTransMatTG1[1][2]=__z[1]; invTransMatTG1[1][3]=transTtg1.y(); invTransMatTG1[2][0]=__x[2]; invTransMatTG1[2][1]=__y[2]; invTransMatTG1[2][2]=__z[2]; invTransMatTG1[2][3]=transTtg1.z(); invTransMatTG1[3][0]=0; invTransMatTG1[3][1]=0; invTransMatTG1[3][2]=0; invTransMatTG1[3][3]=1; TMatrixT transformationTG1(4,4,&invTransMatTG1[0][0]); cout<<"determinant "< transformationTG2(4,4,&invTransMatTG2[0][0]); cout<<"determinant "< > tg1Q; double tmp[4]={-22.7065,17.2470,0,1}; tg1Q.push_back(TMatrixT (4,1,&tmp[0] )); double tmp2[4]={-22.6895,27.4520,0,1}; tg1Q.push_back(TMatrixT (4,1,&tmp2[0] )); double tmp3[4]={-27.7796,22.3760,0,1}; tg1Q.push_back(TMatrixT (4,1,&tmp3[0] )); double tmp4[4]={-17.5856,22.3560,0,1}; tg1Q.push_back(TMatrixT (4,1,&tmp4[0] )); vector< TMatrixT > tg2Q; double tmp21[4]={-22.7165,17.3199,0,1}; tg2Q.push_back(TMatrixT (4,1,&tmp21[0] )); double tmp22[4]={-22.7126,27.5270,0,1}; tg2Q.push_back(TMatrixT (4,1,&tmp22[0] )); double tmp23[4]={-27.7965,22.4400,0,1}; tg2Q.push_back(TMatrixT (4,1,&tmp23[0] )); double tmp24[4]={-17.6035,22.4370,0,1}; tg2Q.push_back(TMatrixT (4,1,&tmp24[0] )); TMatrixT tg1P1M(4,1,&tg1P1[0]); TMatrixT tg1P2M(4,1,&tg1P2[0]); TMatrixT tg2P1M(4,1,&tg2P1[0]); TMatrixT tg2P2M(4,1,&tg2P2[0]); cout<<"*************************************************************************************"< tg1Q[i+4],tg2Q[] i-{1,4} // has coordinates of strips // q3q4=direction of "y-strips", q1 position of first strip x // q1q2=direction of "x-strips", q4 position of first strip x //******************************************************** //************************************************************* TVector3 scint1(0.104971,0.330293,-0.607805); TVector3 scint2(0.0516079,0.334447,1.16535); TVector3 sil1p1(0.108478,0.342911,-0.390464); TVector3 sil1p2(0.0892391,0.343151,-0.39061); TVector3 sil1p3(0.0893495,0.323319,-0.390696); TVector3 sil1p4(0.108353,0.323307,-0.390897); TVector3 sil2p1(0.0961556,0.342195,0.0521152); TVector3 sil2p2(0.0773385,0.342169,0.0521324); TVector3 sil2p3(0.0772431,0.322718,0.0521289); TVector3 sil2p4(0.096172,0.322429,0.05206); TVector3 tg01p1(0.256584,0.452425,-0.473861); TVector3 tg01p2(-0.118592,0.0989069,-0.476781); TVector3 tg02p1(0.255164,0.453678,0.14172); TVector3 tg02p2(-0.122005,0.098039,0.147322); TVector3 siBox1p1(0.206856,0.502544,-0.336813); TVector3 siBox1p2(-0.00814888,0.502742,-0.33478); TVector3 siBox1p3(-0.00824142,0.241433,-0.33799); TVector3 siBox1p4(0.207293,0.241879,-0.338691); TVector3 siBox2p1(0.194186,0.500668,-0.00287458); TVector3 siBox2p2(-0.0197852,0.501919,-0.00216727); TVector3 siBox2p3(-0.0213047,0.241135,-0.00062352); TVector3 siBox2p4(0.193671,0.241653,-0.000895106); //********************************************************* //converting from meters to cm //********************************************************* scint1*=100; scint2*=100; sil1p1*=100; sil1p2*=100; sil1p3*=100; sil1p4*=100; sil2p1*=100; sil2p2*=100; sil2p3*=100; sil2p4*=100; tg01p1*=100; tg01p2*=100; tg02p1*=100; tg02p2*=100; siBox1p1*=100; siBox1p2*=100; siBox1p3*=100; siBox1p4*=100; siBox2p1*=100; siBox2p2*=100; siBox2p3*=100; siBox2p4*=100; //*********************************************************************** double ascint1[3]={0.104971,0.330293,-0.607805}; double ascint2[3]={0.0516079,0.334447,1.16535}; double asil1p1[3]={0.108478,0.342911,-0.390464}; double asil1p2[3]={0.0892391,0.343151,-0.39061}; double asil1p3[3]={0.0893495,0.323319,-0.390696}; double asil1p4[3]={0.108353,0.323307,-0.390897}; double asil2p1[3]={0.0961556,0.342195,0.0521152}; double asil2p2[3]={0.0773385,0.342169,0.0521324}; double asil2p3[3]={0.0772431,0.322718,0.0521289}; double asil2p4[3]={0.096172,0.322429,0.05206}; double atg01p1[3]={0.256584,0.452425,-0.473861}; double atg01p2[3]={-0.118592,0.0989069,-0.476781}; double atg02p1[3]={0.255164,0.453678,0.14172}; double atg02p2[3]={-0.122005,0.098039,0.147322}; double asiBox1p1[3]={0.206856,0.502544,-0.336813}; double asiBox1p2[3]={-0.00814888,0.502742,-0.33478}; double asiBox1p3[3]={-0.00824142,0.241433,-0.33799}; double asiBox1p4[3]={0.207293,0.241879,-0.338691}; double asiBox2p1[3]={0.194186,0.500668,-0.00287458}; double asiBox2p2[3]={-0.0197852,0.501919,-0.00216727}; double asiBox2p3[3]={-0.0213047,0.241135,-0.00062352}; double asiBox2p4[3]={0.193671,0.241653,-0.000895106}; //********************************************************************** ascint1[0]=100*ascint1[0]; ascint1[1]=100*ascint1[1]; ascint1[2]=100*ascint1[2]; ascint2[0]=100*ascint2[0]; ascint2[1]=100*ascint2[1]; ascint2[2]=100*ascint2[2]; asil1p1[0]=100*asil1p1[0]; asil1p1[1]=100*asil1p1[1]; asil1p1[2]=100*asil1p1[2]; asil1p2[0]=100*asil1p2[0]; asil1p2[1]=100*asil1p2[1]; asil1p2[2]=100*asil1p2[2]; asil1p3[0]=100*asil1p3[0]; asil1p3[1]=100*asil1p3[1]; asil1p3[2]=100*asil1p3[2]; asil1p4[0]=100*asil1p4[0]; asil1p4[1]=100*asil1p4[1]; asil1p4[2]=100*asil1p4[2]; asil2p1[0]=100*asil2p1[0]; asil2p1[1]=100*asil2p1[1]; asil2p1[2]=100*asil2p1[2]; asil2p2[0]=100*asil2p2[0]; asil2p2[1]=100*asil2p2[1]; asil2p2[2]=100*asil2p2[2]; asil2p3[0]=100*asil2p3[0]; asil2p3[1]=100*asil2p3[1]; asil2p3[2]=100*asil2p3[2]; asil2p4[0]=100*asil2p4[0]; asil2p4[1]=100*asil2p4[1]; asil2p4[2]=100*asil2p4[2]; atg01p1[0]=100*atg01p1[0]; atg01p1[1]=100*atg01p1[1]; atg01p1[2]=100*atg01p1[2]; atg01p2[0]=100*atg01p2[0]; atg01p2[1]=100*atg01p2[1]; atg01p2[2]=100*atg01p2[2]; atg02p1[0]=100*atg02p1[0]; atg02p1[1]=100*atg02p1[1]; atg02p1[2]=100*atg02p1[2]; atg02p2[0]=100*atg02p2[0]; atg02p2[1]=100*atg02p2[1]; atg02p2[2]=100*atg02p2[2]; asiBox1p1[0]=100*asiBox1p1[0]; asiBox1p1[1]=100*asiBox1p1[1]; asiBox1p1[2]=100*asiBox1p1[2]; asiBox1p2[0]=100*asiBox1p2[0]; asiBox1p2[1]=100*asiBox1p2[1]; asiBox1p2[2]=100*asiBox1p2[2]; asiBox1p3[0]=100*asiBox1p3[0]; asiBox1p3[1]=100*asiBox1p3[1]; asiBox1p3[2]=100*asiBox1p3[2]; asiBox1p4[0]=100*asiBox1p4[0]; asiBox1p4[1]=100*asiBox1p4[1]; asiBox1p4[2]=100*asiBox1p4[2]; asiBox2p1[0]=100*asiBox2p1[0]; asiBox2p1[1]=100*asiBox2p1[1]; asiBox2p1[2]=100*asiBox2p1[2]; asiBox2p2[0]=100*asiBox2p2[0]; asiBox2p2[1]=100*asiBox2p2[1]; asiBox2p2[2]=100*asiBox2p2[2]; asiBox2p3[0]=100*asiBox2p3[0]; asiBox2p3[1]=100*asiBox2p3[1]; asiBox2p3[2]=100*asiBox2p3[2]; asiBox2p4[0]=100*asiBox2p4[0]; asiBox2p4[1]=100*asiBox2p4[1]; asiBox2p4[2]=100*asiBox2p4[2]; //********************************************************************** TVector3 siBox1p1p2=siBox1p2-siBox1p1; TVector3 siBox1p1p4=siBox1p4-siBox1p1; TVector3 transT=scint1; cout<<"***********************************************************************************"< transformation(4,4,&invTransMat[0][0]); cout<<"***********************************************************************************"< rotT(3,3,&rotMat[0][0]); cout<<"det: "< tg1Q[i+4],tg2Q[] i-{1,4} relative to p2 // has coordinates of strips // q4q3=direction of "x-strips", q4 position of first strip x // q1q2=direction of "y-strips", q1 position of first strip y //******************************************************** //transforming the positions of the detectors to my new frame of reference. double gem1p1[3]; double gem1p2[3]; double gem2p1[3]; double gem2p2[3]; double si1p1[3]; double si1p2[3]; double si1p3[3]; double si1p4[3]; double si2p1[3]; double si2p2[3]; double si2p3[3]; double si2p4[3]; double _scint1[3]; double _scint2[3]; geoTransformation.LocalToMaster(atg01p1,gem1p1); geoTransformation.LocalToMaster(atg01p2,gem1p2); geoTransformation.LocalToMaster(atg02p1,gem2p1); geoTransformation.LocalToMaster(atg02p2,gem2p2); geoTransformation.LocalToMaster(asil1p1,si1p1); geoTransformation.LocalToMaster(asil1p2,si1p2); geoTransformation.LocalToMaster(asil1p3,si1p3); geoTransformation.LocalToMaster(asil1p4,si1p4); geoTransformation.LocalToMaster(asil2p1,si2p1); geoTransformation.LocalToMaster(asil2p2,si2p2); geoTransformation.LocalToMaster(asil2p3,si2p3); geoTransformation.LocalToMaster(asil2p4,si2p4); geoTransformation.LocalToMaster(ascint1,_scint1); geoTransformation.LocalToMaster(ascint2,_scint2); cout<<"*******************************************************"<Close(); delete file; cout<<"DONE"<