66 {
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
89
90 G4int pentaNb = 0;
91 for ( G4int i = 0; i < 30; i++ )
92 {
93 for ( G4int j = 0; j < 8; j++ )
94 {
95
96 G4ThreeVector* pPnt = new G4ThreeVector(
97 param[i][j], param[i][j + 8], param[i][j + 16] - WorldZPosition - SectorZPosition );
98 fPnt[i][j] = *pPnt;
99 }
100
101 if ( i == 5 || i == 6 || i == 14 || i == 15 || i == 16 )
102
103 {
104 for ( G4int j = 0; j < 8; j++ ) fPnt[30 + pentaNb][j] = fPnt[i][j];
105
106
107 G4double y0, y1, y4, y5;
108 G4ThreeVector v0, v1, v4, v5;
109 y0 = penta[pentaNb][0];
110 y1 = penta[pentaNb][1];
111 y4 = penta[pentaNb][2];
112 y5 = penta[pentaNb][3];
113 v0 = ( y0 - fPnt[i][3].getY() ) * ( fPnt[i][0] - fPnt[i][3] ) /
114 ( fPnt[i][0].getY() - fPnt[i][3].getY() ) +
115 fPnt[i][3];
116 v1 = ( y1 - fPnt[i][2].getY() ) * ( fPnt[i][1] - fPnt[i][2] ) /
117 ( fPnt[i][1].getY() - fPnt[i][2].getY() ) +
118 fPnt[i][2];
119 v4 = ( y4 - fPnt[i][7].getY() ) * ( fPnt[i][4] - fPnt[i][7] ) /
120 ( fPnt[i][4].getY() - fPnt[i][7].getY() ) +
121 fPnt[i][7];
122 v5 = ( y5 - fPnt[i][6].getY() ) * ( fPnt[i][5] - fPnt[i][6] ) /
123 ( fPnt[i][5].getY() - fPnt[i][6].getY() ) +
124 fPnt[i][6];
125
126 G4double x1, x5;
127 x1 = penta[pentaNb][4];
128 x5 = penta[pentaNb][5];
129 v1 = ( x1 - v0.getX() ) * ( v1 - v0 ) / ( v1.getX() - v0.getX() ) +
130 v0;
131 v5 = ( x5 - v4.getX() ) * ( v5 - v4 ) / ( v5.getX() - v4.getX() ) + v4;
132
133 fPnt[i][0] = v0;
134 fPnt[i][1] = v1;
135 fPnt[i][4] = v4;
136 fPnt[i][5] = v5;
137
138 fPnt[30 + pentaNb][2] = v1;
139 fPnt[30 + pentaNb][3] = v0;
140 fPnt[30 + pentaNb][6] = v5;
141 fPnt[30 + pentaNb][7] = v4;
142
143 pentaNb++;
144 }
145 }
146
147
148 G4ThreeVector temp[35][8];
149 for ( G4int i = 0; i < 35; i++ )
150 {
151 for ( G4int j = 0; j < 8; j++ )
152 {
153 temp[i][j] = fPnt[i][j];
154 fPnt[i][j].rotateZ( 157.5 * deg );
155 fPnt[i][j].setX( -fPnt[i][j].getX() );
156 }
157
158
159 for ( G4int j = 0; j < 8; j++ )
160 {
161 if ( j < 2 )
162 {
163 G4ThreeVector
v = fPnt[i][j];
164 fPnt[i][j] = fPnt[i][3 - j];
166 }
167 else if ( j >= 4 && j < 6 )
168 {
169 G4ThreeVector
v = fPnt[i][j];
170 fPnt[i][j] = fPnt[i][11 - j];
172 }
173 }
174 }
175
176
177
178
179
180
181
199
200
201
202
203
204
205
206
207
208 for ( G4int i = 0; i < 35; i++ )
209 {
210 for ( G4int j = 0; j < 8; j++ )
211 {
212 G4ThreeVector pPnt1 = temp[i][j];
213 fPnt1[i][j] = pPnt1.rotateZ( 67.5 * deg );
214 }
215 if ( ( i == 3 ) || ( i == 7 ) || ( i == 12 ) || ( i == 17 ) || ( i == 23 ) || ( i == 29 ) )
216 {
217 fPnt1[i][0].setX( 10 );
218 fPnt1[i][1].setX( 10 );
219 fPnt1[i][4].setX( 10 );
220 fPnt1[i][5].setX( 10 );
221
222 G4double y0 = fPnt1[i][0].getY() +
223 10 * ( fPnt1[i][3].getY() - fPnt1[i][0].getY() ) / fPnt1[i][3].getX();
224 G4double y1 = fPnt1[i][1].getY() +
225 10 * ( fPnt1[i][2].getY() - fPnt1[i][1].getY() ) / fPnt1[i][2].getX();
226 G4double y4 = fPnt1[i][4].getY() +
227 10 * ( fPnt1[i][7].getY() - fPnt1[i][4].getY() ) / fPnt1[i][7].getX();
228 G4double y5 = fPnt1[i][5].getY() +
229 10 * ( fPnt1[i][6].getY() - fPnt1[i][5].getY() ) / fPnt1[i][6].getX();
230
231 G4double z0 = fPnt1[i][0].getZ() +
232 10 * ( fPnt1[i][3].getZ() - fPnt1[i][0].getZ() ) / fPnt1[i][3].getX();
233 G4double z1 = fPnt1[i][1].getZ() +
234 10 * ( fPnt1[i][2].getZ() - fPnt1[i][1].getZ() ) / fPnt1[i][2].getX();
235 G4double z4 = fPnt1[i][4].getZ() +
236 10 * ( fPnt1[i][7].getZ() - fPnt1[i][4].getZ() ) / fPnt1[i][7].getX();
237 G4double z5 = fPnt1[i][5].getZ() +
238 10 * ( fPnt1[i][6].getZ() - fPnt1[i][5].getZ() ) / fPnt1[i][6].getX();
239
240 fPnt1[i][0].setY( y0 );
241 fPnt1[i][1].setY( y1 );
242 fPnt1[i][4].setY( y4 );
243 fPnt1[i][5].setY( y5 );
244
245 fPnt1[i][0].setZ( z0 );
246 fPnt1[i][1].setZ( z1 );
247 fPnt1[i][4].setZ( z4 );
248 fPnt1[i][5].setZ( z5 );
249 }
250 }
251}
**********Class see also m_nmax DOUBLE PRECISION m_amel DOUBLE PRECISION m_x2 DOUBLE PRECISION m_alfinv DOUBLE PRECISION m_Xenph INTEGER m_KeyWtm INTEGER m_idyfs DOUBLE PRECISION m_zini DOUBLE PRECISION m_q2 DOUBLE PRECISION m_Wt_KF DOUBLE PRECISION m_WtCut INTEGER m_KFfin *COMMON c_KarLud $ !Input CMS energy[GeV] $ !CMS energy after beam spread beam strahlung[GeV] $ !Beam energy spread[GeV] $ !z boost due to beam spread $ !electron beam mass *ff pair spectrum $ !minimum v
void Exchange(G4int cry1, G4int cry2)