1 /**************************************************************************
2 * Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. *
4 * Author: The ALICE Off-line Project. *
5 * Contributors are mentioned in the code where appropriate. *
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 **************************************************************************/
18 Revision 1.63 2003/02/12 10:39:05 hristov
19 Updated AliTrackReference class (S.Radomski)
21 Revision 1.62 2003/01/16 08:10:13 hristov
22 Correcting usage of string arrays (valgrind)
24 Revision 1.61 2002/11/21 23:05:27 alibrary
25 Removing AliMC and AliMCProcess
27 Revision 1.60 2002/10/22 14:45:47 alibrary
28 Introducing Riostream.h
30 Revision 1.59 2002/10/14 14:57:08 hristov
31 Merging the VirtualMC branch to the main development branch (HEAD)
33 Revision 1.53.6.4 2002/10/14 13:14:08 hristov
34 Updating VirtualMC to v3-09-02
36 Revision 1.58 2002/10/02 17:56:34 barbera
37 Bug in copy 37 of volume I570 corrected (thanks to J. Belikov)
39 Revision 1.57 2002/06/12 18:57:25 nilsen
40 Added TrackReference hits for ITS Mother volume at request of TRD and TOF.
42 Revision 1.56 2002/05/10 22:30:27 nilsen
43 fix to use default paramters for the SDD response.
45 Revision 1.55 2002/04/13 22:21:12 nilsen
46 New default value of noise for SDD simulations introduced.
48 Revision 1.54 2002/03/28 16:17:03 nilsen
49 Set new Geant Step size and related parameters for the ITS materials.
51 Revision 1.53 2001/11/28 01:35:45 nilsen
52 Using standard constructors instead of default constructors for Clusterfinder,
53 Response, and FastSimulator.
55 Revision 1.52 2001/10/22 11:00:54 hristov
56 New naming schema of the rotation matrices in BuildGeometry() to avoid redefinition in other detectors (R.Barbera)
58 Revision 1.51 2001/10/19 10:18:49 barbera
61 Revision 1.50 2001/10/18 12:25:07 barbera
62 Detailed geometry in BuildGeometry() commented out (450 MB needed to compile the file). Six cylinders put back but improved by comparison with the ITS coarse geometry
64 Revision 1.49 2001/10/18 03:09:21 barbera
65 The method BuildGeometry() has been completely rewritten. Now display.C can display the detailed ITS geometry instead of the old six dummy cylunders.
67 Revision 1.48 2001/10/17 04:35:32 barbera
68 Checks for the det and chip thickness modified in order to set the dafault values to 200 um if the user chosen values are outside the range 100-300 um
70 Revision 1.47 2001/10/04 22:33:39 nilsen
71 Fixed bugs in SetDefaults.
73 Revision 1.46 2001/10/01 19:34:08 nilsen
74 Fixed a bug in asigning detector types in SetDefaults under SSD layer 6.
76 Revision 1.45 2001/06/07 14:42:14 barbera
77 Both chip and det thicknesses set to [100,300]
79 Revision 1.44 2001/05/31 19:24:47 barbera
80 Default values of SPD detector and chip thickness set to 200 microns as defined by the Technical Board
82 Revision 1.43 2001/05/30 16:15:47 fca
83 Correct comparison wiht AliGeant3::Class() introduced. Thanks to I.Hrivnacova
85 Revision 1.42 2001/05/30 15:55:35 hristov
86 Strings compared instead of pointers
88 Revision 1.41 2001/05/30 14:04:31 hristov
89 Dynamic cast replaced (F.Carminati)
91 Revision 1.40 2001/05/25 15:59:59 morsch
92 Overlaps corrected. (R. Barbera)
94 Revision 1.38 2001/05/16 08:17:49 hristov
95 Bug fixed in the StepManager to account for the difference in the geometry tree for the ITS pixels. This fixes both the funny distribution of pixel coordinates and the missing hits/digits/points in many sectors of the ITS pixel barrel. Also included is a patch to properly get and use the detector dimensions through out the ITS code. (B.Nilsen)
97 Revision 1.37 2001/05/10 00:12:59 nilsen
98 Finished fixing up the default segmentation for the PPR geometry.
100 Revision 1.36 2001/05/09 01:02:21 nilsen
101 Finished fixing SetDefaults for the segmentation of SPD, SDD, and SSD.
103 Revision 1.35 2001/05/03 08:40:15 barbera
104 Volume ITSD slightly modified to be consistent with v5. Some improvement in the printouts. The last commit did not complete successfully.
106 Revision 1.33 2001/05/01 22:40:42 nilsen
107 Partical update of SetDefault.
109 Revision 1.32 2001/04/22 13:48:09 barbera
110 New values of media parameters and thickness of SPD end-ladder electronics as given by Fabio Formenti
112 Revision 1.31 2001/04/04 07:02:16 barbera
113 Position of the cylinders holding rails corrected
115 Revision 1.30 2001/03/29 22:02:30 barbera
116 Some changes to the services due to the new drawings from the engineers.
118 Revision 1.29 2001/03/29 05:28:56 barbera
119 Rails material changed from aluminum to carbon fiber according with the decision of the last Technical Board
121 Revision 1.28 2001/03/28 06:40:20 barbera
122 Central and services mother volumes made consistenf for detailed and coarse geometry. Switch for rails added to the coarse geometries
124 Revision 1.26 2001/03/23 00:12:23 nilsen
125 Set Reading of AliITSgeom data from Geant3 common blocks as the default and
126 not a .det file. Removed redundent calls to BuildGeometry.
128 Revision 1.25 2001/03/20 19:22:51 barbera
129 Flags for the rails and the cooling fluid added. Some changes in the volumes of the SSD cones after the meeting with the engineers in Torino.
131 Revision 1.23 2001/03/13 21:18:44 barbera
132 Some misleading comments removed
134 Revision 1.22 2001/03/13 18:13:30 barbera
135 Some mother volumes sligthly modified to eliminate an overlap with the absorber
137 Revision 1.21 2001/03/13 08:36:23 hristov
138 fabsf replaced by TMath::Abs
140 Revision 1.20 2001/03/13 00:17:41 barbera
141 New SDD geometry got grom F. Tosello and checked by the SDD engineers
143 Revision 1.19 2001/02/28 18:23:13 barbera
144 Setters and getters to set/get the detector and chip thickness on SPD layers added
146 Revision 1.18 2001/02/27 23:18:24 barbera
147 Full parameterization of detector and chip thicknesses for layer 1 and layer 2 of SPD as requested by the project leader
149 Revision 1.17 2001/02/19 22:14:55 nilsen
150 Fix for all 4 versions 11, 12, 21, and 22.
152 Revision 1.16 2001/02/19 20:10:34 barbera
153 Set option=2 and thickness=2 as default values --> SetMinorVersion=22
155 Revision 1.15 2001/02/19 19:44:00 barbera
156 Air density parameter corrected
158 Revision 1.14 2001/02/13 16:53:35 nilsen
159 Fixed a but when trying to use GEANT4. Needed to replace
160 if(!((TGeant3*)gMC)) with if(!(dynamic_casst<TGeant3*>(gMC)))
161 because just casting gMC to be TGeant3* even when it realy is a TGeant3 pointer
162 did not result in a zero value. For AliITSv5asymm and AliITSv5symm, needed
163 to fix a bug in the initilizers and a bug in BuildGeometry. This is now done
164 in the same way as in AliITSv5.cxx.
166 Revision 1.13 2001/02/09 20:06:26 nilsen
167 Fixed bug in distructor. Can't distroy fixxed length arrays. Thanks Peter.
169 Revision 1.12 2001/02/09 13:53:38 barbera
170 Int_t redefinition avoided
172 Revision 1.11 2001/02/09 06:55:38 barbera
173 SPD option re-set to B. It was A by mistake
175 Revision 1.10 2001/02/09 00:05:31 nilsen
176 Added fMajor/MinorVersion variables and made other changes to better make
177 use of the new code changes in AliITSgeom related classes.
180 Revision 1.9 2001/02/08 16:00:37 barbera
181 New thicknesses (300+300 um) added for SPD chips and detectors and set as default. Many other refinements.
183 Revision 1.8 2001/02/06 08:03:44 barbera
184 Material redefinition in SDD
186 Revision 1.7 2001/02/05 13:34:57 barbera
187 Updated version of the ITS detailed geometry
189 Revision 1.5 2001/01/30 09:23:13 hristov
190 Streamers removed (R.Brun)
192 Revision 1.4 2001/01/23 20:08:03 barbera
193 Option B for pixels implemented and set as default
195 Revision 1.3 2001/01/17 08:08:20 barbera
196 Some media parameters modified
198 Revision 1.1.2.1 2001/01/15 13:38:08 barbera
199 New ITS detailed geometry to be used for the PPR
203 ///////////////////////////////////////////////////////////////////////////////
205 // Inner Traking System version PPR asymmetric //
206 // This class contains the base procedures for the Inner Tracking System //
208 // Authors: R. Barbera //
210 // Created January 15 2001. //
212 // NOTE: THIS IS THE ASYMMETRIC PPR geometry of the ITS. //
214 ///////////////////////////////////////////////////////////////////////////////
216 // See AliITSvPPRasymm::StepManager().
217 #include <Riostream.h>
221 #include <TGeometry.h>
226 #include <TFile.h> // only required for Tracking function?
228 #include <TObjArray.h>
229 #include <TLorentzVector.h>
230 #include <TObjString.h>
231 #include <TClonesArray.h>
237 #include "AliConst.h"
238 #include "AliITSGeant3Geometry.h"
239 #include "AliTrackReference.h"
240 #include "AliITShit.h"
242 #include "AliITSvPPRasymm.h"
243 #include "AliITSgeom.h"
244 #include "AliITSgeomSPD.h"
245 #include "AliITSgeomSDD.h"
246 #include "AliITSgeomSSD.h"
247 #include "AliITSDetType.h"
248 #include "AliITSresponseSPD.h"
249 #include "AliITSresponseSDD.h"
250 #include "AliITSresponseSSD.h"
251 #include "AliITSsegmentationSPD.h"
252 #include "AliITSsegmentationSDD.h"
253 #include "AliITSsegmentationSSD.h"
254 #include "AliITSsimulationSPD.h"
255 #include "AliITSsimulationSDD.h"
256 #include "AliITSsimulationSSD.h"
257 #include "AliITSClusterFinderSPD.h"
258 #include "AliITSClusterFinderSDD.h"
259 #include "AliITSClusterFinderSSD.h"
262 ClassImp(AliITSvPPRasymm)
264 //_____________________________________________________________________________
265 AliITSvPPRasymm::AliITSvPPRasymm() {
266 ////////////////////////////////////////////////////////////////////////
267 // Standard default constructor for the ITS version 8.
268 ////////////////////////////////////////////////////////////////////////
274 fEuclidOut = kFALSE; // Don't write Euclide file
275 fGeomDetOut = kFALSE; // Don't write .det file
276 fGeomDetIn = kFALSE; // Don't Read .det file
277 fMajorVersion = IsVersion();
279 for(i=0;i<60;i++) fRead[i] = '\0';
280 for(i=0;i<60;i++) fWrite[i] = '\0';
281 for(i=0;i<60;i++) fEuclidGeomDet[i] = '\0';
283 //_____________________________________________________________________________
284 AliITSvPPRasymm::AliITSvPPRasymm(const char *name, const char *title) : AliITS(name, title){
285 ////////////////////////////////////////////////////////////////////////
286 // Standard constructor for the ITS version 8.
287 ////////////////////////////////////////////////////////////////////////
291 fIdName = new TString[fIdN];
298 fIdSens = new Int_t[fIdN];
299 for(i=0;i<fIdN;i++) fIdSens[i] = 0;
300 fMajorVersion = IsVersion();
302 fEuclidOut = kFALSE; // Don't write Euclide file
303 fGeomDetOut = kFALSE; // Don't write .det file
304 fGeomDetIn = kFALSE; // Don't Read .det file
310 fEuclidGeometry="$ALICE_ROOT/ITS/ITSgeometry_vPPRasymm2.euc";
311 strncpy(fEuclidGeomDet,"$ALICE_ROOT/ITS/ITSgeometry_vPPRasymm2.det",60);
312 strncpy(fRead,fEuclidGeomDet,60);
313 strncpy(fWrite,fEuclidGeomDet,60);
315 //____________________________________________________________________________
316 AliITSvPPRasymm::AliITSvPPRasymm(const AliITSvPPRasymm &source){
317 ////////////////////////////////////////////////////////////////////////
318 // Copy Constructor for ITS version 8.
319 ////////////////////////////////////////////////////////////////////////
320 if(&source == this) return;
321 Warning("Copy Constructor","Not allowed to copy AliITSvPPRasymm");
324 //_____________________________________________________________________________
325 AliITSvPPRasymm& AliITSvPPRasymm::operator=(const AliITSvPPRasymm &source){
326 ////////////////////////////////////////////////////////////////////////
327 // Assignment operator for the ITS version 8.
328 ////////////////////////////////////////////////////////////////////////
329 if(&source == this) return *this;
330 Warning("= operator","Not allowed to copy AliITSvPPRasymm");
333 //_____________________________________________________________________________
334 AliITSvPPRasymm::~AliITSvPPRasymm() {
335 ////////////////////////////////////////////////////////////////////////
336 // Standard destructor for the ITS version 8.
337 ////////////////////////////////////////////////////////////////////////
339 //__________________________________________________________________________
340 void AliITSvPPRasymm::BuildGeometry(){
341 ////////////////////////////////////////////////////////////////////////
342 // Geometry builder for the ITS version 8.
343 ////////////////////////////////////////////////////////////////////////
346 const Int_t kColorITS=kYellow;
348 top = gAlice->GetGeometry()->GetNode("alice");
351 new TTUBE("S_layer1","Layer1 of ITS","void",3.8095,3.8095+1.03*9.36/100.,14.35);
353 node = new TNode("Layer1","Layer1","S_layer1",0,0,0,"");
354 node->SetLineColor(kColorITS);
357 new TTUBE("S_layer2","Layer2 of ITS","void",7.,7.+1.03*9.36/100.,14.35);
359 node = new TNode("Layer2","Layer2","S_layer2",0,0,0,"");
360 node->SetLineColor(kColorITS);
363 new TTUBE("S_layer3","Layer3 of ITS","void",15.,15.+0.94*9.36/100.,25.1);
365 node = new TNode("Layer3","Layer3","S_layer3",0,0,0,"");
366 node->SetLineColor(kColorITS);
369 new TTUBE("S_layer4","Layer4 of ITS","void",24.1,24.1+0.95*9.36/100.,32.1);
371 node = new TNode("Layer4","Layer4","S_layer4",0,0,0,"");
372 node->SetLineColor(kColorITS);
375 new TTUBE("S_layer5","Layer5 of ITS","void",38.5,38.5+0.91*9.36/100.,49.405);
377 node = new TNode("Layer5","Layer5","S_layer5",0,0,0,"");
378 node->SetLineColor(kColorITS);
381 new TTUBE("S_layer6","Layer6 of ITS","void",43.5765,43.5765+0.87*9.36/100.,55.27);
383 node = new TNode("Layer6","Layer6","S_layer6",0,0,0,"");
384 node->SetLineColor(kColorITS);
391 TNode *sub1node, *sub2node, *sub3node, *sub4node, *sub5node;
393 // Define some variables for SPD
396 Float_t dits1[3], di101[3], di107[3], di10b[3]; // for layer 1
397 Float_t di103[3], di10a[3]; // for layer 1
398 Float_t dits2[3], di1d1[3], di1d7[3], di20b[3]; // for layer 2
399 Float_t di1d3[3], di20a[3]; // for layer 2
401 Float_t ddet1=200.; // total detector thickness on layer 1 (micron)
402 Float_t dchip1=200.; // total chip thickness on layer 1 (micron)
404 Float_t ddet2=200.; // total detector thickness on layer 2 (micron)
405 Float_t dchip2=200.; // total chip thickness on layer 2 (micron)
407 Float_t dbus=300.; // total bus thickness on both layers (micron)
409 ddet1 = GetThicknessDet1();
410 ddet2 = GetThicknessDet2();
411 dchip1 = GetThicknessChip1();
412 dchip2 = GetThicknessChip2();
414 cout << "par: " << ddet1 << " " << ddet2 << " " << ddet2 << " " << dchip1 << " " << dchip2 << endl;
416 if(ddet1 < 100. || ddet1 > 300.) {
417 cout << "ITS - WARNING: the detector thickness for layer 1 is outside the range of [100,300] microns."
418 " The default value of 200 microns will be used." << endl;
422 if(ddet2 < 100. || ddet2 > 300.) {
423 cout << "ITS - WARNING: the detector thickness for layer 2 is outside the range of [100,300] microns."
424 " The default value of 200 microns will be used." << endl;
428 if(dchip1 < 100. || dchip1 > 300.) {
429 cout << "ITS - WARNING: the chip thickness for layer 1 is outside the range of [100,300] microns."
430 " The default value of 200 microns will be used." << endl;
434 if(dchip2 < 100. || dchip2 > 300.) {
435 cout << "ITS - WARNING: the chip thickness for layer 2 is outside the range of [100,300] microns."
436 " The default value of 200 microns will be used." << endl;
440 cout << "ITS: Detector thickness on layer 1 is set to " << ddet1 << " microns." << endl;
441 cout << "ITS: Chip thickness on layer 1 is set to " << dchip1 << " microns." << endl;
442 cout << "ITS: Detector thickness on layer 2 is set to " << ddet2 << " microns." << endl;
443 cout << "ITS: Chip thickness on layer 2 is set to " << dchip2 << " microns." << endl;
445 ddet1 = ddet1*0.0001/2.; // conversion from tot length in um to half in cm
446 ddet2 = ddet2*0.0001/2.; // conversion from tot length in um to half in cm
447 dchip1 = dchip1*0.0001/2.;// conversion from tot length in um to half in cm
448 dchip2 = dchip2*0.0001/2.;// conversion from tot length in um to half in cm
449 dbus = dbus*0.0001/2.; // conversion from tot length in um to half in cm
451 Float_t deltax, deltay;
453 Int_t thickness = fMinorVersion/10;
454 Int_t option = fMinorVersion - 10*thickness;
457 // Define some variables for SDD
458 // SDD detector ladder
461 Float_t I302dits[3], I402dits[3], I004dits[3], I005dits[3];
462 Float_t Y_SDD_sep = 0.20;
463 Float_t Z_SDD_lay3[6] = {18.55, 10.95, 3.70, -3.70, -11.20, -18.35};
464 Float_t Z_SDD_lay4[8] = {25.75, 18.60, 11.00, 3.70, -3.70, -11.20, -18.45, -26.05};
472 new TRotMatrix("itsrot238","itsrot238",90.0,144.0,90.0,234.0,0.0,0.0);
473 new TRotMatrix("itsrot236","itsrot236",90.0,180.013702,90.0,270.013702,0.0,0.0);
474 new TRotMatrix("itsrot239","itsrot239",90.0,216.0,90.0,306.0,0.0,0.0);
475 new TRotMatrix("itsrot233","itsrot233",90.0,252.000504,90.0,342.000488,0.0,0.0 );
476 new TRotMatrix("itsrot240","itsrot240",90.0,288.0,90.0,18.0,0.0,0.0);
477 new TRotMatrix("itsrot241","itsrot241",90.0,324.0,90.0,54.0,0.0,0.0);
478 new TRotMatrix("itsrot242","itsrot242",90.0,36.0,90.0,126.0,0.0,0.0);
479 new TRotMatrix("itsrot234","itsrot234",90.0,71.9991,90.0,161.9991,0.0,0.0);
480 new TRotMatrix("itsrot243","itsrot243",90.0,108.0,90.0,198.0,0.0,0.0);
481 new TRotMatrix("itsrot244","itsrot244",90.0,180.0,90.0,270.0,0.0,0.0);
482 new TRotMatrix("itsrot245","itsrot245",90.0,162.0,90.0,252.0,0.0,0.0);
483 new TRotMatrix("itsrot246","itsrot246",90.0,310.0,90.0,40.0,0.0,0.0);
484 new TRotMatrix("itsrot247","itsrot247",90.0,319.0,90.0,49.0,0.0,0.0);
485 new TRotMatrix("itsrot248","itsrot248",90.0,328.0,90.0,58.0,0.0,0.0);
486 new TRotMatrix("itsrot249","itsrot249",90.0,337.0,90.0,67.0,0.0,0.0);
490 // SPD - option 'b' (this is the default)
494 new TRotMatrix("itsrot233","itsrot233",90.0,252.000504,90.0,342.000488,0.0,0.0);
495 new TRotMatrix("itsrot244","itsrot244",90.0,216.0,90.0,306.0,0.0,0.0);
496 new TRotMatrix("itsrot236","itsrot236",90.0,180.013702,90.0,270.013702,0.0,0.0);
497 new TRotMatrix("itsrot245","itsrot245",90.0,36.0,90.0,126.0,0.0,0.0);
498 new TRotMatrix("itsrot234","itsrot234",90.0,71.9991,90.0,161.9991,0.0,0.0);
499 new TRotMatrix("itsrot246","itsrot246",90.0,108.0,90.0,198.0,0.0,0.0);
500 new TRotMatrix("itsrot247","itsrot247",90.0,144.0,90.0,234.0,0.0,0.0);
501 new TRotMatrix("itsrot248","itsrot248",90.0,288.0,90.0,18.0,0.0,0.0);
502 new TRotMatrix("itsrot249","itsrot249",90.0,324.0,90.0,54.0,0.0,0.0);
503 new TRotMatrix("itsrot238","itsrot238",90.0,180.0,90.0,270.0,0.0,0.0);
504 new TRotMatrix("itsrot239","itsrot239",90.0,162.0,90.0,252.0,0.0,0.0);
505 new TRotMatrix("itsrot240","itsrot240",90.0,310.0,90.0,40.0,0.0,0.0);
506 new TRotMatrix("itsrot241","itsrot241",90.0,319.0,90.0,49.0,0.0,0.0);
507 new TRotMatrix("itsrot242","itsrot242",90.0,328.0,90.0,58.0,0.0,0.0);
508 new TRotMatrix("itsrot243","itsrot243",90.0,337.0,90.0,67.0,0.0,0.0);
514 new TRotMatrix("itsrot321","itsrot321",90.0,12.86,90.0,102.86,0.0,0.0);
515 new TRotMatrix("itsrot333","itsrot333",90.0,38.57,90.0,128.57,0.0,0.0);
516 new TRotMatrix("itsrot336","itsrot336",90.0,64.29,90.0,154.29,0.0,0.0);
517 new TRotMatrix("itsrot350","itsrot350",90.0,90.0,90.0,180.0,0.0,0.0);
518 new TRotMatrix("itsrot313","itsrot313",90.0,115.71,90.0,205.71,0.0,0.0);
519 new TRotMatrix("itsrot311","itsrot311",90.0,141.43,90.0,231.43,0.0,0.0);
520 new TRotMatrix("itsrot310","itsrot310",90.0,167.14,90.0,257.14,0.0,0.0);
521 new TRotMatrix("itsrot386","itsrot386",90.0,192.86,90.0,282.86,0.0,0.0);
522 new TRotMatrix("itsrot309","itsrot309",90.0,218.57,90.0,308.57,0.0,0.0);
523 new TRotMatrix("itsrot308","itsrot308",90.0,244.29,90.0,334.29,0.0,0.0);
524 new TRotMatrix("itsrot356","itsrot356",90.0,270.0,90.0,0.0,0.0,0.0);
525 new TRotMatrix("itsrot307","itsrot307",90.0,295.71,90.0,25.71,0.0,0.0);
526 new TRotMatrix("itsrot306","itsrot306",90.0,321.43,90.0,51.43,0.0,0.0);
527 new TRotMatrix("itsrot305","itsrot305",90.0,347.14,90.0,77.14,0.0,0.0);
528 new TRotMatrix("itsrot335","itsrot335",90.0,8.18,90.0,98.18,0.0,0.0);
529 new TRotMatrix("itsrot332","itsrot332",90.0,24.55,90.0,114.55,0.0,0.0);
530 new TRotMatrix("itsrot331","itsrot331",90.0,40.91,90.0,130.91,0.0,0.0);
531 new TRotMatrix("itsrot366","itsrot366",90.0,57.27,90.0,147.27,0.0,0.0);
532 new TRotMatrix("itsrot330","itsrot330",90.0,73.64,90.0,163.64,0.0,0.0);
533 new TRotMatrix("itsrot350","itsrot350",90.0,90.0,90.0,180.0,0.0,0.0);
534 new TRotMatrix("itsrot329","itsrot329",90.0,106.36,90.0,196.36,0.0,0.0);
535 new TRotMatrix("itsrot328","itsrot328",90.0,122.73,90.0,212.73,0.0,0.0);
536 new TRotMatrix("itsrot327","itsrot327",90.0,139.09,90.0,229.09,0.0,0.0);
537 new TRotMatrix("itsrot326","itsrot326",90.0,155.45,90.0,245.45,0.0,0.0);
538 new TRotMatrix("itsrot325","itsrot325",90.0,171.82,90.0,261.82,0.0,0.0);
539 new TRotMatrix("itsrot324","itsrot324",90.0,188.18,90.0,278.18,0.0,0.0);
540 new TRotMatrix("itsrot323","itsrot323",90.0,204.55,90.0,294.55,0.0,0.0);
541 new TRotMatrix("itsrot322","itsrot322",90.0,220.91,90.0,310.91,0.0,0.0);
542 new TRotMatrix("itsrot320","itsrot320",90.0,237.27,90.0,327.27,0.0,0.0);
543 new TRotMatrix("itsrot319","itsrot319",90.0,253.64,90.0,343.64,0.0,0.0);
544 new TRotMatrix("itsrot318","itsrot318",90.0,270.0,90.0,360.0,0.0,0.0);
545 new TRotMatrix("itsrot317","itsrot317",90.0,286.36,90.0,16.36,0.0,0.0);
546 new TRotMatrix("itsrot316","itsrot316",90.0,302.73,90.0,32.73,0.0,0.0);
547 new TRotMatrix("itsrot315","itsrot315",90.0,319.09,90.0,49.09,0.0,0.0);
548 new TRotMatrix("itsrot314","itsrot314",90.0,335.45,90.0,65.45,0.0,0.0);
549 new TRotMatrix("itsrot334","itsrot334",90.0,351.82,90.0,81.82,0.0,0.0);
553 new TRotMatrix("itsrot504","itsrot504",90.0,127.06,90.0,217.06,0.0,0.0);
554 new TRotMatrix("itsrot505","itsrot505",90.0,116.47,90.0,206.47,0.0,0.0);
555 new TRotMatrix("itsrot506","itsrot506",90.0,105.88,90.0,195.88,0.0,0.0);
556 new TRotMatrix("itsrot507","itsrot507",90.0,95.29,90.0,185.29,0.0,0.0);
557 new TRotMatrix("itsrot508","itsrot508",90.0,84.71,90.0,174.71,0.0,0.0);
558 new TRotMatrix("itsrot509","itsrot509",90.0,74.12,90.0,164.12,0.0,0.0);
559 new TRotMatrix("itsrot510","itsrot510",90.0,63.53,90.0,153.53,0.0,0.0);
560 new TRotMatrix("itsrot511","itsrot511",90.0,52.94,90.0,142.94,0.0,0.0);
561 new TRotMatrix("itsrot512","itsrot512",90.0,42.35,90.0,132.35,0.0,0.0);
562 new TRotMatrix("itsrot513","itsrot513",90.0,31.76,90.0,121.76,0.0,0.0);
563 new TRotMatrix("itsrot653","itsrot653",90.0,21.18,90.0,111.18,0.0,0.0);
564 new TRotMatrix("itsrot514","itsrot514",90.0,10.59,90.0,100.59,0.0,0.0);
565 new TRotMatrix("itsrot515","itsrot515",90.0,349.41,90.0,79.41,0.0,0.0);
566 new TRotMatrix("itsrot516","itsrot516",90.0,338.82,90.0,68.82,0.0,0.0);
567 new TRotMatrix("itsrot517","itsrot517",90.0,328.24,90.0,58.24,0.0,0.0);
568 new TRotMatrix("itsrot518","itsrot518",90.0,317.65,90.0,47.65,0.0,0.0);
569 new TRotMatrix("itsrot519","itsrot519",90.0,307.06,90.0,37.06,0.0,0.0);
570 new TRotMatrix("itsrot520","itsrot520",90.0,296.47,90.0,26.47,0.0,0.0);
571 new TRotMatrix("itsrot521","itsrot521",90.0,285.88,90.0,15.88,0.0,0.0);
572 new TRotMatrix("itsrot522","itsrot522",90.0,275.29,90.0,5.29,0.0,0.0);
573 new TRotMatrix("itsrot523","itsrot523",90.0,264.71,90.0,354.71,0.0,0.0);
574 new TRotMatrix("itsrot524","itsrot524",90.0,254.12,90.0,344.12,0.0,0.0);
575 new TRotMatrix("itsrot525","itsrot525",90.0,243.53,90.0,333.53,0.0,0.0);
576 new TRotMatrix("itsrot526","itsrot526",90.0,232.94,90.0,322.94,0.0,0.0);
577 new TRotMatrix("itsrot527","itsrot527",90.0,222.35,90.0,312.35,0.0,0.0);
578 new TRotMatrix("itsrot528","itsrot528",90.0,211.76,90.0,301.76,0.0,0.0);
579 new TRotMatrix("itsrot618","itsrot618",90.0,201.18,90.0,291.18,0.0,0.0);
580 new TRotMatrix("itsrot529","itsrot529",90.0,190.59,90.0,280.59,0.0,0.0);
581 new TRotMatrix("itsrot533","itsrot533",90.0,180.0,90.0,270.0,0.0,0.0);
582 new TRotMatrix("itsrot530","itsrot530",90.0,169.41,90.0,259.41,0.0,0.0);
583 new TRotMatrix("itsrot531","itsrot531",90.0,158.82,90.0,248.82,0.0,0.0);
584 new TRotMatrix("itsrot501","itsrot501",90.0,148.24,90.0,238.24,0.0,0.0);
585 new TRotMatrix("itsrot503","itsrot503",90.0,137.65,90.0,227.65,0.0,0.0);
586 new TRotMatrix("itsrot532","itsrot532",90.0,360.0,90.0,90.0,0.0,0.0);
587 new TRotMatrix("itsrot560","itsrot560",90.0,85.26,90.0,175.26,0.0,0.0);
588 new TRotMatrix("itsrot561","itsrot561",90.0,94.74,90.0,184.74,0.0,0.0);
589 new TRotMatrix("itsrot562","itsrot562",90.0,104.21,90.0,194.21,0.0,0.0);
590 new TRotMatrix("itsrot563","itsrot563",90.0,113.68,90.0,203.68,0.0,0.0);
591 new TRotMatrix("itsrot564","itsrot564",90.0,123.16,90.0,213.16,0.0,0.0);
592 new TRotMatrix("itsrot565","itsrot565",90.0,132.63,90.0,222.63,0.0,0.0);
593 new TRotMatrix("itsrot566","itsrot566",90.0,142.11,90.0,232.11,0.0,0.0);
594 new TRotMatrix("itsrot567","itsrot567",90.0,151.58,90.0,241.58,0.0,0.0);
595 new TRotMatrix("itsrot568","itsrot568",90.0,161.05,90.0,251.05,0.0,0.0);
596 new TRotMatrix("itsrot569","itsrot569",90.0,170.53,90.0,260.53,0.0,0.0);
597 new TRotMatrix("itsrot533","itsrot533",90.0,180.0,90.0,270.0,0.0,0.0);
598 new TRotMatrix("itsrot534","itsrot534",90.0,189.47,90.0,279.47,0.0,0.0);
599 new TRotMatrix("itsrot535","itsrot535",90.0,198.95,90.0,288.95,0.0,0.0);
600 new TRotMatrix("itsrot623","itsrot623",90.0,208.42,90.0,298.42,0.0,0.0);
601 new TRotMatrix("itsrot537","itsrot537",90.0,217.89,90.0,307.89,0.0,0.0);
602 new TRotMatrix("itsrot538","itsrot538",90.0,227.37,90.0,317.37,0.0,0.0);
603 new TRotMatrix("itsrot539","itsrot539",90.0,236.84,90.0,326.84,0.0,0.0);
604 new TRotMatrix("itsrot540","itsrot540",90.0,246.32,90.0,336.32,0.0,0.0);
605 new TRotMatrix("itsrot541","itsrot541",90.0,255.79,90.0,345.79,0.0,0.0);
606 new TRotMatrix("itsrot542","itsrot542",90.0,265.26,90.0,355.26,0.0,0.0);
607 new TRotMatrix("itsrot543","itsrot543",90.0,274.74,90.0,4.74,0.0,0.0);
608 new TRotMatrix("itsrot544","itsrot544",90.0,284.21,90.0,14.21,0.0,0.0);
609 new TRotMatrix("itsrot545","itsrot545",90.0,293.68,90.0,23.68,0.0,0.0);
610 new TRotMatrix("itsrot546","itsrot546",90.0,303.16,90.0,33.16,0.0,0.0);
611 new TRotMatrix("itsrot547","itsrot547",90.0,312.63,90.0,42.63,0.0,0.0);
612 new TRotMatrix("itsrot548","itsrot548",90.0,322.11,90.0,52.11,0.0,0.0);
613 new TRotMatrix("itsrot549","itsrot549",90.0,331.58,90.0,61.58,0.0,0.0);
614 new TRotMatrix("itsrot550","itsrot550",90.0,341.05,90.0,71.05,0.0,0.0);
615 new TRotMatrix("itsrot551","itsrot551",90.0,350.53,90.0,80.53,0.0,0.0);
616 new TRotMatrix("itsrot552","itsrot552",90.0,9.47,90.0,99.47,0.0,0.0);
617 new TRotMatrix("itsrot553","itsrot553",90.0,18.95,90.0,108.95,0.0,0.0);
618 new TRotMatrix("itsrot620","itsrot620",90.0,28.42,90.0,118.42,0.0,0.0);
619 new TRotMatrix("itsrot555","itsrot555",90.0,37.89,90.0,127.89,0.0,0.0);
620 new TRotMatrix("itsrot556","itsrot556",90.0,47.37,90.0,137.37,0.0,0.0);
621 new TRotMatrix("itsrot557","itsrot557",90.0,56.84,90.0,146.84,0.0,0.0);
622 new TRotMatrix("itsrot558","itsrot558",90.0,66.32,90.0,156.32,0.0,0.0);
623 new TRotMatrix("itsrot559","itsrot559",90.0,75.79,90.0,165.79,0.0,0.0);
626 // --- Define SPD (option 'a') volumes ----------------------------
629 // (this is NOT the default)
636 new TBRIK("ITS1","ITS1","void",dits1[0],dits1[1],dits1[2]);
641 new TBRIK("ITS2","ITS2","void",dits2[0],dits2[1],dits2[2]);
646 new TBRIK("I101","I101","void",di101[0],di101[1],di101[2]);
651 new TBRIK("I1D1","I1D1","void",di1d1[0],di1d1[1],di1d1[2]);
654 di103[1] = ddet1+dchip1;
656 new TBRIK("I103","I103","void",di103[0],di103[1],di103[2]);
659 di1d3[1] = ddet2+dchip2;
661 new TBRIK("I1D3","I1D3","void",di1d3[0],di1d3[1],di1d3[2]);
664 di10a[1] = ddet1+dchip1+dbus+0.0025;
666 new TBRIK("I10A","I10A","void",di10a[0],di10a[1],di10a[2]);
669 di20a[1] = ddet2+dchip2+dbus+0.0025;
671 new TBRIK("I20A","I20A","void",di20a[0],di20a[1],di20a[2]);
678 new TTUBS("I12A","I12A","void",dits[0],dits[1],dits[2],dits[3],dits[4]);
683 new TTUBE("IT12","IT12","void",dits[0],dits[1],dits[2]);
687 // --- Define SPD (option 'b') volumes ----------------------------
690 // (this is the default)
697 new TBRIK("ITS1","ITS1","void",dits1[0],dits1[1],dits1[2]);
702 new TBRIK("ITS2","ITS2","void",dits2[0],dits2[1],dits2[2]);
707 new TBRIK("I101","I101","void",di101[0],di101[1],di101[2]);
712 new TBRIK("I1D1","I1D1","void",di1d1[0],di1d1[1],di1d1[2]);
715 di107[1] = ddet1+dchip1;
717 new TBRIK("I107","I107","void",di107[0],di107[1],di107[2]);
720 di1d7[1] = ddet2+dchip2;
722 new TBRIK("I1D7","I1D7","void",di1d7[0],di1d7[1],di1d7[2]);
725 di10b[1] = ddet1+dchip1+dbus+0.0025;
727 new TBRIK("I10B","I10B","void",di10b[0],di10b[1],di10b[2]);
730 di20b[1] = ddet2+dchip2+dbus+0.0025;
732 new TBRIK("I20B","I20B","void",di20b[0],di20b[1],di20b[2]);
739 new TTUBS("I12B","I12B","void",dits[0],dits[1],dits[2],dits[3],dits[4]);
744 new TTUBE("IT12","IT12","void",dits[0],dits[1],dits[2]);
749 // --- Define SDD volumes ------------------------------------------
751 TPCON *it34 = new TPCON("IT34","IT34","void",0.,360.,6);
752 it34->DefineSection(0,-34.6,23.49,28.);
753 it34->DefineSection(1,-23.65,23.49,28.);
754 it34->DefineSection(2,-23.65,14.59,28.);
755 it34->DefineSection(3,23.65,14.59,28.);
756 it34->DefineSection(4,23.65,23.49,28.);
757 it34->DefineSection(5,34.6,23.49,28.);
759 I302dits[0] = 3.6250;
760 I302dits[1] = 0.0150;
761 I302dits[2] = 4.3794;
762 new TBRIK("I302","I302","void",I302dits[0],I302dits[1],I302dits[2]);
764 I004dits[0] = I302dits[0]+0.005;
765 I004dits[1] = 2*I302dits[1]+Y_SDD_sep/2.;
766 I004dits[2] = TMath::Abs(Z_SDD_lay3[0]);
767 if (I004dits[2] < TMath::Abs(Z_SDD_lay3[5])) {
768 I004dits[2] = TMath::Abs(Z_SDD_lay3[5]);
770 I004dits[2] = I004dits[2] + I302dits[2];
771 new TBRIK("I004","I004","void",I004dits[0],I004dits[1],I004dits[2]);
776 new TBRIK("ITS3","ITS3","void",dits[0],dits[1],dits[2]);
778 I402dits[0] = 3.6250;
779 I402dits[1] = 0.0150;
780 I402dits[2] = 4.3794;
781 new TBRIK("I402","I402","void",I402dits[0],I402dits[1],I402dits[2]);
783 I005dits[0] = I402dits[0]+0.005;
784 I005dits[1] = 2*I402dits[1]+Y_SDD_sep/2.;
785 I005dits[2] = TMath::Abs(Z_SDD_lay4[0]);
786 if (I005dits[2] < TMath::Abs(Z_SDD_lay4[7])) {
787 I005dits[2] = TMath::Abs(Z_SDD_lay4[7]);
789 I005dits[2] = I005dits[2] + I402dits[2];
790 new TBRIK("I005","I005","void",I005dits[0],I005dits[1],I005dits[2]);
795 new TBRIK("ITS4","ITS4","void",dits[0],dits[1],dits[2]);
798 // --- Define SSD volumes ------------------------------------------
801 TPCON *it56 = new TPCON("IT56","IT56","void",0.,360.,6);
802 it56->DefineSection(0,-57.45,43.6,48.);
803 it56->DefineSection(1,-49.15,43.6,48.);
804 it56->DefineSection(2,-49.15,36.9,48.);
805 it56->DefineSection(3,50.55,36.9,48.);
806 it56->DefineSection(4,50.55,43.6,48.);
807 it56->DefineSection(5,57.45,43.6,48.);
812 new TBRIK("I565","I565","void",dits[0],dits[1],dits[2]);
817 new TBRIK("I569","I569","void",dits[0],dits[1],dits[2]);
822 new TBRIK("I562","I562","void",dits[0],dits[1],dits[2]);
827 new TBRIK("I566","I566","void",dits[0],dits[1],dits[2]);
832 new TBRIK("ITS5","ITS5","void",dits[0],dits[1],dits[2]);
837 new TBRIK("ITS6","ITS6","void",dits[0],dits[1],dits[2]);
843 // --- Place SPD (option 'a') volumes into their mother volume
846 // (this is NOT the default)
854 // --- Place SPD (option 'b') volumes into their mother volume
857 // (this is the default)
861 // Place IT12 in Alice
863 node = new TNode("IT12","IT12","IT12",0.,0.,0.,"");
864 node->SetLineColor(kColorITS);
865 node->SetVisibility(0);
868 // Place copy #1 of I12B in IT12
870 sub1node = new TNode("I12B","I12B","I12B",0.,0.,0.,"");
871 sub1node->SetLineColor(kColorITS);
872 sub1node->SetVisibility(0);
875 // Place copy #1 of I10B in I12B
877 deltax=((ddet1-0.01/2.)+(dchip1-0.015/2.))*TMath::Cos(252.*TMath::Pi()/180.);
878 deltay=((ddet1-0.01/2.)+(dchip1-0.015/2.))*TMath::Sin(252.*TMath::Pi()/180.);
879 sub2node = new TNode("I10B","I10B","I10B",1.4531+deltax,3.8152+deltay,0.,"itsrot239");
880 sub2node->SetLineColor(kColorITS);
881 sub2node->SetVisibility(0);
884 // Place copy #1 of I107 in I10B
886 sub3node = new TNode("I107","I107","I107",-0.0455,-di10b[1]+di107[1],10.708,"");
887 sub3node->SetLineColor(kColorITS);
888 sub3node->SetVisibility(0);
891 // Place copy #1 of I101 in I107
893 sub4node = new TNode("I101","I101","I101",0.,ddet1,0.,"");
894 sub4node->SetLineColor(kColorITS);
895 sub4node->SetVisibility(0);
898 // Place copy #1 of ITS1 in I101
900 sub5node = new TNode("ITS1","ITS1","ITS1",0.,0.,0.,"");
901 sub5node->SetLineColor(kColorITS);
902 fNodes->Add(sub5node);
904 fNodes->Add(sub4node);
906 fNodes->Add(sub3node);
909 // Place copy #2 of I107 in I10B
911 sub3node = new TNode("I107","I107","I107",-0.0455,-di10b[1]+di107[1],3.536,"");
912 sub3node->SetLineColor(kColorITS);
913 sub3node->SetVisibility(0);
916 // Place copy #1 of I101 in I107
918 sub4node = new TNode("I101","I101","I101",0.,ddet1,0.,"");
919 sub4node->SetLineColor(kColorITS);
920 sub4node->SetVisibility(0);
923 // Place copy #1 of ITS1 in I101
925 sub5node = new TNode("ITS1","ITS1","ITS1",0.,0.,0.,"");
926 sub5node->SetLineColor(kColorITS);
927 fNodes->Add(sub5node);
929 fNodes->Add(sub4node);
931 fNodes->Add(sub3node);
934 // Place copy #3 of I107 in I10B
936 sub3node = new TNode("I107","I107","I107",-0.0455,-di10b[1]+di107[1],-3.536,"");
937 sub3node->SetLineColor(kColorITS);
938 sub3node->SetVisibility(0);
941 // Place copy #1 of I101 in I107
943 sub4node = new TNode("I101","I101","I101",0.,ddet1,0.,"");
944 sub4node->SetLineColor(kColorITS);
945 sub4node->SetVisibility(0);
948 // Place copy #1 of ITS1 in I101
950 sub5node = new TNode("ITS1","ITS1","ITS1",0.,0.,0.,"");
951 sub5node->SetLineColor(kColorITS);
952 fNodes->Add(sub5node);
954 fNodes->Add(sub4node);
956 fNodes->Add(sub3node);
959 // Place copy #4 of I107 in I10B
961 sub3node = new TNode("I107","I107","I107",-0.0455,-di10b[1]+di107[1],-10.708,"");
962 sub3node->SetLineColor(kColorITS);
963 sub3node->SetVisibility(0);
966 // Place copy #1 of I101 in I107
968 sub4node = new TNode("I101","I101","I101",0.,ddet1,0.,"");
969 sub4node->SetLineColor(kColorITS);
970 sub4node->SetVisibility(0);
973 // Place copy #1 of ITS1 in I101
975 sub5node = new TNode("ITS1","ITS1","ITS1",0.,0.,0.,"");
976 sub5node->SetLineColor(kColorITS);
977 fNodes->Add(sub5node);
979 fNodes->Add(sub4node);
981 fNodes->Add(sub3node);
983 fNodes->Add(sub2node);
986 // Place copy #2 of I10B in I12B
988 deltax=((ddet1-0.01/2.)+(dchip1-0.015/2.))*TMath::Cos(270.*TMath::Pi()/180.);
989 deltay=((ddet1-0.01/2.)+(dchip1-0.015/2.))*TMath::Sin(270.*TMath::Pi()/180.);
990 sub2node = new TNode("I10B","I10B","I10B",0.203+deltax,3.8206+deltay,0.,"itsrot238");
991 sub2node->SetLineColor(kColorITS);
992 sub2node->SetVisibility(0);
995 // Place copy #1 of I107 in I10B
997 sub3node = new TNode("I107","I107","I107",-0.0455,-di10b[1]+di107[1],10.708,"");
998 sub3node->SetLineColor(kColorITS);
999 sub3node->SetVisibility(0);
1002 // Place copy #1 of I101 in I107
1004 sub4node = new TNode("I101","I101","I101",0.,ddet1,0.,"");
1005 sub4node->SetLineColor(kColorITS);
1006 sub4node->SetVisibility(0);
1009 // Place copy #1 of ITS1 in I101
1011 sub5node = new TNode("ITS1","ITS1","ITS1",0.,0.,0.,"");
1012 sub5node->SetLineColor(kColorITS);
1013 fNodes->Add(sub5node);
1015 fNodes->Add(sub4node);
1017 fNodes->Add(sub3node);
1020 // Place copy #2 of I107 in I10B
1022 sub3node = new TNode("I107","I107","I107",-0.0455,-di10b[1]+di107[1],3.536,"");
1023 sub3node->SetLineColor(kColorITS);
1024 sub3node->SetVisibility(0);
1027 // Place copy #1 of I101 in I107
1029 sub4node = new TNode("I101","I101","I101",0.,ddet1,0.,"");
1030 sub4node->SetLineColor(kColorITS);
1031 sub4node->SetVisibility(0);
1034 // Place copy #1 of ITS1 in I101
1036 sub5node = new TNode("ITS1","ITS1","ITS1",0.,0.,0.,"");
1037 sub5node->SetLineColor(kColorITS);
1038 fNodes->Add(sub5node);
1040 fNodes->Add(sub4node);
1042 fNodes->Add(sub3node);
1045 // Place copy #3 of I107 in I10B
1047 sub3node = new TNode("I107","I107","I107",-0.0455,-di10b[1]+di107[1],-3.536,"");
1048 sub3node->SetLineColor(kColorITS);
1049 sub3node->SetVisibility(0);
1052 // Place copy #1 of I101 in I107
1054 sub4node = new TNode("I101","I101","I101",0.,ddet1,0.,"");
1055 sub4node->SetLineColor(kColorITS);
1056 sub4node->SetVisibility(0);
1059 // Place copy #1 of ITS1 in I101
1061 sub5node = new TNode("ITS1","ITS1","ITS1",0.,0.,0.,"");
1062 sub5node->SetLineColor(kColorITS);
1063 fNodes->Add(sub5node);
1065 fNodes->Add(sub4node);
1067 fNodes->Add(sub3node);
1070 // Place copy #4 of I107 in I10B
1072 sub3node = new TNode("I107","I107","I107",-0.0455,-di10b[1]+di107[1],-10.708,"");
1073 sub3node->SetLineColor(kColorITS);
1074 sub3node->SetVisibility(0);
1077 // Place copy #1 of I101 in I107
1079 sub4node = new TNode("I101","I101","I101",0.,ddet1,0.,"");
1080 sub4node->SetLineColor(kColorITS);
1081 sub4node->SetVisibility(0);
1084 // Place copy #1 of ITS1 in I101
1086 sub5node = new TNode("ITS1","ITS1","ITS1",0.,0.,0.,"");
1087 sub5node->SetLineColor(kColorITS);
1088 fNodes->Add(sub5node);
1090 fNodes->Add(sub4node);
1092 fNodes->Add(sub3node);
1094 fNodes->Add(sub2node);
1097 // Place copy #1 of I20B in I12B
1099 deltax=((ddet2-0.01/2.)+(dchip2-0.015/2.))*TMath::Cos(40.*TMath::Pi()/180.);
1100 deltay=((ddet2-0.01/2.)+(dchip2-0.015/2.))*TMath::Sin(40.*TMath::Pi()/180.);
1101 sub2node = new TNode("I20B","I20B","I20B",3.0174+deltax,6.5143+deltay,0.,"itsrot240");
1102 sub2node->SetLineColor(kColorITS);
1103 sub2node->SetVisibility(0);
1106 // Place copy #1 of I1D7 in I20B
1108 sub3node = new TNode("I1D7","I1D7","I1D7",-0.0455,-di20b[1]+di1d7[1],10.708,"");
1109 sub3node->SetLineColor(kColorITS);
1110 sub3node->SetVisibility(0);
1113 // Place copy #1 of I1D1 in I1D7
1115 sub4node = new TNode("I1D1","I1D1","I1D1",0.,ddet2,0.,"");
1116 sub4node->SetLineColor(kColorITS);
1117 sub4node->SetVisibility(0);
1120 // Place copy #1 of ITS2 in I1D1
1122 sub5node = new TNode("ITS2","ITS2","ITS2",0.,0.,0.,"");
1123 sub5node->SetLineColor(kColorITS);
1124 fNodes->Add(sub5node);
1126 fNodes->Add(sub4node);
1128 fNodes->Add(sub3node);
1131 // Place copy #2 of I1D7 in I20B
1133 sub3node = new TNode("I1D7","I1D7","I1D7",-0.0455,-di20b[1]+di1d7[1],3.536,"");
1134 sub3node->SetLineColor(kColorITS);
1135 sub3node->SetVisibility(0);
1138 // Place copy #1 of I1D1 in I1D7
1140 sub4node = new TNode("I1D1","I1D1","I1D1",0.,ddet2,0.,"");
1141 sub4node->SetLineColor(kColorITS);
1142 sub4node->SetVisibility(0);
1145 // Place copy #1 of ITS2 in I1D1
1147 sub5node = new TNode("ITS2","ITS2","ITS2",0.,0.,0.,"");
1148 sub5node->SetLineColor(kColorITS);
1149 fNodes->Add(sub5node);
1151 fNodes->Add(sub4node);
1153 fNodes->Add(sub3node);
1156 // Place copy #3 of I1D7 in I20B
1158 sub3node = new TNode("I1D7","I1D7","I1D7",-0.0455,-di20b[1]+di1d7[1],-3.536,"");
1159 sub3node->SetLineColor(kColorITS);
1160 sub3node->SetVisibility(0);
1163 // Place copy #1 of I1D1 in I1D7
1165 sub4node = new TNode("I1D1","I1D1","I1D1",0.,ddet2,0.,"");
1166 sub4node->SetLineColor(kColorITS);
1167 sub4node->SetVisibility(0);
1170 // Place copy #1 of ITS2 in I1D1
1172 sub5node = new TNode("ITS2","ITS2","ITS2",0.,0.,0.,"");
1173 sub5node->SetLineColor(kColorITS);
1174 fNodes->Add(sub5node);
1176 fNodes->Add(sub4node);
1178 fNodes->Add(sub3node);
1181 // Place copy #4 of I1D7 in I20B
1183 sub3node = new TNode("I1D7","I1D7","I1D7",-0.0455,-di20b[1]+di1d7[1],-10.708,"");
1184 sub3node->SetLineColor(kColorITS);
1185 sub3node->SetVisibility(0);
1188 // Place copy #1 of I1D1 in I1D7
1190 sub4node = new TNode("I1D1","I1D1","I1D1",0.,ddet2,0.,"");
1191 sub4node->SetLineColor(kColorITS);
1192 sub4node->SetVisibility(0);
1195 // Place copy #1 of ITS2 in I1D1
1197 sub5node = new TNode("ITS2","ITS2","ITS2",0.,0.,0.,"");
1198 sub5node->SetLineColor(kColorITS);
1199 fNodes->Add(sub5node);
1201 fNodes->Add(sub4node);
1203 fNodes->Add(sub3node);
1205 fNodes->Add(sub2node);
1208 // Place copy #2 of I20B in I12B
1210 deltax=((ddet2-0.01/2.)+(dchip2-0.015/2.))*TMath::Cos(49.*TMath::Pi()/180.);
1211 deltay=((ddet2-0.01/2.)+(dchip2-0.015/2.))*TMath::Sin(49.*TMath::Pi()/180.);
1212 sub2node = new TNode("I20B","I20B","I20B",1.9612+deltax,6.9062+deltay,0.,"itsrot241");
1213 sub2node->SetLineColor(kColorITS);
1214 sub2node->SetVisibility(0);
1217 // Place copy #1 of I1D7 in I20B
1219 sub3node = new TNode("I1D7","I1D7","I1D7",-0.0455,-di20b[1]+di1d7[1],10.708,"");
1220 sub3node->SetLineColor(kColorITS);
1221 sub3node->SetVisibility(0);
1224 // Place copy #1 of I1D1 in I1D7
1226 sub4node = new TNode("I1D1","I1D1","I1D1",0.,ddet2,0.,"");
1227 sub4node->SetLineColor(kColorITS);
1228 sub4node->SetVisibility(0);
1231 // Place copy #1 of ITS2 in I1D1
1233 sub5node = new TNode("ITS2","ITS2","ITS2",0.,0.,0.,"");
1234 sub5node->SetLineColor(kColorITS);
1235 fNodes->Add(sub5node);
1237 fNodes->Add(sub4node);
1239 fNodes->Add(sub3node);
1242 // Place copy #2 of I1D7 in I20B
1244 sub3node = new TNode("I1D7","I1D7","I1D7",-0.0455,-di20b[1]+di1d7[1],3.536,"");
1245 sub3node->SetLineColor(kColorITS);
1246 sub3node->SetVisibility(0);
1249 // Place copy #1 of I1D1 in I1D7
1251 sub4node = new TNode("I1D1","I1D1","I1D1",0.,ddet2,0.,"");
1252 sub4node->SetLineColor(kColorITS);
1253 sub4node->SetVisibility(0);
1256 // Place copy #1 of ITS2 in I1D1
1258 sub5node = new TNode("ITS2","ITS2","ITS2",0.,0.,0.,"");
1259 sub5node->SetLineColor(kColorITS);
1260 fNodes->Add(sub5node);
1262 fNodes->Add(sub4node);
1264 fNodes->Add(sub3node);
1267 // Place copy #3 of I1D7 in I20B
1269 sub3node = new TNode("I1D7","I1D7","I1D7",-0.0455,-di20b[1]+di1d7[1],-3.536,"");
1270 sub3node->SetLineColor(kColorITS);
1271 sub3node->SetVisibility(0);
1274 // Place copy #1 of I1D1 in I1D7
1276 sub4node = new TNode("I1D1","I1D1","I1D1",0.,ddet2,0.,"");
1277 sub4node->SetLineColor(kColorITS);
1278 sub4node->SetVisibility(0);
1281 // Place copy #1 of ITS2 in I1D1
1283 sub5node = new TNode("ITS2","ITS2","ITS2",0.,0.,0.,"");
1284 sub5node->SetLineColor(kColorITS);
1285 fNodes->Add(sub5node);
1287 fNodes->Add(sub4node);
1289 fNodes->Add(sub3node);
1292 // Place copy #4 of I1D7 in I20B
1294 sub3node = new TNode("I1D7","I1D7","I1D7",-0.0455,-di20b[1]+di1d7[1],-10.708,"");
1295 sub3node->SetLineColor(kColorITS);
1296 sub3node->SetVisibility(0);
1299 // Place copy #1 of I1D1 in I1D7
1301 sub4node = new TNode("I1D1","I1D1","I1D1",0.,ddet2,0.,"");
1302 sub4node->SetLineColor(kColorITS);
1303 sub4node->SetVisibility(0);
1306 // Place copy #1 of ITS2 in I1D1
1308 sub5node = new TNode("ITS2","ITS2","ITS2",0.,0.,0.,"");
1309 sub5node->SetLineColor(kColorITS);
1310 fNodes->Add(sub5node);
1312 fNodes->Add(sub4node);
1314 fNodes->Add(sub3node);
1316 fNodes->Add(sub2node);
1319 // Place copy #3 of I20B in I12B
1321 deltax=((ddet2-0.01/2.)+(dchip2-0.015/2.))*TMath::Cos(58.*TMath::Pi()/180.);
1322 deltay=((ddet2-0.01/2.)+(dchip2-0.015/2.))*TMath::Sin(58.*TMath::Pi()/180.);
1323 sub2node = new TNode("I20B","I20B","I20B",0.8567+deltax,7.1279+deltay,0.,"itsrot242");
1324 sub2node->SetLineColor(kColorITS);
1325 sub2node->SetVisibility(0);
1328 // Place copy #1 of I1D7 in I20B
1330 sub3node = new TNode("I1D7","I1D7","I1D7",-0.0455,-di20b[1]+di1d7[1],10.708,"");
1331 sub3node->SetLineColor(kColorITS);
1332 sub3node->SetVisibility(0);
1335 // Place copy #1 of I1D1 in I1D7
1337 sub4node = new TNode("I1D1","I1D1","I1D1",0.,ddet2,0.,"");
1338 sub4node->SetLineColor(kColorITS);
1339 sub4node->SetVisibility(0);
1342 // Place copy #1 of ITS2 in I1D1
1344 sub5node = new TNode("ITS2","ITS2","ITS2",0.,0.,0.,"");
1345 sub5node->SetLineColor(kColorITS);
1346 fNodes->Add(sub5node);
1348 fNodes->Add(sub4node);
1350 fNodes->Add(sub3node);
1353 // Place copy #2 of I1D7 in I20B
1355 sub3node = new TNode("I1D7","I1D7","I1D7",-0.0455,-di20b[1]+di1d7[1],3.536,"");
1356 sub3node->SetLineColor(kColorITS);
1357 sub3node->SetVisibility(0);
1360 // Place copy #1 of I1D1 in I1D7
1362 sub4node = new TNode("I1D1","I1D1","I1D1",0.,ddet2,0.,"");
1363 sub4node->SetLineColor(kColorITS);
1364 sub4node->SetVisibility(0);
1367 // Place copy #1 of ITS2 in I1D1
1369 sub5node = new TNode("ITS2","ITS2","ITS2",0.,0.,0.,"");
1370 sub5node->SetLineColor(kColorITS);
1371 fNodes->Add(sub5node);
1373 fNodes->Add(sub4node);
1375 fNodes->Add(sub3node);
1378 // Place copy #3 of I1D7 in I20B
1380 sub3node = new TNode("I1D7","I1D7","I1D7",-0.0455,-di20b[1]+di1d7[1],-3.536,"");
1381 sub3node->SetLineColor(kColorITS);
1382 sub3node->SetVisibility(0);
1385 // Place copy #1 of I1D1 in I1D7
1387 sub4node = new TNode("I1D1","I1D1","I1D1",0.,ddet2,0.,"");
1388 sub4node->SetLineColor(kColorITS);
1389 sub4node->SetVisibility(0);
1392 // Place copy #1 of ITS2 in I1D1
1394 sub5node = new TNode("ITS2","ITS2","ITS2",0.,0.,0.,"");
1395 sub5node->SetLineColor(kColorITS);
1396 fNodes->Add(sub5node);
1398 fNodes->Add(sub4node);
1400 fNodes->Add(sub3node);
1403 // Place copy #4 of I1D7 in I20B
1405 sub3node = new TNode("I1D7","I1D7","I1D7",-0.0455,-di20b[1]+di1d7[1],-10.708,"");
1406 sub3node->SetLineColor(kColorITS);
1407 sub3node->SetVisibility(0);
1410 // Place copy #1 of I1D1 in I1D7
1412 sub4node = new TNode("I1D1","I1D1","I1D1",0.,ddet2,0.,"");
1413 sub4node->SetLineColor(kColorITS);
1414 sub4node->SetVisibility(0);
1417 // Place copy #1 of ITS2 in I1D1
1419 sub5node = new TNode("ITS2","ITS2","ITS2",0.,0.,0.,"");
1420 sub5node->SetLineColor(kColorITS);
1421 fNodes->Add(sub5node);
1423 fNodes->Add(sub4node);
1425 fNodes->Add(sub3node);
1427 fNodes->Add(sub2node);
1430 // Place copy #4 of I20B in I12B
1432 deltax=((ddet2-0.01/2.)+(dchip2-0.015/2.))*TMath::Cos(67.*TMath::Pi()/180.);
1433 deltay=((ddet2-0.01/2.)+(dchip2-0.015/2.))*TMath::Sin(67.*TMath::Pi()/180.);
1434 sub2node = new TNode("I20B","I20B","I20B",-0.2689+deltax,7.1742+deltay,0.,"itsrot243");
1435 sub2node->SetLineColor(kColorITS);
1436 sub2node->SetVisibility(0);
1439 // Place copy #1 of I1D7 in I20B
1441 sub3node = new TNode("I1D7","I1D7","I1D7",-0.0455,-di20b[1]+di1d7[1],10.708,"");
1442 sub3node->SetLineColor(kColorITS);
1443 sub3node->SetVisibility(0);
1446 // Place copy #1 of I1D1 in I1D7
1448 sub4node = new TNode("I1D1","I1D1","I1D1",0.,ddet2,0.,"");
1449 sub4node->SetLineColor(kColorITS);
1450 sub4node->SetVisibility(0);
1453 // Place copy #1 of ITS2 in I1D1
1455 sub5node = new TNode("ITS2","ITS2","ITS2",0.,0.,0.,"");
1456 sub5node->SetLineColor(kColorITS);
1457 fNodes->Add(sub5node);
1459 fNodes->Add(sub4node);
1461 fNodes->Add(sub3node);
1464 // Place copy #2 of I1D7 in I20B
1466 sub3node = new TNode("I1D7","I1D7","I1D7",-0.0455,-di20b[1]+di1d7[1],3.536,"");
1467 sub3node->SetLineColor(kColorITS);
1468 sub3node->SetVisibility(0);
1471 // Place copy #1 of I1D1 in I1D7
1473 sub4node = new TNode("I1D1","I1D1","I1D1",0.,ddet2,0.,"");
1474 sub4node->SetLineColor(kColorITS);
1475 sub4node->SetVisibility(0);
1478 // Place copy #1 of ITS2 in I1D1
1480 sub5node = new TNode("ITS2","ITS2","ITS2",0.,0.,0.,"");
1481 sub5node->SetLineColor(kColorITS);
1482 fNodes->Add(sub5node);
1484 fNodes->Add(sub4node);
1486 fNodes->Add(sub3node);
1489 // Place copy #3 of I1D7 in I20B
1491 sub3node = new TNode("I1D7","I1D7","I1D7",-0.0455,-di20b[1]+di1d7[1],-3.536,"");
1492 sub3node->SetLineColor(kColorITS);
1493 sub3node->SetVisibility(0);
1496 // Place copy #1 of I1D1 in I1D7
1498 sub4node = new TNode("I1D1","I1D1","I1D1",0.,ddet2,0.,"");
1499 sub4node->SetLineColor(kColorITS);
1500 sub4node->SetVisibility(0);
1503 // Place copy #1 of ITS2 in I1D1
1505 sub5node = new TNode("ITS2","ITS2","ITS2",0.,0.,0.,"");
1506 sub5node->SetLineColor(kColorITS);
1507 fNodes->Add(sub5node);
1509 fNodes->Add(sub4node);
1511 fNodes->Add(sub3node);
1514 // Place copy #4 of I1D7 in I20B
1516 sub3node = new TNode("I1D7","I1D7","I1D7",-0.0455,-di20b[1]+di1d7[1],-10.708,"");
1517 sub3node->SetLineColor(kColorITS);
1518 sub3node->SetVisibility(0);
1521 // Place copy #1 of I1D1 in I1D7
1523 sub4node = new TNode("I1D1","I1D1","I1D1",0.,ddet2,0.,"");
1524 sub4node->SetLineColor(kColorITS);
1525 sub4node->SetVisibility(0);
1528 // Place copy #1 of ITS2 in I1D1
1530 sub5node = new TNode("ITS2","ITS2","ITS2",0.,0.,0.,"");
1531 sub5node->SetLineColor(kColorITS);
1532 fNodes->Add(sub5node);
1534 fNodes->Add(sub4node);
1536 fNodes->Add(sub3node);
1538 fNodes->Add(sub2node);
1540 fNodes->Add(sub1node);
1543 // Place copy #2 of I12B in IT12
1545 sub1node = new TNode("I12B","I12B","I12B",0.,0.,0.,"itsrot245");
1546 sub1node->SetLineColor(kColorITS);
1547 sub1node->SetVisibility(0);
1550 // Place copy #1 of I10B in I12B
1552 deltax=((ddet1-0.01/2.)+(dchip1-0.015/2.))*TMath::Cos(252.*TMath::Pi()/180.);
1553 deltay=((ddet1-0.01/2.)+(dchip1-0.015/2.))*TMath::Sin(252.*TMath::Pi()/180.);
1554 sub2node = new TNode("I10B","I10B","I10B",1.4531+deltax,3.8152+deltay,0.,"itsrot239");
1555 sub2node->SetLineColor(kColorITS);
1556 sub2node->SetVisibility(0);
1559 // Place copy #1 of I107 in I10B
1561 sub3node = new TNode("I107","I107","I107",-0.0455,-di10b[1]+di107[1],10.708,"");
1562 sub3node->SetLineColor(kColorITS);
1563 sub3node->SetVisibility(0);
1566 // Place copy #1 of I101 in I107
1568 sub4node = new TNode("I101","I101","I101",0.,ddet1,0.,"");
1569 sub4node->SetLineColor(kColorITS);
1570 sub4node->SetVisibility(0);
1573 // Place copy #1 of ITS1 in I101
1575 sub5node = new TNode("ITS1","ITS1","ITS1",0.,0.,0.,"");
1576 sub5node->SetLineColor(kColorITS);
1577 fNodes->Add(sub5node);
1579 fNodes->Add(sub4node);
1581 fNodes->Add(sub3node);
1584 // Place copy #2 of I107 in I10B
1586 sub3node = new TNode("I107","I107","I107",-0.0455,-di10b[1]+di107[1],3.536,"");
1587 sub3node->SetLineColor(kColorITS);
1588 sub3node->SetVisibility(0);
1591 // Place copy #1 of I101 in I107
1593 sub4node = new TNode("I101","I101","I101",0.,ddet1,0.,"");
1594 sub4node->SetLineColor(kColorITS);
1595 sub4node->SetVisibility(0);
1598 // Place copy #1 of ITS1 in I101
1600 sub5node = new TNode("ITS1","ITS1","ITS1",0.,0.,0.,"");
1601 sub5node->SetLineColor(kColorITS);
1602 fNodes->Add(sub5node);
1604 fNodes->Add(sub4node);
1606 fNodes->Add(sub3node);
1609 // Place copy #3 of I107 in I10B
1611 sub3node = new TNode("I107","I107","I107",-0.0455,-di10b[1]+di107[1],-3.536,"");
1612 sub3node->SetLineColor(kColorITS);
1613 sub3node->SetVisibility(0);
1616 // Place copy #1 of I101 in I107
1618 sub4node = new TNode("I101","I101","I101",0.,ddet1,0.,"");
1619 sub4node->SetLineColor(kColorITS);
1620 sub4node->SetVisibility(0);
1623 // Place copy #1 of ITS1 in I101
1625 sub5node = new TNode("ITS1","ITS1","ITS1",0.,0.,0.,"");
1626 sub5node->SetLineColor(kColorITS);
1627 fNodes->Add(sub5node);
1629 fNodes->Add(sub4node);
1631 fNodes->Add(sub3node);
1634 // Place copy #4 of I107 in I10B
1636 sub3node = new TNode("I107","I107","I107",-0.0455,-di10b[1]+di107[1],-10.708,"");
1637 sub3node->SetLineColor(kColorITS);
1638 sub3node->SetVisibility(0);
1641 // Place copy #1 of I101 in I107
1643 sub4node = new TNode("I101","I101","I101",0.,ddet1,0.,"");
1644 sub4node->SetLineColor(kColorITS);
1645 sub4node->SetVisibility(0);
1648 // Place copy #1 of ITS1 in I101
1650 sub5node = new TNode("ITS1","ITS1","ITS1",0.,0.,0.,"");
1651 sub5node->SetLineColor(kColorITS);
1652 fNodes->Add(sub5node);
1654 fNodes->Add(sub4node);
1656 fNodes->Add(sub3node);
1658 fNodes->Add(sub2node);
1661 // Place copy #2 of I10B in I12B
1663 deltax=((ddet1-0.01/2.)+(dchip1-0.015/2.))*TMath::Cos(270.*TMath::Pi()/180.);
1664 deltay=((ddet1-0.01/2.)+(dchip1-0.015/2.))*TMath::Sin(270.*TMath::Pi()/180.);
1665 sub2node = new TNode("I10B","I10B","I10B",0.203+deltax,3.8206+deltay,0.,"itsrot238");
1666 sub2node->SetLineColor(kColorITS);
1667 sub2node->SetVisibility(0);
1670 // Place copy #1 of I107 in I10B
1672 sub3node = new TNode("I107","I107","I107",-0.0455,-di10b[1]+di107[1],10.708,"");
1673 sub3node->SetLineColor(kColorITS);
1674 sub3node->SetVisibility(0);
1677 // Place copy #1 of I101 in I107
1679 sub4node = new TNode("I101","I101","I101",0.,ddet1,0.,"");
1680 sub4node->SetLineColor(kColorITS);
1681 sub4node->SetVisibility(0);
1684 // Place copy #1 of ITS1 in I101
1686 sub5node = new TNode("ITS1","ITS1","ITS1",0.,0.,0.,"");
1687 sub5node->SetLineColor(kColorITS);
1688 fNodes->Add(sub5node);
1690 fNodes->Add(sub4node);
1692 fNodes->Add(sub3node);
1695 // Place copy #2 of I107 in I10B
1697 sub3node = new TNode("I107","I107","I107",-0.0455,-di10b[1]+di107[1],3.536,"");
1698 sub3node->SetLineColor(kColorITS);
1699 sub3node->SetVisibility(0);
1702 // Place copy #1 of I101 in I107
1704 sub4node = new TNode("I101","I101","I101",0.,ddet1,0.,"");
1705 sub4node->SetLineColor(kColorITS);
1706 sub4node->SetVisibility(0);
1709 // Place copy #1 of ITS1 in I101
1711 sub5node = new TNode("ITS1","ITS1","ITS1",0.,0.,0.,"");
1712 sub5node->SetLineColor(kColorITS);
1713 fNodes->Add(sub5node);
1715 fNodes->Add(sub4node);
1717 fNodes->Add(sub3node);
1720 // Place copy #3 of I107 in I10B
1722 sub3node = new TNode("I107","I107","I107",-0.0455,-di10b[1]+di107[1],-3.536,"");
1723 sub3node->SetLineColor(kColorITS);
1724 sub3node->SetVisibility(0);
1727 // Place copy #1 of I101 in I107
1729 sub4node = new TNode("I101","I101","I101",0.,ddet1,0.,"");
1730 sub4node->SetLineColor(kColorITS);
1731 sub4node->SetVisibility(0);
1734 // Place copy #1 of ITS1 in I101
1736 sub5node = new TNode("ITS1","ITS1","ITS1",0.,0.,0.,"");
1737 sub5node->SetLineColor(kColorITS);
1738 fNodes->Add(sub5node);
1740 fNodes->Add(sub4node);
1742 fNodes->Add(sub3node);
1745 // Place copy #4 of I107 in I10B
1747 sub3node = new TNode("I107","I107","I107",-0.0455,-di10b[1]+di107[1],-10.708,"");
1748 sub3node->SetLineColor(kColorITS);
1749 sub3node->SetVisibility(0);
1752 // Place copy #1 of I101 in I107
1754 sub4node = new TNode("I101","I101","I101",0.,ddet1,0.,"");
1755 sub4node->SetLineColor(kColorITS);
1756 sub4node->SetVisibility(0);
1759 // Place copy #1 of ITS1 in I101
1761 sub5node = new TNode("ITS1","ITS1","ITS1",0.,0.,0.,"");
1762 sub5node->SetLineColor(kColorITS);
1763 fNodes->Add(sub5node);
1765 fNodes->Add(sub4node);
1767 fNodes->Add(sub3node);
1769 fNodes->Add(sub2node);
1772 // Place copy #1 of I20B in I12B
1774 deltax=((ddet2-0.01/2.)+(dchip2-0.015/2.))*TMath::Cos(40.*TMath::Pi()/180.);
1775 deltay=((ddet2-0.01/2.)+(dchip2-0.015/2.))*TMath::Sin(40.*TMath::Pi()/180.);
1776 sub2node = new TNode("I20B","I20B","I20B",3.0174+deltax,6.5143+deltay,0.,"itsrot240");
1777 sub2node->SetLineColor(kColorITS);
1778 sub2node->SetVisibility(0);
1781 // Place copy #1 of I1D7 in I20B
1783 sub3node = new TNode("I1D7","I1D7","I1D7",-0.0455,-di20b[1]+di1d7[1],10.708,"");
1784 sub3node->SetLineColor(kColorITS);
1785 sub3node->SetVisibility(0);
1788 // Place copy #1 of I1D1 in I1D7
1790 sub4node = new TNode("I1D1","I1D1","I1D1",0.,ddet2,0.,"");
1791 sub4node->SetLineColor(kColorITS);
1792 sub4node->SetVisibility(0);
1795 // Place copy #1 of ITS2 in I1D1
1797 sub5node = new TNode("ITS2","ITS2","ITS2",0.,0.,0.,"");
1798 sub5node->SetLineColor(kColorITS);
1799 fNodes->Add(sub5node);
1801 fNodes->Add(sub4node);
1803 fNodes->Add(sub3node);
1806 // Place copy #2 of I1D7 in I20B
1808 sub3node = new TNode("I1D7","I1D7","I1D7",-0.0455,-di20b[1]+di1d7[1],3.536,"");
1809 sub3node->SetLineColor(kColorITS);
1810 sub3node->SetVisibility(0);
1813 // Place copy #1 of I1D1 in I1D7
1815 sub4node = new TNode("I1D1","I1D1","I1D1",0.,ddet2,0.,"");
1816 sub4node->SetLineColor(kColorITS);
1817 sub4node->SetVisibility(0);
1820 // Place copy #1 of ITS2 in I1D1
1822 sub5node = new TNode("ITS2","ITS2","ITS2",0.,0.,0.,"");
1823 sub5node->SetLineColor(kColorITS);
1824 fNodes->Add(sub5node);
1826 fNodes->Add(sub4node);
1828 fNodes->Add(sub3node);
1831 // Place copy #3 of I1D7 in I20B
1833 sub3node = new TNode("I1D7","I1D7","I1D7",-0.0455,-di20b[1]+di1d7[1],-3.536,"");
1834 sub3node->SetLineColor(kColorITS);
1835 sub3node->SetVisibility(0);
1838 // Place copy #1 of I1D1 in I1D7
1840 sub4node = new TNode("I1D1","I1D1","I1D1",0.,ddet2,0.,"");
1841 sub4node->SetLineColor(kColorITS);
1842 sub4node->SetVisibility(0);
1845 // Place copy #1 of ITS2 in I1D1
1847 sub5node = new TNode("ITS2","ITS2","ITS2",0.,0.,0.,"");
1848 sub5node->SetLineColor(kColorITS);
1849 fNodes->Add(sub5node);
1851 fNodes->Add(sub4node);
1853 fNodes->Add(sub3node);
1856 // Place copy #4 of I1D7 in I20B
1858 sub3node = new TNode("I1D7","I1D7","I1D7",-0.0455,-di20b[1]+di1d7[1],-10.708,"");
1859 sub3node->SetLineColor(kColorITS);
1860 sub3node->SetVisibility(0);
1863 // Place copy #1 of I1D1 in I1D7
1865 sub4node = new TNode("I1D1","I1D1","I1D1",0.,ddet2,0.,"");
1866 sub4node->SetLineColor(kColorITS);
1867 sub4node->SetVisibility(0);
1870 // Place copy #1 of ITS2 in I1D1
1872 sub5node = new TNode("ITS2","ITS2","ITS2",0.,0.,0.,"");
1873 sub5node->SetLineColor(kColorITS);
1874 fNodes->Add(sub5node);
1876 fNodes->Add(sub4node);
1878 fNodes->Add(sub3node);
1880 fNodes->Add(sub2node);
1883 // Place copy #2 of I20B in I12B
1885 deltax=((ddet2-0.01/2.)+(dchip2-0.015/2.))*TMath::Cos(49.*TMath::Pi()/180.);
1886 deltay=((ddet2-0.01/2.)+(dchip2-0.015/2.))*TMath::Sin(49.*TMath::Pi()/180.);
1887 sub2node = new TNode("I20B","I20B","I20B",1.9612+deltax,6.9062+deltay,0.,"itsrot241");
1888 sub2node->SetLineColor(kColorITS);
1889 sub2node->SetVisibility(0);
1892 // Place copy #1 of I1D7 in I20B
1894 sub3node = new TNode("I1D7","I1D7","I1D7",-0.0455,-di20b[1]+di1d7[1],10.708,"");
1895 sub3node->SetLineColor(kColorITS);
1896 sub3node->SetVisibility(0);
1899 // Place copy #1 of I1D1 in I1D7
1901 sub4node = new TNode("I1D1","I1D1","I1D1",0.,ddet2,0.,"");
1902 sub4node->SetLineColor(kColorITS);
1903 sub4node->SetVisibility(0);
1906 // Place copy #1 of ITS2 in I1D1
1908 sub5node = new TNode("ITS2","ITS2","ITS2",0.,0.,0.,"");
1909 sub5node->SetLineColor(kColorITS);
1910 fNodes->Add(sub5node);
1912 fNodes->Add(sub4node);
1914 fNodes->Add(sub3node);
1917 // Place copy #2 of I1D7 in I20B
1919 sub3node = new TNode("I1D7","I1D7","I1D7",-0.0455,-di20b[1]+di1d7[1],3.536,"");
1920 sub3node->SetLineColor(kColorITS);
1921 sub3node->SetVisibility(0);
1924 // Place copy #1 of I1D1 in I1D7
1926 sub4node = new TNode("I1D1","I1D1","I1D1",0.,ddet2,0.,"");
1927 sub4node->SetLineColor(kColorITS);
1928 sub4node->SetVisibility(0);
1931 // Place copy #1 of ITS2 in I1D1
1933 sub5node = new TNode("ITS2","ITS2","ITS2",0.,0.,0.,"");
1934 sub5node->SetLineColor(kColorITS);
1935 fNodes->Add(sub5node);
1937 fNodes->Add(sub4node);
1939 fNodes->Add(sub3node);
1942 // Place copy #3 of I1D7 in I20B
1944 sub3node = new TNode("I1D7","I1D7","I1D7",-0.0455,-di20b[1]+di1d7[1],-3.536,"");
1945 sub3node->SetLineColor(kColorITS);
1946 sub3node->SetVisibility(0);
1949 // Place copy #1 of I1D1 in I1D7
1951 sub4node = new TNode("I1D1","I1D1","I1D1",0.,ddet2,0.,"");
1952 sub4node->SetLineColor(kColorITS);
1953 sub4node->SetVisibility(0);
1956 // Place copy #1 of ITS2 in I1D1
1958 sub5node = new TNode("ITS2","ITS2","ITS2",0.,0.,0.,"");
1959 sub5node->SetLineColor(kColorITS);
1960 fNodes->Add(sub5node);
1962 fNodes->Add(sub4node);
1964 fNodes->Add(sub3node);
1967 // Place copy #4 of I1D7 in I20B
1969 sub3node = new TNode("I1D7","I1D7","I1D7",-0.0455,-di20b[1]+di1d7[1],-10.708,"");
1970 sub3node->SetLineColor(kColorITS);
1971 sub3node->SetVisibility(0);
1974 // Place copy #1 of I1D1 in I1D7
1976 sub4node = new TNode("I1D1","I1D1","I1D1",0.,ddet2,0.,"");
1977 sub4node->SetLineColor(kColorITS);
1978 sub4node->SetVisibility(0);
1981 // Place copy #1 of ITS2 in I1D1
1983 sub5node = new TNode("ITS2","ITS2","ITS2",0.,0.,0.,"");
1984 sub5node->SetLineColor(kColorITS);
1985 fNodes->Add(sub5node);
1987 fNodes->Add(sub4node);
1989 fNodes->Add(sub3node);
1991 fNodes->Add(sub2node);
1994 // Place copy #3 of I20B in I12B
1996 deltax=((ddet2-0.01/2.)+(dchip2-0.015/2.))*TMath::Cos(58.*TMath::Pi()/180.);
1997 deltay=((ddet2-0.01/2.)+(dchip2-0.015/2.))*TMath::Sin(58.*TMath::Pi()/180.);
1998 sub2node = new TNode("I20B","I20B","I20B",0.8567+deltax,7.1279+deltay,0.,"itsrot242");
1999 sub2node->SetLineColor(kColorITS);
2000 sub2node->SetVisibility(0);
2003 // Place copy #1 of I1D7 in I20B
2005 sub3node = new TNode("I1D7","I1D7","I1D7",-0.0455,-di20b[1]+di1d7[1],10.708,"");
2006 sub3node->SetLineColor(kColorITS);
2007 sub3node->SetVisibility(0);
2010 // Place copy #1 of I1D1 in I1D7
2012 sub4node = new TNode("I1D1","I1D1","I1D1",0.,ddet2,0.,"");
2013 sub4node->SetLineColor(kColorITS);
2014 sub4node->SetVisibility(0);
2017 // Place copy #1 of ITS2 in I1D1
2019 sub5node = new TNode("ITS2","ITS2","ITS2",0.,0.,0.,"");
2020 sub5node->SetLineColor(kColorITS);
2021 fNodes->Add(sub5node);
2023 fNodes->Add(sub4node);
2025 fNodes->Add(sub3node);
2028 // Place copy #2 of I1D7 in I20B
2030 sub3node = new TNode("I1D7","I1D7","I1D7",-0.0455,-di20b[1]+di1d7[1],3.536,"");
2031 sub3node->SetLineColor(kColorITS);
2032 sub3node->SetVisibility(0);
2035 // Place copy #1 of I1D1 in I1D7
2037 sub4node = new TNode("I1D1","I1D1","I1D1",0.,ddet2,0.,"");
2038 sub4node->SetLineColor(kColorITS);
2039 sub4node->SetVisibility(0);
2042 // Place copy #1 of ITS2 in I1D1
2044 sub5node = new TNode("ITS2","ITS2","ITS2",0.,0.,0.,"");
2045 sub5node->SetLineColor(kColorITS);
2046 fNodes->Add(sub5node);
2048 fNodes->Add(sub4node);
2050 fNodes->Add(sub3node);
2053 // Place copy #3 of I1D7 in I20B
2055 sub3node = new TNode("I1D7","I1D7","I1D7",-0.0455,-di20b[1]+di1d7[1],-3.536,"");
2056 sub3node->SetLineColor(kColorITS);
2057 sub3node->SetVisibility(0);
2060 // Place copy #1 of I1D1 in I1D7
2062 sub4node = new TNode("I1D1","I1D1","I1D1",0.,ddet2,0.,"");
2063 sub4node->SetLineColor(kColorITS);
2064 sub4node->SetVisibility(0);
2067 // Place copy #1 of ITS2 in I1D1
2069 sub5node = new TNode("ITS2","ITS2","ITS2",0.,0.,0.,"");
2070 sub5node->SetLineColor(kColorITS);
2071 fNodes->Add(sub5node);
2073 fNodes->Add(sub4node);
2075 fNodes->Add(sub3node);
2078 // Place copy #4 of I1D7 in I20B
2080 sub3node = new TNode("I1D7","I1D7","I1D7",-0.0455,-di20b[1]+di1d7[1],-10.708,"");
2081 sub3node->SetLineColor(kColorITS);
2082 sub3node->SetVisibility(0);
2085 // Place copy #1 of I1D1 in I1D7
2087 sub4node = new TNode("I1D1","I1D1","I1D1",0.,ddet2,0.,"");
2088 sub4node->SetLineColor(kColorITS);
2089 sub4node->SetVisibility(0);
2092 // Place copy #1 of ITS2 in I1D1
2094 sub5node = new TNode("ITS2","ITS2","ITS2",0.,0.,0.,"");
2095 sub5node->SetLineColor(kColorITS);
2096 fNodes->Add(sub5node);
2098 fNodes->Add(sub4node);
2100 fNodes->Add(sub3node);
2102 fNodes->Add(sub2node);
2105 // Place copy #4 of I20B in I12B
2107 deltax=((ddet2-0.01/2.)+(dchip2-0.015/2.))*TMath::Cos(67.*TMath::Pi()/180.);
2108 deltay=((ddet2-0.01/2.)+(dchip2-0.015/2.))*TMath::Sin(67.*TMath::Pi()/180.);
2109 sub2node = new TNode("I20B","I20B","I20B",-0.2689+deltax,7.1742+deltay,0.,"itsrot243");
2110 sub2node->SetLineColor(kColorITS);
2111 sub2node->SetVisibility(0);
2114 // Place copy #1 of I1D7 in I20B
2116 sub3node = new TNode("I1D7","I1D7","I1D7",-0.0455,-di20b[1]+di1d7[1],10.708,"");
2117 sub3node->SetLineColor(kColorITS);
2118 sub3node->SetVisibility(0);
2121 // Place copy #1 of I1D1 in I1D7
2123 sub4node = new TNode("I1D1","I1D1","I1D1",0.,ddet2,0.,"");
2124 sub4node->SetLineColor(kColorITS);
2125 sub4node->SetVisibility(0);
2128 // Place copy #1 of ITS2 in I1D1
2130 sub5node = new TNode("ITS2","ITS2","ITS2",0.,0.,0.,"");
2131 sub5node->SetLineColor(kColorITS);
2132 fNodes->Add(sub5node);
2134 fNodes->Add(sub4node);
2136 fNodes->Add(sub3node);
2139 // Place copy #2 of I1D7 in I20B
2141 sub3node = new TNode("I1D7","I1D7","I1D7",-0.0455,-di20b[1]+di1d7[1],3.536,"");
2142 sub3node->SetLineColor(kColorITS);
2143 sub3node->SetVisibility(0);
2146 // Place copy #1 of I1D1 in I1D7
2148 sub4node = new TNode("I1D1","I1D1","I1D1",0.,ddet2,0.,"");
2149 sub4node->SetLineColor(kColorITS);
2150 sub4node->SetVisibility(0);
2153 // Place copy #1 of ITS2 in I1D1
2155 sub5node = new TNode("ITS2","ITS2","ITS2",0.,0.,0.,"");
2156 sub5node->SetLineColor(kColorITS);
2157 fNodes->Add(sub5node);
2159 fNodes->Add(sub4node);
2161 fNodes->Add(sub3node);
2164 // Place copy #3 of I1D7 in I20B
2166 sub3node = new TNode("I1D7","I1D7","I1D7",-0.0455,-di20b[1]+di1d7[1],-3.536,"");
2167 sub3node->SetLineColor(kColorITS);
2168 sub3node->SetVisibility(0);
2171 // Place copy #1 of I1D1 in I1D7
2173 sub4node = new TNode("I1D1","I1D1","I1D1",0.,ddet2,0.,"");
2174 sub4node->SetLineColor(kColorITS);
2175 sub4node->SetVisibility(0);
2178 // Place copy #1 of ITS2 in I1D1
2180 sub5node = new TNode("ITS2","ITS2","ITS2",0.,0.,0.,"");
2181 sub5node->SetLineColor(kColorITS);
2182 fNodes->Add(sub5node);
2184 fNodes->Add(sub4node);
2186 fNodes->Add(sub3node);
2189 // Place copy #4 of I1D7 in I20B
2191 sub3node = new TNode("I1D7","I1D7","I1D7",-0.0455,-di20b[1]+di1d7[1],-10.708,"");
2192 sub3node->SetLineColor(kColorITS);
2193 sub3node->SetVisibility(0);
2196 // Place copy #1 of I1D1 in I1D7
2198 sub4node = new TNode("I1D1","I1D1","I1D1",0.,ddet2,0.,"");
2199 sub4node->SetLineColor(kColorITS);
2200 sub4node->SetVisibility(0);
2203 // Place copy #1 of ITS2 in I1D1
2205 sub5node = new TNode("ITS2","ITS2","ITS2",0.,0.,0.,"");
2206 sub5node->SetLineColor(kColorITS);
2207 fNodes->Add(sub5node);
2209 fNodes->Add(sub4node);
2211 fNodes->Add(sub3node);
2213 fNodes->Add(sub2node);
2215 fNodes->Add(sub1node);
2218 // Place copy #3 of I12B in IT12
2220 sub1node = new TNode("I12B","I12B","I12B",0.,0.,0.,"itsrot234");
2221 sub1node->SetLineColor(kColorITS);
2222 sub1node->SetVisibility(0);
2225 // Place copy #1 of I10B in I12B
2227 deltax=((ddet1-0.01/2.)+(dchip1-0.015/2.))*TMath::Cos(252.*TMath::Pi()/180.);
2228 deltay=((ddet1-0.01/2.)+(dchip1-0.015/2.))*TMath::Sin(252.*TMath::Pi()/180.);
2229 sub2node = new TNode("I10B","I10B","I10B",1.4531+deltax,3.8152+deltay,0.,"itsrot239");
2230 sub2node->SetLineColor(kColorITS);
2231 sub2node->SetVisibility(0);
2234 // Place copy #1 of I107 in I10B
2236 sub3node = new TNode("I107","I107","I107",-0.0455,-di10b[1]+di107[1],10.708,"");
2237 sub3node->SetLineColor(kColorITS);
2238 sub3node->SetVisibility(0);
2241 // Place copy #1 of I101 in I107
2243 sub4node = new TNode("I101","I101","I101",0.,ddet1,0.,"");
2244 sub4node->SetLineColor(kColorITS);
2245 sub4node->SetVisibility(0);
2248 // Place copy #1 of ITS1 in I101
2250 sub5node = new TNode("ITS1","ITS1","ITS1",0.,0.,0.,"");
2251 sub5node->SetLineColor(kColorITS);
2252 fNodes->Add(sub5node);
2254 fNodes->Add(sub4node);
2256 fNodes->Add(sub3node);
2259 // Place copy #2 of I107 in I10B
2261 sub3node = new TNode("I107","I107","I107",-0.0455,-di10b[1]+di107[1],3.536,"");
2262 sub3node->SetLineColor(kColorITS);
2263 sub3node->SetVisibility(0);
2266 // Place copy #1 of I101 in I107
2268 sub4node = new TNode("I101","I101","I101",0.,ddet1,0.,"");
2269 sub4node->SetLineColor(kColorITS);
2270 sub4node->SetVisibility(0);
2273 // Place copy #1 of ITS1 in I101
2275 sub5node = new TNode("ITS1","ITS1","ITS1",0.,0.,0.,"");
2276 sub5node->SetLineColor(kColorITS);
2277 fNodes->Add(sub5node);
2279 fNodes->Add(sub4node);
2281 fNodes->Add(sub3node);
2284 // Place copy #3 of I107 in I10B
2286 sub3node = new TNode("I107","I107","I107",-0.0455,-di10b[1]+di107[1],-3.536,"");
2287 sub3node->SetLineColor(kColorITS);
2288 sub3node->SetVisibility(0);
2291 // Place copy #1 of I101 in I107
2293 sub4node = new TNode("I101","I101","I101",0.,ddet1,0.,"");
2294 sub4node->SetLineColor(kColorITS);
2295 sub4node->SetVisibility(0);
2298 // Place copy #1 of ITS1 in I101
2300 sub5node = new TNode("ITS1","ITS1","ITS1",0.,0.,0.,"");
2301 sub5node->SetLineColor(kColorITS);
2302 fNodes->Add(sub5node);
2304 fNodes->Add(sub4node);
2306 fNodes->Add(sub3node);
2309 // Place copy #4 of I107 in I10B
2311 sub3node = new TNode("I107","I107","I107",-0.0455,-di10b[1]+di107[1],-10.708,"");
2312 sub3node->SetLineColor(kColorITS);
2313 sub3node->SetVisibility(0);
2316 // Place copy #1 of I101 in I107
2318 sub4node = new TNode("I101","I101","I101",0.,ddet1,0.,"");
2319 sub4node->SetLineColor(kColorITS);
2320 sub4node->SetVisibility(0);
2323 // Place copy #1 of ITS1 in I101
2325 sub5node = new TNode("ITS1","ITS1","ITS1",0.,0.,0.,"");
2326 sub5node->SetLineColor(kColorITS);
2327 fNodes->Add(sub5node);
2329 fNodes->Add(sub4node);
2331 fNodes->Add(sub3node);
2333 fNodes->Add(sub2node);
2336 // Place copy #2 of I10B in I12B
2338 deltax=((ddet1-0.01/2.)+(dchip1-0.015/2.))*TMath::Cos(270.*TMath::Pi()/180.);
2339 deltay=((ddet1-0.01/2.)+(dchip1-0.015/2.))*TMath::Sin(270.*TMath::Pi()/180.);
2340 sub2node = new TNode("I10B","I10B","I10B",0.203+deltax,3.8206+deltay,0.,"itsrot238");
2341 sub2node->SetLineColor(kColorITS);
2342 sub2node->SetVisibility(0);
2345 // Place copy #1 of I107 in I10B
2347 sub3node = new TNode("I107","I107","I107",-0.0455,-di10b[1]+di107[1],10.708,"");
2348 sub3node->SetLineColor(kColorITS);
2349 sub3node->SetVisibility(0);
2352 // Place copy #1 of I101 in I107
2354 sub4node = new TNode("I101","I101","I101",0.,ddet1,0.,"");
2355 sub4node->SetLineColor(kColorITS);
2356 sub4node->SetVisibility(0);
2359 // Place copy #1 of ITS1 in I101
2361 sub5node = new TNode("ITS1","ITS1","ITS1",0.,0.,0.,"");
2362 sub5node->SetLineColor(kColorITS);
2363 fNodes->Add(sub5node);
2365 fNodes->Add(sub4node);
2367 fNodes->Add(sub3node);
2370 // Place copy #2 of I107 in I10B
2372 sub3node = new TNode("I107","I107","I107",-0.0455,-di10b[1]+di107[1],3.536,"");
2373 sub3node->SetLineColor(kColorITS);
2374 sub3node->SetVisibility(0);
2377 // Place copy #1 of I101 in I107
2379 sub4node = new TNode("I101","I101","I101",0.,ddet1,0.,"");
2380 sub4node->SetLineColor(kColorITS);
2381 sub4node->SetVisibility(0);
2384 // Place copy #1 of ITS1 in I101
2386 sub5node = new TNode("ITS1","ITS1","ITS1",0.,0.,0.,"");
2387 sub5node->SetLineColor(kColorITS);
2388 fNodes->Add(sub5node);
2390 fNodes->Add(sub4node);
2392 fNodes->Add(sub3node);
2395 // Place copy #3 of I107 in I10B
2397 sub3node = new TNode("I107","I107","I107",-0.0455,-di10b[1]+di107[1],-3.536,"");
2398 sub3node->SetLineColor(kColorITS);
2399 sub3node->SetVisibility(0);
2402 // Place copy #1 of I101 in I107
2404 sub4node = new TNode("I101","I101","I101",0.,ddet1,0.,"");
2405 sub4node->SetLineColor(kColorITS);
2406 sub4node->SetVisibility(0);
2409 // Place copy #1 of ITS1 in I101
2411 sub5node = new TNode("ITS1","ITS1","ITS1",0.,0.,0.,"");
2412 sub5node->SetLineColor(kColorITS);
2413 fNodes->Add(sub5node);
2415 fNodes->Add(sub4node);
2417 fNodes->Add(sub3node);
2420 // Place copy #4 of I107 in I10B
2422 sub3node = new TNode("I107","I107","I107",-0.0455,-di10b[1]+di107[1],-10.708,"");
2423 sub3node->SetLineColor(kColorITS);
2424 sub3node->SetVisibility(0);
2427 // Place copy #1 of I101 in I107
2429 sub4node = new TNode("I101","I101","I101",0.,ddet1,0.,"");
2430 sub4node->SetLineColor(kColorITS);
2431 sub4node->SetVisibility(0);
2434 // Place copy #1 of ITS1 in I101
2436 sub5node = new TNode("ITS1","ITS1","ITS1",0.,0.,0.,"");
2437 sub5node->SetLineColor(kColorITS);
2438 fNodes->Add(sub5node);
2440 fNodes->Add(sub4node);
2442 fNodes->Add(sub3node);
2444 fNodes->Add(sub2node);
2447 // Place copy #1 of I20B in I12B
2449 deltax=((ddet2-0.01/2.)+(dchip2-0.015/2.))*TMath::Cos(40.*TMath::Pi()/180.);
2450 deltay=((ddet2-0.01/2.)+(dchip2-0.015/2.))*TMath::Sin(40.*TMath::Pi()/180.);
2451 sub2node = new TNode("I20B","I20B","I20B",3.0174+deltax,6.5143+deltay,0.,"itsrot240");
2452 sub2node->SetLineColor(kColorITS);
2453 sub2node->SetVisibility(0);
2456 // Place copy #1 of I1D7 in I20B
2458 sub3node = new TNode("I1D7","I1D7","I1D7",-0.0455,-di20b[1]+di1d7[1],10.708,"");
2459 sub3node->SetLineColor(kColorITS);
2460 sub3node->SetVisibility(0);
2463 // Place copy #1 of I1D1 in I1D7
2465 sub4node = new TNode("I1D1","I1D1","I1D1",0.,ddet2,0.,"");
2466 sub4node->SetLineColor(kColorITS);
2467 sub4node->SetVisibility(0);
2470 // Place copy #1 of ITS2 in I1D1
2472 sub5node = new TNode("ITS2","ITS2","ITS2",0.,0.,0.,"");
2473 sub5node->SetLineColor(kColorITS);
2474 fNodes->Add(sub5node);
2476 fNodes->Add(sub4node);
2478 fNodes->Add(sub3node);
2481 // Place copy #2 of I1D7 in I20B
2483 sub3node = new TNode("I1D7","I1D7","I1D7",-0.0455,-di20b[1]+di1d7[1],3.536,"");
2484 sub3node->SetLineColor(kColorITS);
2485 sub3node->SetVisibility(0);
2488 // Place copy #1 of I1D1 in I1D7
2490 sub4node = new TNode("I1D1","I1D1","I1D1",0.,ddet2,0.,"");
2491 sub4node->SetLineColor(kColorITS);
2492 sub4node->SetVisibility(0);
2495 // Place copy #1 of ITS2 in I1D1
2497 sub5node = new TNode("ITS2","ITS2","ITS2",0.,0.,0.,"");
2498 sub5node->SetLineColor(kColorITS);
2499 fNodes->Add(sub5node);
2501 fNodes->Add(sub4node);
2503 fNodes->Add(sub3node);
2506 // Place copy #3 of I1D7 in I20B
2508 sub3node = new TNode("I1D7","I1D7","I1D7",-0.0455,-di20b[1]+di1d7[1],-3.536,"");
2509 sub3node->SetLineColor(kColorITS);
2510 sub3node->SetVisibility(0);
2513 // Place copy #1 of I1D1 in I1D7
2515 sub4node = new TNode("I1D1","I1D1","I1D1",0.,ddet2,0.,"");
2516 sub4node->SetLineColor(kColorITS);
2517 sub4node->SetVisibility(0);
2520 // Place copy #1 of ITS2 in I1D1
2522 sub5node = new TNode("ITS2","ITS2","ITS2",0.,0.,0.,"");
2523 sub5node->SetLineColor(kColorITS);
2524 fNodes->Add(sub5node);
2526 fNodes->Add(sub4node);
2528 fNodes->Add(sub3node);
2531 // Place copy #4 of I1D7 in I20B
2533 sub3node = new TNode("I1D7","I1D7","I1D7",-0.0455,-di20b[1]+di1d7[1],-10.708,"");
2534 sub3node->SetLineColor(kColorITS);
2535 sub3node->SetVisibility(0);
2538 // Place copy #1 of I1D1 in I1D7
2540 sub4node = new TNode("I1D1","I1D1","I1D1",0.,ddet2,0.,"");
2541 sub4node->SetLineColor(kColorITS);
2542 sub4node->SetVisibility(0);
2545 // Place copy #1 of ITS2 in I1D1
2547 sub5node = new TNode("ITS2","ITS2","ITS2",0.,0.,0.,"");
2548 sub5node->SetLineColor(kColorITS);
2549 fNodes->Add(sub5node);
2551 fNodes->Add(sub4node);
2553 fNodes->Add(sub3node);
2555 fNodes->Add(sub2node);
2558 // Place copy #2 of I20B in I12B
2560 deltax=((ddet2-0.01/2.)+(dchip2-0.015/2.))*TMath::Cos(49.*TMath::Pi()/180.);
2561 deltay=((ddet2-0.01/2.)+(dchip2-0.015/2.))*TMath::Sin(49.*TMath::Pi()/180.);
2562 sub2node = new TNode("I20B","I20B","I20B",1.9612+deltax,6.9062+deltay,0.,"itsrot241");
2563 sub2node->SetLineColor(kColorITS);
2564 sub2node->SetVisibility(0);
2567 // Place copy #1 of I1D7 in I20B
2569 sub3node = new TNode("I1D7","I1D7","I1D7",-0.0455,-di20b[1]+di1d7[1],10.708,"");
2570 sub3node->SetLineColor(kColorITS);
2571 sub3node->SetVisibility(0);
2574 // Place copy #1 of I1D1 in I1D7
2576 sub4node = new TNode("I1D1","I1D1","I1D1",0.,ddet2,0.,"");
2577 sub4node->SetLineColor(kColorITS);
2578 sub4node->SetVisibility(0);
2581 // Place copy #1 of ITS2 in I1D1
2583 sub5node = new TNode("ITS2","ITS2","ITS2",0.,0.,0.,"");
2584 sub5node->SetLineColor(kColorITS);
2585 fNodes->Add(sub5node);
2587 fNodes->Add(sub4node);
2589 fNodes->Add(sub3node);
2592 // Place copy #2 of I1D7 in I20B
2594 sub3node = new TNode("I1D7","I1D7","I1D7",-0.0455,-di20b[1]+di1d7[1],3.536,"");
2595 sub3node->SetLineColor(kColorITS);
2596 sub3node->SetVisibility(0);
2599 // Place copy #1 of I1D1 in I1D7
2601 sub4node = new TNode("I1D1","I1D1","I1D1",0.,ddet2,0.,"");
2602 sub4node->SetLineColor(kColorITS);
2603 sub4node->SetVisibility(0);
2606 // Place copy #1 of ITS2 in I1D1
2608 sub5node = new TNode("ITS2","ITS2","ITS2",0.,0.,0.,"");
2609 sub5node->SetLineColor(kColorITS);
2610 fNodes->Add(sub5node);
2612 fNodes->Add(sub4node);
2614 fNodes->Add(sub3node);
2617 // Place copy #3 of I1D7 in I20B
2619 sub3node = new TNode("I1D7","I1D7","I1D7",-0.0455,-di20b[1]+di1d7[1],-3.536,"");
2620 sub3node->SetLineColor(kColorITS);
2621 sub3node->SetVisibility(0);
2624 // Place copy #1 of I1D1 in I1D7
2626 sub4node = new TNode("I1D1","I1D1","I1D1",0.,ddet2,0.,"");
2627 sub4node->SetLineColor(kColorITS);
2628 sub4node->SetVisibility(0);
2631 // Place copy #1 of ITS2 in I1D1
2633 sub5node = new TNode("ITS2","ITS2","ITS2",0.,0.,0.,"");
2634 sub5node->SetLineColor(kColorITS);
2635 fNodes->Add(sub5node);
2637 fNodes->Add(sub4node);
2639 fNodes->Add(sub3node);
2642 // Place copy #4 of I1D7 in I20B
2644 sub3node = new TNode("I1D7","I1D7","I1D7",-0.0455,-di20b[1]+di1d7[1],-10.708,"");
2645 sub3node->SetLineColor(kColorITS);
2646 sub3node->SetVisibility(0);
2649 // Place copy #1 of I1D1 in I1D7
2651 sub4node = new TNode("I1D1","I1D1","I1D1",0.,ddet2,0.,"");
2652 sub4node->SetLineColor(kColorITS);
2653 sub4node->SetVisibility(0);
2656 // Place copy #1 of ITS2 in I1D1
2658 sub5node = new TNode("ITS2","ITS2","ITS2",0.,0.,0.,"");
2659 sub5node->SetLineColor(kColorITS);
2660 fNodes->Add(sub5node);
2662 fNodes->Add(sub4node);
2664 fNodes->Add(sub3node);
2666 fNodes->Add(sub2node);
2669 // Place copy #3 of I20B in I12B
2671 deltax=((ddet2-0.01/2.)+(dchip2-0.015/2.))*TMath::Cos(58.*TMath::Pi()/180.);
2672 deltay=((ddet2-0.01/2.)+(dchip2-0.015/2.))*TMath::Sin(58.*TMath::Pi()/180.);
2673 sub2node = new TNode("I20B","I20B","I20B",0.8567+deltax,7.1279+deltay,0.,"itsrot242");
2674 sub2node->SetLineColor(kColorITS);
2675 sub2node->SetVisibility(0);
2678 // Place copy #1 of I1D7 in I20B
2680 sub3node = new TNode("I1D7","I1D7","I1D7",-0.0455,-di20b[1]+di1d7[1],10.708,"");
2681 sub3node->SetLineColor(kColorITS);
2682 sub3node->SetVisibility(0);
2685 // Place copy #1 of I1D1 in I1D7
2687 sub4node = new TNode("I1D1","I1D1","I1D1",0.,ddet2,0.,"");
2688 sub4node->SetLineColor(kColorITS);
2689 sub4node->SetVisibility(0);
2692 // Place copy #1 of ITS2 in I1D1
2694 sub5node = new TNode("ITS2","ITS2","ITS2",0.,0.,0.,"");
2695 sub5node->SetLineColor(kColorITS);
2696 fNodes->Add(sub5node);
2698 fNodes->Add(sub4node);
2700 fNodes->Add(sub3node);
2703 // Place copy #2 of I1D7 in I20B
2705 sub3node = new TNode("I1D7","I1D7","I1D7",-0.0455,-di20b[1]+di1d7[1],3.536,"");
2706 sub3node->SetLineColor(kColorITS);
2707 sub3node->SetVisibility(0);
2710 // Place copy #1 of I1D1 in I1D7
2712 sub4node = new TNode("I1D1","I1D1","I1D1",0.,ddet2,0.,"");
2713 sub4node->SetLineColor(kColorITS);
2714 sub4node->SetVisibility(0);
2717 // Place copy #1 of ITS2 in I1D1
2719 sub5node = new TNode("ITS2","ITS2","ITS2",0.,0.,0.,"");
2720 sub5node->SetLineColor(kColorITS);
2721 fNodes->Add(sub5node);
2723 fNodes->Add(sub4node);
2725 fNodes->Add(sub3node);
2728 // Place copy #3 of I1D7 in I20B
2730 sub3node = new TNode("I1D7","I1D7","I1D7",-0.0455,-di20b[1]+di1d7[1],-3.536,"");
2731 sub3node->SetLineColor(kColorITS);
2732 sub3node->SetVisibility(0);
2735 // Place copy #1 of I1D1 in I1D7
2737 sub4node = new TNode("I1D1","I1D1","I1D1",0.,ddet2,0.,"");
2738 sub4node->SetLineColor(kColorITS);
2739 sub4node->SetVisibility(0);
2742 // Place copy #1 of ITS2 in I1D1
2744 sub5node = new TNode("ITS2","ITS2","ITS2",0.,0.,0.,"");
2745 sub5node->SetLineColor(kColorITS);
2746 fNodes->Add(sub5node);
2748 fNodes->Add(sub4node);
2750 fNodes->Add(sub3node);
2753 // Place copy #4 of I1D7 in I20B
2755 sub3node = new TNode("I1D7","I1D7","I1D7",-0.0455,-di20b[1]+di1d7[1],-10.708,"");
2756 sub3node->SetLineColor(kColorITS);
2757 sub3node->SetVisibility(0);
2760 // Place copy #1 of I1D1 in I1D7
2762 sub4node = new TNode("I1D1","I1D1","I1D1",0.,ddet2,0.,"");
2763 sub4node->SetLineColor(kColorITS);
2764 sub4node->SetVisibility(0);
2767 // Place copy #1 of ITS2 in I1D1
2769 sub5node = new TNode("ITS2","ITS2","ITS2",0.,0.,0.,"");
2770 sub5node->SetLineColor(kColorITS);
2771 fNodes->Add(sub5node);
2773 fNodes->Add(sub4node);
2775 fNodes->Add(sub3node);
2777 fNodes->Add(sub2node);
2780 // Place copy #4 of I20B in I12B
2782 deltax=((ddet2-0.01/2.)+(dchip2-0.015/2.))*TMath::Cos(67.*TMath::Pi()/180.);
2783 deltay=((ddet2-0.01/2.)+(dchip2-0.015/2.))*TMath::Sin(67.*TMath::Pi()/180.);
2784 sub2node = new TNode("I20B","I20B","I20B",-0.2689+deltax,7.1742+deltay,0.,"itsrot243");
2785 sub2node->SetLineColor(kColorITS);
2786 sub2node->SetVisibility(0);
2789 // Place copy #1 of I1D7 in I20B
2791 sub3node = new TNode("I1D7","I1D7","I1D7",-0.0455,-di20b[1]+di1d7[1],10.708,"");
2792 sub3node->SetLineColor(kColorITS);
2793 sub3node->SetVisibility(0);
2796 // Place copy #1 of I1D1 in I1D7
2798 sub4node = new TNode("I1D1","I1D1","I1D1",0.,ddet2,0.,"");
2799 sub4node->SetLineColor(kColorITS);
2800 sub4node->SetVisibility(0);
2803 // Place copy #1 of ITS2 in I1D1
2805 sub5node = new TNode("ITS2","ITS2","ITS2",0.,0.,0.,"");
2806 sub5node->SetLineColor(kColorITS);
2807 fNodes->Add(sub5node);
2809 fNodes->Add(sub4node);
2811 fNodes->Add(sub3node);
2814 // Place copy #2 of I1D7 in I20B
2816 sub3node = new TNode("I1D7","I1D7","I1D7",-0.0455,-di20b[1]+di1d7[1],3.536,"");
2817 sub3node->SetLineColor(kColorITS);
2818 sub3node->SetVisibility(0);
2821 // Place copy #1 of I1D1 in I1D7
2823 sub4node = new TNode("I1D1","I1D1","I1D1",0.,ddet2,0.,"");
2824 sub4node->SetLineColor(kColorITS);
2825 sub4node->SetVisibility(0);
2828 // Place copy #1 of ITS2 in I1D1
2830 sub5node = new TNode("ITS2","ITS2","ITS2",0.,0.,0.,"");
2831 sub5node->SetLineColor(kColorITS);
2832 fNodes->Add(sub5node);
2834 fNodes->Add(sub4node);
2836 fNodes->Add(sub3node);
2839 // Place copy #3 of I1D7 in I20B
2841 sub3node = new TNode("I1D7","I1D7","I1D7",-0.0455,-di20b[1]+di1d7[1],-3.536,"");
2842 sub3node->SetLineColor(kColorITS);
2843 sub3node->SetVisibility(0);
2846 // Place copy #1 of I1D1 in I1D7
2848 sub4node = new TNode("I1D1","I1D1","I1D1",0.,ddet2,0.,"");
2849 sub4node->SetLineColor(kColorITS);
2850 sub4node->SetVisibility(0);
2853 // Place copy #1 of ITS2 in I1D1
2855 sub5node = new TNode("ITS2","ITS2","ITS2",0.,0.,0.,"");
2856 sub5node->SetLineColor(kColorITS);
2857 fNodes->Add(sub5node);
2859 fNodes->Add(sub4node);
2861 fNodes->Add(sub3node);
2864 // Place copy #4 of I1D7 in I20B
2866 sub3node = new TNode("I1D7","I1D7","I1D7",-0.0455,-di20b[1]+di1d7[1],-10.708,"");
2867 sub3node->SetLineColor(kColorITS);
2868 sub3node->SetVisibility(0);
2871 // Place copy #1 of I1D1 in I1D7
2873 sub4node = new TNode("I1D1","I1D1","I1D1",0.,ddet2,0.,"");
2874 sub4node->SetLineColor(kColorITS);
2875 sub4node->SetVisibility(0);
2878 // Place copy #1 of ITS2 in I1D1
2880 sub5node = new TNode("ITS2","ITS2","ITS2",0.,0.,0.,"");
2881 sub5node->SetLineColor(kColorITS);
2882 fNodes->Add(sub5node);
2884 fNodes->Add(sub4node);
2886 fNodes->Add(sub3node);
2888 fNodes->Add(sub2node);
2890 fNodes->Add(sub1node);
2893 // Place copy #4 of I12B in IT12
2895 sub1node = new TNode("I12B","I12B","I12B",0.,0.,0.,"itsrot246");
2896 sub1node->SetLineColor(kColorITS);
2897 sub1node->SetVisibility(0);
2900 // Place copy #1 of I10B in I12B
2902 deltax=((ddet1-0.01/2.)+(dchip1-0.015/2.))*TMath::Cos(252.*TMath::Pi()/180.);
2903 deltay=((ddet1-0.01/2.)+(dchip1-0.015/2.))*TMath::Sin(252.*TMath::Pi()/180.);
2904 sub2node = new TNode("I10B","I10B","I10B",1.4531+deltax,3.8152+deltay,0.,"itsrot239");
2905 sub2node->SetLineColor(kColorITS);
2906 sub2node->SetVisibility(0);
2909 // Place copy #1 of I107 in I10B
2911 sub3node = new TNode("I107","I107","I107",-0.0455,-di10b[1]+di107[1],10.708,"");
2912 sub3node->SetLineColor(kColorITS);
2913 sub3node->SetVisibility(0);
2916 // Place copy #1 of I101 in I107
2918 sub4node = new TNode("I101","I101","I101",0.,ddet1,0.,"");
2919 sub4node->SetLineColor(kColorITS);
2920 sub4node->SetVisibility(0);
2923 // Place copy #1 of ITS1 in I101
2925 sub5node = new TNode("ITS1","ITS1","ITS1",0.,0.,0.,"");
2926 sub5node->SetLineColor(kColorITS);
2927 fNodes->Add(sub5node);
2929 fNodes->Add(sub4node);
2931 fNodes->Add(sub3node);
2934 // Place copy #2 of I107 in I10B
2936 sub3node = new TNode("I107","I107","I107",-0.0455,-di10b[1]+di107[1],3.536,"");
2937 sub3node->SetLineColor(kColorITS);
2938 sub3node->SetVisibility(0);
2941 // Place copy #1 of I101 in I107
2943 sub4node = new TNode("I101","I101","I101",0.,ddet1,0.,"");
2944 sub4node->SetLineColor(kColorITS);
2945 sub4node->SetVisibility(0);
2948 // Place copy #1 of ITS1 in I101
2950 sub5node = new TNode("ITS1","ITS1","ITS1",0.,0.,0.,"");
2951 sub5node->SetLineColor(kColorITS);
2952 fNodes->Add(sub5node);
2954 fNodes->Add(sub4node);
2956 fNodes->Add(sub3node);
2959 // Place copy #3 of I107 in I10B
2961 sub3node = new TNode("I107","I107","I107",-0.0455,-di10b[1]+di107[1],-3.536,"");
2962 sub3node->SetLineColor(kColorITS);
2963 sub3node->SetVisibility(0);
2966 // Place copy #1 of I101 in I107
2968 sub4node = new TNode("I101","I101","I101",0.,ddet1,0.,"");
2969 sub4node->SetLineColor(kColorITS);
2970 sub4node->SetVisibility(0);
2973 // Place copy #1 of ITS1 in I101
2975 sub5node = new TNode("ITS1","ITS1","ITS1",0.,0.,0.,"");
2976 sub5node->SetLineColor(kColorITS);
2977 fNodes->Add(sub5node);
2979 fNodes->Add(sub4node);
2981 fNodes->Add(sub3node);
2984 // Place copy #4 of I107 in I10B
2986 sub3node = new TNode("I107","I107","I107",-0.0455,-di10b[1]+di107[1],-10.708,"");
2987 sub3node->SetLineColor(kColorITS);
2988 sub3node->SetVisibility(0);
2991 // Place copy #1 of I101 in I107
2993 sub4node = new TNode("I101","I101","I101",0.,ddet1,0.,"");
2994 sub4node->SetLineColor(kColorITS);
2995 sub4node->SetVisibility(0);
2998 // Place copy #1 of ITS1 in I101
3000 sub5node = new TNode("ITS1","ITS1","ITS1",0.,0.,0.,"");
3001 sub5node->SetLineColor(kColorITS);
3002 fNodes->Add(sub5node);
3004 fNodes->Add(sub4node);
3006 fNodes->Add(sub3node);
3008 fNodes->Add(sub2node);
3011 // Place copy #2 of I10B in I12B
3013 deltax=((ddet1-0.01/2.)+(dchip1-0.015/2.))*TMath::Cos(270.*TMath::Pi()/180.);
3014 deltay=((ddet1-0.01/2.)+(dchip1-0.015/2.))*TMath::Sin(270.*TMath::Pi()/180.);
3015 sub2node = new TNode("I10B","I10B","I10B",0.203+deltax,3.8206+deltay,0.,"itsrot238");
3016 sub2node->SetLineColor(kColorITS);
3017 sub2node->SetVisibility(0);
3020 // Place copy #1 of I107 in I10B
3022 sub3node = new TNode("I107","I107","I107",-0.0455,-di10b[1]+di107[1],10.708,"");
3023 sub3node->SetLineColor(kColorITS);
3024 sub3node->SetVisibility(0);
3027 // Place copy #1 of I101 in I107
3029 sub4node = new TNode("I101","I101","I101",0.,ddet1,0.,"");