Removal of useless dependecies via forward declarations
[u/mrichter/AliRoot.git] / STRUCT / AliPIPEv3.cxx
1 /**************************************************************************
2  * Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. *
3  *                                                                        *
4  * Author: The ALICE Off-line Project.                                    *
5  * Contributors are mentioned in the code where appropriate.              *
6  *                                                                        *
7  * Permission to use, copy, modify and distribute this software and its   *
8  * documentation strictly for non-commercial purposes is hereby granted   *
9  * without fee, provided that the above copyright notice appears in all   *
10  * copies and that both the copyright notice and this permission notice   *
11  * appear in the supporting documentation. The authors make no claims     *
12  * about the suitability of this software for any purpose. It is          *
13  * provided "as is" without express or implied warranty.                  *
14  **************************************************************************/
15
16 /*
17 $Log$
18 Revision 1.7  2000/06/11 12:38:00  morsch
19 Coding rule violations corrected
20
21 Revision 1.6  1999/10/06 19:57:07  fca
22 Correct materials in pipe
23
24 Revision 1.5  1999/09/29 09:24:30  fca
25 Introduction of the Copyright and cvs Log
26
27 */
28
29 ///////////////////////////////////////////////////////////////////////////////
30 //                                                                           //
31 //  Beam pipe class                                                          //
32 //                                                                           //
33 //Begin_Html
34 /*
35 <img src="picts/AliPIPEClass.gif">
36 */
37 //End_Html
38 //                                                                           //
39 ///////////////////////////////////////////////////////////////////////////////
40
41 #include "AliPIPEv3.h"
42 #include "AliRun.h"
43 #include "AliMC.h"
44 #include "AliMagF.h"
45  
46 ClassImp(AliPIPEv3)
47  
48 //_____________________________________________________________________________
49 AliPIPEv3::AliPIPEv3()
50 {
51   //
52   // Default constructor for beam pipe
53   //
54 }
55  
56 //_____________________________________________________________________________
57 AliPIPEv3::AliPIPEv3(const char *name, const char *title)
58        : AliPIPE(name,title)
59 {
60   //
61   // Standard constructor for beam pipe
62   //
63 }
64  
65 //_____________________________________________________________________________
66 void AliPIPEv3::CreateGeometry()
67 {
68   //
69   // Create Beam Pipe geometry
70   //
71   //Begin_Html
72   /*
73     <img src="picts/AliPIPE.gif">
74   */
75   //End_Html
76   //Begin_Html
77   /*
78     <img src="picts/AliPIPETree.gif">
79   */
80   //End_Html
81
82   Float_t tpar[3], dzmo, zpos;
83   Float_t bepar[3], alpar[3],sspar[3],flange[3],vacpar[3];
84   Float_t bellow[3];
85 //  Float_t undul[3];
86 //  const Double_t z_flange = 150;
87 //for undulated structure
88   char cn18[][5]={"CN01","CN02","CN03","CN04","CN05","CN06","CN07","CN08"};
89   char cn48[][5]={"CN21","CN22","CN23","CN24","CN25","CN26","CN27","CN28"};
90 //  char undul[][5]={'BELO','UNDL'};
91   Float_t zundul;
92   Float_t rundul;
93   Float_t pitch;
94   Float_t thick;
95
96   
97   Int_t *idtmed = fIdtmed->GetArray()-1999;
98 //     the mother of all beam pipes
99
100   tpar[0] = 0.;
101   tpar[1] = 10.;
102   tpar[2] = 1400. / 2;
103   dzmo = tpar[2];
104   gMC->Gsvolu("QQMO", "TUBE", idtmed[2015], tpar, 3);
105
106 //      All beam pipe details as per the provisonal drawings given by Lars
107 //      Leistam on 31.5.99 
108     
109 //     Beryllium  beam pipe, length 56.6 cm, centered at vertex 
110   
111   bepar[0]=0.0;
112   bepar[1]=3.0;
113   bepar[2]=28.3;
114   zpos=0.0;
115   vacpar[0]=0.0;
116   vacpar[1]=2.9;
117   vacpar[2]=bepar[2];
118   //
119   gMC->Gsvolu("QQBE", "TUBE", idtmed[2004], bepar, 3);
120   gMC->Gsvolu("VAC1", "TUBE", idtmed[2015], vacpar, 3);
121   gMC->Gspos("VAC1", 1, "QQBE", 0., 0., 0., 0, "ONLY");
122   gMC->Gspos("QQBE", 1, "QQMO", 0., 0., zpos, 0, "ONLY");
123   
124   // now beam pipes only in negative z-part for use in PMD.
125  
126   // SS Flange 4 cm thick, 5.8 cm ID, 6.3 cm OD
127   flange[0]=0.0;
128   flange[1]=3.15;
129   flange[2]=2.0;
130   zpos = zpos -bepar[2] - flange[2];
131   vacpar[0]=0.0;
132   vacpar[1]=2.9;
133   vacpar[2]=flange[2];
134   //
135   gMC->Gsvolu("QFL1", "TUBE", idtmed[2018], flange, 3);
136   gMC->Gsvolu("VAC2", "TUBE", idtmed[2015], vacpar, 3);
137   gMC->Gspos("VAC2", 1, "QFL1", 0., 0., 0., 0, "ONLY");
138   gMC->Gspos("QFL1", 1, "QQMO", 0., 0., zpos, 0, "ONLY");
139   
140   // Aluminium alloy beam pipe, 1mm thick, 230 cm long
141   alpar[0]=0.0;
142   alpar[1]=3.0;
143   alpar[2]=115.;
144   zpos = zpos - flange[2] - alpar[2];
145
146   vacpar[0]=0.0;
147   vacpar[1]=2.9;
148   vacpar[2]=alpar[2];
149   gMC->Gsvolu("QQAL", "TUBE", idtmed[2003], alpar, 3);
150   gMC->Gsvolu("VAC3", "TUBE", idtmed[2015], vacpar, 3);
151   gMC->Gspos("VAC3", 1, "QQAL", 0., 0., 0., 0, "ONLY");
152   gMC->Gspos("QQAL", 1, "QQMO", 0., 0., zpos, 0, "ONLY");
153
154  
155   // SS tube 2.0 cm long, 0.8 mm thick, 5.96 cm OD
156
157   sspar[0]=0.0;
158   sspar[1]=2.98;
159   sspar[2]=1.0;
160   zpos = zpos - alpar[2] - sspar[2];
161
162   vacpar[0]=0.0;
163   vacpar[1]=2.9;
164   vacpar[2]=sspar[2];
165   gMC->Gsvolu("QSS1", "TUBE", idtmed[2018], sspar, 3);
166   gMC->Gsvolu("VAC4", "TUBE", idtmed[2015], vacpar, 3);
167   gMC->Gspos("VAC4", 1, "QSS1", 0., 0., 0., 0, "ONLY");
168   gMC->Gspos("QSS1", 1, "QQMO", 0., 0., zpos, 0, "ONLY");
169
170
171  // SS Flange 3 cm thick 7.4 cm OD, 5.8 cm ID
172    
173   flange[0]=0.0;
174   flange[1]=3.7;
175   flange[2]=1.5;
176   zpos = zpos - sspar[2] - flange[2];
177
178   vacpar[0]=0.0;
179   vacpar[1]=2.9;
180   vacpar[2]=flange[2];
181   gMC->Gsvolu("QFL2", "TUBE", idtmed[2018], flange, 3);
182   gMC->Gsvolu("VAC5", "TUBE", idtmed[2015], vacpar, 3);
183   gMC->Gspos("VAC5", 1, "QFL2", 0., 0., 0., 0, "ONLY");
184   gMC->Gspos("QFL2", 1, "QQMO", 0., 0., zpos, 0, "ONLY");
185
186
187   // SS tube 4.0 cm long, 0.8 mm thick, 5.96 cm OD
188
189   sspar[0]=0.0;
190   sspar[1]=2.98;
191   sspar[2]=2.0;
192   zpos = zpos - flange[2] - sspar[2];
193
194   vacpar[0]=0.0;
195   vacpar[1]=2.9;
196   vacpar[2]=sspar[2];
197   gMC->Gsvolu("QSS2", "TUBE", idtmed[2018], sspar, 3);
198   gMC->Gsvolu("VAC6", "TUBE", idtmed[2015], vacpar, 3);
199   gMC->Gspos("VAC6", 1, "QSS2", 0., 0., 0., 0, "ONLY");
200   gMC->Gspos("QSS2", 1, "QQMO", 0., 0., zpos, 0, "ONLY");
201
202
203   // *************
204   // SS Bellow 8.4 cm long, 6.5 cm ID, 7.5 cm OD
205   // 0.8 mm thick material, 0.3 cm pitch.
206   // zundul=4.2, rundul=6.5, thick=0.08
207   // **************
208   pitch=0.3;
209   thick=0.08;
210   zundul=4.2;
211   rundul=6.5;
212   Undulation("BELO",pitch,thick,zundul,rundul,cn18);
213 //
214   bellow[2]=zundul;
215   zpos = zpos - sspar[2] - bellow[2];
216   gMC->Gspos("BELO", 1, "QQMO", 0., 0., zpos, 0, "ONLY");
217
218   // SS tube 20.0 cm long, 0.8 mm thick, 5.96 cm OD
219
220   sspar[0]=0.0;
221   sspar[1]=2.98;
222   sspar[2]=10.0;
223   zpos = zpos - bellow[2] - sspar[2];
224
225   vacpar[0]=0.0;
226   vacpar[1]=2.9;
227   vacpar[2]=sspar[2];
228   gMC->Gsvolu("QSS3", "TUBE", idtmed[2018], sspar, 3);
229   gMC->Gsvolu("VAC7", "TUBE", idtmed[2015], vacpar, 3);
230   gMC->Gspos("VAC7", 1, "QSS3", 0., 0., 0., 0, "ONLY");
231   gMC->Gspos("QSS3", 1, "QQMO", 0., 0., zpos, 0, "ONLY");
232
233   // *************
234   // SS Bellow 8.4 cm long, 6.5 cm ID, 7.5 cm OD
235   // 0.8 mm thick material, 0.3 cm pitch.
236   // **************
237 //  
238   zpos = zpos - sspar[2] - bellow[2];
239   gMC->Gspos("BELO", 2, "QQMO", 0., 0., zpos, 0, "ONLY");
240
241   // SS tube 4.7 cm long, 0.8 mm thick, 
242
243   sspar[0]=0.0;
244   sspar[1]=2.98;
245   sspar[2]=4.7/2.;
246   zpos = zpos - bellow[2] - sspar[2];
247
248   vacpar[0]=0.0;
249   vacpar[1]=2.9;
250   vacpar[2]=sspar[2];
251   gMC->Gsvolu("QSS4", "TUBE", idtmed[2018], sspar, 3);
252   gMC->Gsvolu("VAC8", "TUBE", idtmed[2015], vacpar, 3);
253   gMC->Gspos("VAC8", 1, "QSS4", 0., 0., 0., 0, "ONLY");
254   gMC->Gspos("QSS4", 1, "QQMO", 0., 0., zpos, 0, "ONLY");
255
256   // SS Flange 2.2 cm thick, ID=5.8 cm, OD=9.8 cm
257
258   flange[0]=0.0;
259   flange[1]=4.9;
260   flange[2]=1.1;
261   zpos = zpos - sspar[2] - flange[2];
262
263   vacpar[0]=0.0;
264   vacpar[1]=2.9;
265   vacpar[2]=flange[2];
266   gMC->Gsvolu("QFL3", "TUBE", idtmed[2018], flange, 3);
267   gMC->Gsvolu("VAC9", "TUBE", idtmed[2015], vacpar, 3);
268   gMC->Gspos("VAC9", 1, "QFL3", 0., 0., 0., 0, "ONLY");
269   gMC->Gspos("QFL3", 1, "QQMO", 0., 0., zpos, 0, "ONLY");
270
271 //Total of 3150 mm from vertex on the negative side upto this point.
272
273 // SS tube 20.0 cm long, 0.15 cm thick, 5.8 cm ID, to support vac. pump
274
275   sspar[0]=0.0;
276   sspar[1]=3.05;
277   sspar[2]=10.0;
278   zpos = zpos - flange[2] - sspar[2];
279
280   vacpar[0]=0.0;
281   vacpar[1]=2.9;
282   vacpar[2]=sspar[2];
283   gMC->Gsvolu("QSS5", "TUBE", idtmed[2018], sspar, 3);
284   gMC->Gsvolu("VA10", "TUBE", idtmed[2015], vacpar, 3);
285   gMC->Gspos("VA10", 1, "QSS5", 0., 0., 0., 0, "ONLY");
286   gMC->Gspos("QSS5", 1, "QQMO", 0., 0., zpos, 0, "ONLY");
287
288 // 
289   // last item, undulated SS beam pipe, pitch=0.25, length= 342.0 cm
290   // material thickness 0.015 cm, ID=6.0 cm,
291   // zundul=171.0, thick=0.015, rundul=3.0
292   pitch=0.25;
293   thick=0.015;
294   zundul=171;
295   rundul=3.0;
296   Undulation("UNDL",pitch,thick,zundul,rundul,cn48);
297   //
298   zpos = zpos - sspar[2] - zundul;
299   gMC->Gspos("UNDL", 1, "QQMO", 0., 0., zpos, 0, "ONLY");
300 //
301   gMC->Gspos("QQMO", 1, "ALIC", 0., 0., 0.1, 0, "ONLY");
302
303 //      total of 6770 mm length upto this point, end of undulated beam
304 //      pipe section.
305
306 //      SS flange 22*2 mm thick
307
308
309   flange[0]=0.0;
310   flange[1]=6.3;
311   flange[2]=2.2;
312   zpos = zpos  - zundul - flange[2];
313
314   vacpar[0]=0.0;
315   vacpar[1]=2.9;
316   vacpar[2]=flange[2];
317   gMC->Gsvolu("QFL4", "TUBE", idtmed[2018], flange, 3);
318   gMC->Gsvolu("VC11", "TUBE", idtmed[2015], vacpar, 3);
319   gMC->Gspos("VC11", 1, "QFL4", 0., 0., 0., 0, "ONLY");
320   gMC->Gspos("QFL4", 1, "QQMO", 0., 0., zpos, 0, "ONLY");
321
322 }
323
324 //_____________________________________________________________________________
325 void AliPIPEv3::DrawModule()
326 {  
327   //
328   // Draw a shaded view of the Beam Pipe
329   //
330
331   // Set everything unseen
332   gMC->Gsatt("*", "seen", -1);
333   // 
334   // Set ALIC mother transparent
335   gMC->Gsatt("ALIC","SEEN",0);
336   //
337   // Set the volumes visible
338   gMC->Gsatt("QQMO","seen",1);
339   gMC->Gsatt("QQBE","seen",1);
340   gMC->Gsatt("QFL1","seen",1);
341   gMC->Gsatt("QQAL","seen",1);
342   gMC->Gsatt("QSS1","seen",1);
343   gMC->Gsatt("QFL2","seen",1);
344   gMC->Gsatt("QSS2","seen",1);
345   gMC->Gsatt("QSS3","seen",1);
346   gMC->Gsatt("QSS4","seen",1);
347   gMC->Gsatt("QFL3","seen",1);
348   gMC->Gsatt("QSS5","seen",1);
349   gMC->Gsatt("BELO","seen",1);
350   gMC->Gsatt("UNDL","seen",1);
351   //
352   gMC->Gdopt("hide", "on");
353   gMC->Gdopt("shad", "on");
354   gMC->Gsatt("*", "fill", 7);
355   gMC->SetClipBox(".");
356   gMC->SetClipBox("*", 0, 3000, -3000, 3000, -6000, 6000);
357   gMC->DefaultRange();
358   gMC->Gdraw("alic", 40, 30, 0, 3, 5, .04, .04);
359   gMC->Gdhead(1111, "Beam Pipe");
360   gMC->Gdman(16, 6, "MAN");
361   gMC->Gdopt("hide","off");
362 }
363
364 //_____________________________________________________________________________
365 void AliPIPEv3::CreateMaterials()
366 {
367   //
368   // Create materials for beam pipe
369   //
370
371   Int_t   isxfld = gAlice->Field()->Integ();
372   Float_t sxmgmx = gAlice->Field()->Max();
373   
374   Float_t asteel[4] = { 55.847,51.9961,58.6934,28.0855 };
375   Float_t zsteel[4] = { 26.,24.,28.,14. };
376   Float_t wsteel[4] = { .715,.18,.1,.005 };
377   
378   Float_t epsil, stmin, tmaxfd, deemax, stemax;
379   
380   //     STEEL 
381   
382   
383   // --- Define the various materials for GEANT --- 
384   AliMaterial(5, "BERILLIUM$", 9.01, 4., 1.848, 35.3, 36.7);
385   AliMaterial(4, "ALUMINIUM$", 26.98, 13., 2.7, 8.9, 18.5);
386   AliMaterial(16, "VACUUM$ ", 1e-16, 1e-16, 1e-16, 1e16, 1e16);
387   AliMaterial(15, "AIR$      ", 14.61, 7.3, .001205, 30423.24, 67500);
388   AliMixture(19, "STAINLESS STEEL$", asteel, zsteel, 7.88, 4, wsteel);
389   
390   // **************** 
391   //     Defines tracking media parameters. 
392   //     Les valeurs sont commentees pour laisser le defaut 
393   //     a GEANT (version 3-21, page CONS200), f.m. 
394   epsil  = .001;  // Tracking precision, 
395   stemax = -1.;   // Maximum displacement for multiple scat 
396   tmaxfd = -20.;  // Maximum angle due to field deflection 
397   deemax = -.3;   // Maximum fractional energy loss, DLS 
398   stmin  = -.8;
399   
400   //    Air 
401   
402   AliMedium(15, "AIR_L3_US", 15, 0, isxfld, sxmgmx, tmaxfd, stemax, deemax, epsil, stmin);
403   
404   //    Beryllium 
405   
406   AliMedium(5, "BE_L3_US", 5, 0, isxfld, sxmgmx, tmaxfd, stemax, deemax, epsil, stmin);
407
408   
409     //    Aluminium 
410   
411   AliMedium(4, "AL_L3_US", 4, 0, isxfld, sxmgmx, tmaxfd, stemax, deemax, epsil, stmin);
412
413   //   Vacuum
414
415   AliMedium(16, "VA_L3_US", 16, 0, isxfld, sxmgmx, tmaxfd, stemax, deemax, epsil, stmin);
416   
417   //    Steel 
418   
419   AliMedium(19, "ST_L3_US", 19, 0, isxfld, sxmgmx, tmaxfd, stemax, deemax, epsil, stmin);
420 }
421 //
422 void AliPIPEv3::Undulation(char *undul, Float_t pitch, Float_t thick,
423                         Float_t zundul, Float_t rundul, char (*cone)[5])
424 {
425   //
426   // RUNDUL   : Internal radius of the undulated chamber
427   // THICK    : material thickness
428   // PITCH    : one-QUARTER wave of undulation (cm)
429   // ZUNDUL   : half length (cm)
430   //
431   // The undulated structure is desgned as a superposition of eight CONES
432   // of suitable sizes, where the inner/outer radius of the cone increases,
433   // then decreases, each half of the wave is assumed to be a semicircle,
434   // which allows to calculate the thickness and the radii of the cone, by
435   // dividing the semicircle into 4 parts of equal arc length.
436   // Thus apear the constants 0.293 and 0.707.
437   //
438
439   const Float_t kConst1 = .293;
440   const Float_t kConst2 = .707;
441
442   // Local variables
443   Int_t j, nwave;
444   Float_t dcone1[5], dcone2[5], dcone3[5], dcone4[5], dcone5[5],
445     dcone6[5], dcone7[5], dcone8[5];
446   Float_t xc, yc, zc, dundul[3];
447   Int_t *idtmed = fIdtmed->GetArray()-1999;
448
449   // Function Body
450
451   dcone1[0] = kConst1 * pitch / 2;
452   dcone1[1] = rundul;
453   dcone1[2] = dcone1[1] + thick;
454   dcone1[3] = dcone1[1] + kConst2 * pitch;
455   dcone1[4] = dcone1[3] + thick;
456
457   dcone2[0] = kConst2 * pitch / 2;
458   dcone2[1] = dcone1[3];
459   dcone2[2] = dcone1[4];
460   dcone2[3] = dcone2[1] + kConst1 * pitch;
461   dcone2[4] = dcone2[3] + thick;
462
463   dcone3[0] = dcone2[0];
464   dcone3[1] = dcone2[3];
465   dcone3[2] = dcone2[4];
466   dcone3[3] = dcone2[1];
467   dcone3[4] = dcone2[2];
468
469   dcone4[0] = dcone1[0];
470   dcone4[1] = dcone1[3];
471   dcone4[2] = dcone1[4];
472   dcone4[3] = dcone1[1];
473   dcone4[4] = dcone1[2];
474
475   dcone5[0] = dcone1[0];
476   dcone5[1] = dcone1[1] - thick;
477   dcone5[2] = dcone1[1];
478   dcone5[3] = dcone5[1] - kConst2 * pitch;
479   dcone5[4] = dcone5[3] + thick;
480
481   dcone6[0] = dcone2[0];
482   dcone6[1] = dcone5[3];
483   dcone6[2] = dcone5[4];
484   dcone6[3] = dcone6[1] - kConst1 * pitch;
485   dcone6[4] = dcone6[3] + thick;
486   dcone7[0] = dcone6[0];
487   dcone7[1] = dcone6[3];
488   dcone7[2] = dcone6[4];
489   dcone7[3] = dcone5[3];
490   dcone7[4] = dcone5[4];
491
492   dcone8[0] = dcone5[0];
493   dcone8[1] = dcone7[3];
494   dcone8[2] = dcone7[4];
495   dcone8[3] = dcone5[1];
496   dcone8[4] = dcone5[2];
497
498   gMC->Gsvolu(cone[0], "CONE", idtmed[2018], dcone1, 5);
499   gMC->Gsvolu(cone[1], "CONE", idtmed[2018], dcone2, 5);
500   gMC->Gsvolu(cone[2], "CONE", idtmed[2018], dcone3, 5);
501   gMC->Gsvolu(cone[3], "CONE", idtmed[2018], dcone4, 5);
502   gMC->Gsvolu(cone[4], "CONE", idtmed[2018], dcone5, 5);
503   gMC->Gsvolu(cone[5], "CONE", idtmed[2018], dcone6, 5);
504   gMC->Gsvolu(cone[6], "CONE", idtmed[2018], dcone7, 5);
505   gMC->Gsvolu(cone[7], "CONE", idtmed[2018], dcone8, 5);
506   gMC->Gsatt(cone[0], "SEEN", 0);
507   gMC->Gsatt(cone[1], "SEEN", 0);
508   gMC->Gsatt(cone[2], "SEEN", 0);
509   gMC->Gsatt(cone[3], "SEEN", 0);
510   gMC->Gsatt(cone[4], "SEEN", 0);
511   gMC->Gsatt(cone[5], "SEEN", 0);
512   gMC->Gsatt(cone[6], "SEEN", 0);
513   gMC->Gsatt(cone[7], "SEEN", 0);
514
515   // DEFINE AN IMAGINARY TUBE VOLUME FOR UNDULATED CHAMBER, FILL WITH VACUUM
516
517   nwave = Int_t (zundul / (pitch * 2) + .1);
518   dundul[2] = pitch * 2 * nwave;
519   dundul[1] = rundul + pitch + thick * 2;
520   //
521   dundul[0] = 1e-4;
522   gMC->Gsvolu(undul, "TUBE", idtmed[2015], dundul, 3);
523
524   xc = 0;
525   yc = 0;
526   zc = -dundul[2] + dcone1[0];
527   for (j = 1; j <= nwave; ++j) {
528     gMC->Gspos(cone[0], j, undul, xc, yc, zc, 0, "ONLY");
529     zc = zc + dcone1[0] + dcone2[0];
530     gMC->Gspos(cone[1], j, undul, xc, yc, zc, 0, "ONLY");
531     zc = zc + dcone2[0] + dcone3[0];
532     gMC->Gspos(cone[2], j, undul, xc, yc, zc, 0, "ONLY");
533     zc = zc + dcone3[0] + dcone4[0];
534     gMC->Gspos(cone[3], j, undul, xc, yc, zc, 0, "ONLY");
535     zc = zc + dcone4[0] + dcone5[0];
536     gMC->Gspos(cone[4], j, undul, xc, yc, zc, 0, "ONLY");
537     zc = zc + dcone5[0] + dcone6[0];
538     gMC->Gspos(cone[5], j, undul, xc, yc, zc, 0, "ONLY");
539     zc = zc + dcone6[0] + dcone7[0];
540     gMC->Gspos(cone[6], j, undul, xc, yc, zc, 0, "ONLY");
541     zc = zc + dcone7[0] + dcone8[0];
542     gMC->Gspos(cone[7], j, undul, xc, yc, zc, 0, "ONLY");
543     zc = zc + dcone8[0] + dcone1[0];
544   }
545 }