21 for(
int isup = 0; isup <
nslayers; isup++)
24 for(
int ilayer = 0; ilayer <
nlayers; ilayer++)
26 for(
int iwir = 0; iwir <
nwires; iwir++)
36 for(
int isup = 0; isup <
nslayers; isup++)
54 double angle, cosine, x1x2norm = 0.,x1x3norm = 0.,dot =0.;
56 for (
int i = 0; i <
ndim; i++)
58 x1x2norm += (x1[i]-x2[i])*(x1[i]-x2[i]);
59 x1x3norm += (x1[i]-x3[i])*(x1[i]-x3[i]);
61 x1x2norm = sqrt(x1x2norm);
62 x1x3norm = sqrt(x1x3norm);
64 for (
int i = 0; i <
ndim; i++) dot += (x1[i]-x2[i])*(x1[i]-x3[i]);
66 cosine = dot/x1x2norm/x1x3norm;
68 angle = acos(cosine)*
r2d;
69 angle = angle*(x2[1]-x3[1])/abs(x2[1]-x3[1]);
82 double wir2wir=0.,delta = 0.;
83 for (
int i = 0; i<
ndim; i++) delta += cwire[i]*(x1[i]-x2[i]);
84 for (
int i = 0; i<
ndim; i++) x3[i] = x2[i]+cwire[i]*delta;
85 for (
int i = 0; i<
ndim; i++) wir2wir += (x3[i]-x1[i])*(x3[i]-x1[i]);
103 double wirelen,xintersection[
ndim];
107 for (
int i = 0; i<
ndim; i++)
109 num[i] = cplate[i]*(xwire[i]-xplates[i]);
110 denom[i] = cwire[i]*cplate[i];
112 wirelen = -(num[0]+num[1]+num[2])/(denom[0]+denom[1]+denom[2]);
113 for (
int i = 0; i<
ndim; i++) xintersection[i]= xwire[i]+wirelen*cwire[i];
116 *(par+1) = xintersection[0];
117 *(par+2) = xintersection[1];
118 *(par+3) = xintersection[2];
129 double a1,a2,a3,a4,a5,a6,a7,b1,b2,b3;
131 infile.open(filename.c_str());
134 cout <<
"File " << filename <<
" is open succesfully " << endl;
135 while (!infile.eof())
137 getline(infile,line);
139 if(line.compare(0,1,
"#")==0)
143 iss >>s>>i>>a1>>a2>>a3>>a4>>a5>>a6>>a7;
154 if(line.compare(0,1,
"!")==0)
159 iss >>s>>i>>b1>>b2>>b3;
167 cout <<
" end reading " << endl;
170 cout <<
"Error: File " << filename <<
" is not opened " << endl;
191 dw =
d[isup]*4.*cos(30.*d2r);
252 l1=1; l2=3; l3=5; l4=7;
255 l1=0; l2=2; l3=4; l4=6;
258 cout<<
"stagger error"<<endl;
259 if(ilayer==l1||ilayer==l2||ilayer==l3||ilayer==l4){
269 double wirelenr,wirelenl;
270 double c,s,x,y,z,xrtpl,yrtpl,zrtpl,xlfpl,ylfpl,zlfpl;
298 for (
int i = 0; i<
ndim; i++){
305 wirelength[iwir] = abs(wirelenl)+abs(wirelenr);
331 double xpoint1[
ndim],xpoint2[
ndim],xpoint3[
ndim],wir2wir;
336 for (
int i = 0; i<
ndim; i++){
349 xpoint3[0] = param[1];
350 xpoint3[1] = param[2];
351 xpoint3[2] = param[3];
354 delylyr[isup][ilayer] = wir2wir/2.;
365 for (
int ireg = 0; ireg <
nreg; ireg++) {
416 if(isup==0 || isup ==1) ireg = 0;
417 if(isup==2 || isup ==3) ireg = 1;
418 if(isup==4 || isup ==5) ireg = 2;
420 for (
int ilayer = 0; ilayer <
nlayers; ilayer++) {
424 dy =
xlyr[1][isup][ilayer]-center_m[1][ireg];
425 dz =
xlyr[2][isup][ilayer]-center_m[2][ireg];
440 outfile.open(filename.c_str());
441 if (outfile.is_open())
443 for (
int isup = 0; isup <
nslayers; isup++)
445 for (
int ilayer = 0; ilayer <
nlayers; ilayer++)
447 outfile<<isup+1<<
" "<<ilayer+1<<
" "<<
455 else cout <<
"Unable to open file";
463 outfile.open(filename.c_str());
464 if (outfile.is_open())
466 for (
int ireg = 0; ireg <
nreg; ireg++)
468 outfile<<ireg+1<<
" "<<
delx1[ireg]<<
" "<<
delx2[ireg] <<
" "<<
dely[ireg]<<
" "<<
473 else cout <<
"Unable to open file";
515 l1=1; l2=3; l3=5; l4=7;
519 l1=0; l2=2; l3=4; l4=6;
522 cout<<
"stagger error"<<endl;
524 if(ilayer==l1||ilayer==l2||ilayer==l3||ilayer==l4)
554 l1=1; l2=3; l3=5; l4=7;
558 l1=0; l2=2; l3=4; l4=6;
561 cout<<
"stagger error"<<endl;
562 if(ilayer==l1||ilayer==l2||ilayer==l3||ilayer==l4)
573 void getWirePositions(
int isup,
int ilayer,
double xc[],
double yc[],
double zc[],
double xcos[],
double ycos[],
double zcos[])
575 for (
int iwir = 0; iwir <
nwires; iwir++)
577 xc[iwir] =
wiremidx(iwir,ilayer,isup);
578 yc[iwir] =
wiremidy(iwir,ilayer,isup);
579 zc[iwir] =
wiremidz(iwir,ilayer,isup);
580 xcos[iwir] =
cwirex(isup);
581 ycos[iwir] =
cwirey(isup);
582 zcos[iwir] =
cwirez(isup);
double wirespan[nslayers][nlayers]
double wirelength[nwires]
void write_output_g4layers(string filename)
double xlyr[ndim][nslayers][nlayers]
double regthickness[nreg]
void calc_midpoints(int ilayer, int isup)
double layerthickness[nslayers]
double xcenter[ndim][nwires]
void getWirePositions(int isup, int ilayer, double xc[], double yc[], double zc[], double xcos[], double ycos[], double zcos[])
double delxlyr[ndim][nslayers][nlayers]
void calc_wire_info(int iwir, int ilayer, int isup)
void get_thickness(int ireg)
double wiremidz(int iwir, int ilayer, int isup)
void calc_g4layer_parameters(int ilayer, int isup)
double xmid[ndim][nwires]
int wiretowire(double x1[], double x2[], double cwire[], double *par)
void calc_g4mother_positions(int isup)
void read_param(string filename)
double xleft[ndim][nslayers][nlayers][nwires]
double lyrangle[nslayers][nlayers]
void write_output_g4mother(string filename)
int lineplaneint(double xwire[], double cwire[], double xplates[], double cplate[], double *par)
void calc_cosines_etc(int isup)
double wiremidx(int iwir, int ilayer, int isup)
double delx1lyr[nslayers][nlayers]
double delylyr[nslayers][nlayers]
double xright[ndim][nslayers][nlayers][nwires]
void calc_g4layer_positions(int isup)
double anglepoint(double x1[], double x2[], double x3[])
double delx2lyr[nslayers][nlayers]
double wiremidy(int iwir, int ilayer, int isup)
double center_m[ndim][nreg]