00001 #include "LASERINO_TABLE.h"
00002 void ConverL() {
00003 ofstream &out = cout;
00004
00005 out << "static LASERINO_t Bundles[14][6] = " << endl;
00006
00007 LASERINO_t Bundles[14][6];
00008 for (Int_t r = 0; r < 14; r++) {
00009 Int_t sector = Locals[r][0][0].Sector;
00010 Int_t s = (sector-1)/2;
00011 for (Int_t b = 0; b < 6; b++) {
00012 Int_t m = 3;
00013 Bundles[r][b] = Locals[r][b][m];
00014 Bundles[r][b].dX = Bundles[r][b].ddX = Bundles[r][b].dY = Bundles[r][b].ddY = 0;
00015
00016 Bundles[r][b].DeltaPhi = - 1.e-3*(dPhiC[s].Angle+dPhiC2[s].Angle);
00017 if (r == 0 && b == 0) out << " {{{";
00018 else {
00019 if (b == 0) out << " {{";
00020 else out << " {";
00021 }
00022
00023 Bundles[r][b].Write(out);
00024 if (r == 13 && b == 5) out << "}}};";
00025 else {
00026 if (b == 5) out << "}},";
00027 else out << "},";
00028 }
00029 out << endl;
00030 }
00031 }
00032
00033 LASERINO_t Mirrors[7];
00034 out << "static LASERINO_t Mirrors[14][6][7] = " << endl;
00035 for (Int_t r = 0; r < 14; r++) {
00036 for (Int_t b = 0; b < 6; b++) {
00037 Double_t phi0 = 0;
00038 for (Int_t m = 0; m < 3; m++) phi0 += Locals[r][b][m].DeltaPhi;
00039 Double_t phiM = -phi0;
00040 for (Int_t m = 0; m < 7; m++) {
00041 Mirrors[m] = Locals[r][b][m];
00042 Mirrors[m].X -= Bundles[r][b].X;
00043 Mirrors[m].Y -= Bundles[r][b].Y;
00044 Mirrors[m].Z -= Bundles[r][b].Z;
00045 Mirrors[m].ThetaZ -= Bundles[r][b].ThetaZ;
00046 Mirrors[m].dX -= Bundles[r][b].dX;
00047 Mirrors[m].dY -= Bundles[r][b].dY;
00048 Mirrors[m].DeltaPhi = phiM;
00049 phiM += Locals[r][b][m].DeltaPhi;
00050
00051 }
00052
00053 if ( Mirrors[0].Z > Mirrors[1].Z) { Mirrors[0].Status += 100; Mirrors[1].Status += 100;}
00054 if ( Mirrors[0].Z > Mirrors[4].Z) { Mirrors[0].Status += 100; Mirrors[3].Status += 100;}
00055 if ( Mirrors[6].Z > Mirrors[3].Z) { Mirrors[6].Status += 100; Mirrors[3].Status += 100;}
00056 if ( Mirrors[6].Z > Mirrors[5].Z) { Mirrors[6].Status += 100; Mirrors[5].Status += 100;}
00057
00058 if ( Mirrors[1].Z > Mirrors[2].Z) { Mirrors[1].Status += 100; Mirrors[4].Status += 100;}
00059 if ( Mirrors[3].Z > Mirrors[2].Z) { Mirrors[3].Status += 100; Mirrors[2].Status += 100;}
00060 if ( Mirrors[3].Z > Mirrors[4].Z) { Mirrors[3].Status += 100; Mirrors[4].Status += 100;}
00061 if ( Mirrors[5].Z > Mirrors[4].Z) { Mirrors[5].Status += 100; Mirrors[4].Status += 100;}
00062
00063 if ( Mirrors[0].X > Mirrors[1].X) { Mirrors[0].Status += 1; Mirrors[1].Status += 1;}
00064 if ( Mirrors[0].X > Mirrors[3].X) { Mirrors[0].Status += 1; Mirrors[3].Status += 1;}
00065 if ( Mirrors[0].X > Mirrors[5].X) { Mirrors[0].Status += 1; Mirrors[5].Status += 1;}
00066
00067 if ( Mirrors[6].X > Mirrors[1].X) { Mirrors[6].Status += 1; Mirrors[1].Status += 1;}
00068 if ( Mirrors[6].X > Mirrors[3].X) { Mirrors[6].Status += 1; Mirrors[3].Status += 1;}
00069 if ( Mirrors[6].X > Mirrors[5].X) { Mirrors[6].Status += 1; Mirrors[5].Status += 1;}
00070
00071 if ( Mirrors[1].X > Mirrors[2].X) { Mirrors[0].Status += 1; Mirrors[2].Status += 1;}
00072 if ( Mirrors[3].X > Mirrors[2].X) { Mirrors[3].Status += 1; Mirrors[2].Status += 1;}
00073 if ( Mirrors[5].X > Mirrors[2].X) { Mirrors[5].Status += 1; Mirrors[2].Status += 1;}
00074
00075 if ( Mirrors[1].X > Mirrors[4].X) { Mirrors[0].Status += 1; Mirrors[4].Status += 1;}
00076 if ( Mirrors[3].X > Mirrors[4].X) { Mirrors[3].Status += 1; Mirrors[4].Status += 1;}
00077 if ( Mirrors[5].X > Mirrors[4].X) { Mirrors[5].Status += 1; Mirrors[4].Status += 1;}
00078
00079 if ( Mirrors[1].Y > Mirrors[0].Y) { Mirrors[1].Status += 10; Mirrors[0].Status += 10;}
00080 if ( Mirrors[1].Y > Mirrors[2].Y) { Mirrors[1].Status += 10; Mirrors[2].Status += 10;}
00081
00082 if ( Mirrors[0].Y > Mirrors[3].Y) { Mirrors[0].Status += 10; Mirrors[4].Status += 10;}
00083 if ( Mirrors[2].Y > Mirrors[3].Y) { Mirrors[2].Status += 10; Mirrors[4].Status += 10;}
00084 if ( Mirrors[3].Y > Mirrors[4].Y) { Mirrors[3].Status += 10; Mirrors[4].Status += 10;}
00085 if ( Mirrors[3].Y > Mirrors[6].Y) { Mirrors[3].Status += 10; Mirrors[6].Status += 10;}
00086 if ( Mirrors[4].Y > Mirrors[5].Y) { Mirrors[4].Status += 10; Mirrors[5].Status += 10;}
00087 if ( Mirrors[6].Y > Mirrors[5].Y) { Mirrors[6].Status += 10; Mirrors[5].Status += 10;}
00088 for (Int_t m = 0; m < 7; m++) {
00089 if (r == 0 && b == 0 && m == 0) out << " {{{{";
00090 else {
00091 if (b == 0 && m == 0) out << " {{{";
00092 else {
00093 if (m == 0) out << " {{";
00094 else out << " {";
00095 }
00096 }
00097
00098 Mirrors[m].Write(out);
00099 if (r == 13 && b == 5 && m == 6) out << "}}}};";
00100 else {
00101 if (b == 5 && m == 6) out << "}}},";
00102 else {
00103 if (m == 6) out << "}}";
00104 else out << "},";
00105 }
00106 }
00107 out << endl;
00108 }
00109
00110 }
00111 }
00112
00113 }