60 {
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
83
84 G4int pentaNb = 0;
85 for ( G4int i = 0; i < 30; i++ )
86 {
87 for ( G4int j = 0; j < 8; j++ )
88 {
89
90 G4ThreeVector* pPnt =
91 new G4ThreeVector( param[i][j], param[i][j + 8], param[i][j + 16] - WorldZPosition );
92 fPnt[i][j] = *pPnt;
93 }
94
95 if ( i == 5 || i == 6 || i == 14 || i == 15 || i == 16 )
96 {
97 for ( G4int j = 0; j < 8; j++ ) fPnt[30 + pentaNb][j] = fPnt[i][j];
98
99
100 G4double y0, y1, y4, y5;
101 G4ThreeVector v0, v1, v4, v5;
102 y0 = penta[pentaNb][0];
103 y1 = penta[pentaNb][1];
104 y4 = penta[pentaNb][2];
105 y5 = penta[pentaNb][3];
106 v0 = ( y0 - fPnt[i][3].getY() ) * ( fPnt[i][0] - fPnt[i][3] ) /
107 ( fPnt[i][0].getY() - fPnt[i][3].getY() ) +
108 fPnt[i][3];
109 v1 = ( y1 - fPnt[i][2].getY() ) * ( fPnt[i][1] - fPnt[i][2] ) /
110 ( fPnt[i][1].getY() - fPnt[i][2].getY() ) +
111 fPnt[i][2];
112 v4 = ( y4 - fPnt[i][7].getY() ) * ( fPnt[i][4] - fPnt[i][7] ) /
113 ( fPnt[i][4].getY() - fPnt[i][7].getY() ) +
114 fPnt[i][7];
115 v5 = ( y5 - fPnt[i][6].getY() ) * ( fPnt[i][5] - fPnt[i][6] ) /
116 ( fPnt[i][5].getY() - fPnt[i][6].getY() ) +
117 fPnt[i][6];
118
119 G4double x1, x5;
120 x1 = penta[pentaNb][4];
121 x5 = penta[pentaNb][5];
122 v1 = ( x1 - v0.getX() ) * ( v1 - v0 ) / ( v1.getX() - v0.getX() ) +
123 v0;
124 v5 = ( x5 - v4.getX() ) * ( v5 - v4 ) / ( v5.getX() - v4.getX() ) + v4;
125
126 fPnt[i][0] = v0;
127 fPnt[i][1] = v1;
128 fPnt[i][4] = v4;
129 fPnt[i][5] = v5;
130
131 fPnt[30 + pentaNb][2] = v1;
132 fPnt[30 + pentaNb][3] = v0;
133 fPnt[30 + pentaNb][6] = v5;
134 fPnt[30 + pentaNb][7] = v4;
135
136 pentaNb++;
137 }
138 }
139
140
141 G4ThreeVector temp[35][8];
142 for ( G4int i = 0; i < 35; i++ )
143 {
144 for ( G4int j = 0; j < 8; j++ )
145 {
146 temp[i][j] = fPnt[i][j];
147 fPnt[i][j].rotateZ( 157.5 * deg );
148 fPnt[i][j].setX( -fPnt[i][j].getX() );
149 }
150
151
152 for ( G4int j = 0; j < 8; j++ )
153 {
154 if ( j < 2 )
155 {
156 G4ThreeVector
v = fPnt[i][j];
157 fPnt[i][j] = fPnt[i][3 - j];
159 }
160 else if ( j >= 4 && j < 6 )
161 {
162 G4ThreeVector
v = fPnt[i][j];
163 fPnt[i][j] = fPnt[i][11 - j];
165 }
166 }
167 }
168
169
187
188
189
190
191
192
193
194
195
196 for ( G4int i = 0; i < 35; i++ )
197 {
198 for ( G4int j = 0; j < 8; j++ )
199 {
200 G4ThreeVector pPnt1 = temp[i][j];
201 fPnt1[i][j] = pPnt1.rotateZ( 67.5 * deg );
202 }
203 if ( ( i == 3 ) || ( i == 7 ) || ( i == 12 ) || ( i == 17 ) || ( i == 23 ) || ( i == 29 ) )
204 {
205 fPnt1[i][0].setX( 10 );
206 fPnt1[i][1].setX( 10 );
207 fPnt1[i][4].setX( 10 );
208 fPnt1[i][5].setX( 10 );
209
210 G4double y0 = fPnt1[i][0].getY() +
211 10 * ( fPnt1[i][3].getY() - fPnt1[i][0].getY() ) / fPnt1[i][3].getX();
212 G4double y1 = fPnt1[i][1].getY() +
213 10 * ( fPnt1[i][2].getY() - fPnt1[i][1].getY() ) / fPnt1[i][2].getX();
214 G4double y4 = fPnt1[i][4].getY() +
215 10 * ( fPnt1[i][7].getY() - fPnt1[i][4].getY() ) / fPnt1[i][7].getX();
216 G4double y5 = fPnt1[i][5].getY() +
217 10 * ( fPnt1[i][6].getY() - fPnt1[i][5].getY() ) / fPnt1[i][6].getX();
218
219 G4double z0 = fPnt1[i][0].getZ() +
220 10 * ( fPnt1[i][3].getZ() - fPnt1[i][0].getZ() ) / fPnt1[i][3].getX();
221 G4double z1 = fPnt1[i][1].getZ() +
222 10 * ( fPnt1[i][2].getZ() - fPnt1[i][1].getZ() ) / fPnt1[i][2].getX();
223 G4double z4 = fPnt1[i][4].getZ() +
224 10 * ( fPnt1[i][7].getZ() - fPnt1[i][4].getZ() ) / fPnt1[i][7].getX();
225 G4double z5 = fPnt1[i][5].getZ() +
226 10 * ( fPnt1[i][6].getZ() - fPnt1[i][5].getZ() ) / fPnt1[i][6].getX();
227
228 fPnt1[i][0].setY( y0 );
229 fPnt1[i][1].setY( y1 );
230 fPnt1[i][4].setY( y4 );
231 fPnt1[i][5].setY( y5 );
232
233 fPnt1[i][0].setZ( z0 );
234 fPnt1[i][1].setZ( z1 );
235 fPnt1[i][4].setZ( z4 );
236 fPnt1[i][5].setZ( z5 );
237 }
238 }
239}
**********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)