For Pythia with tune don't switch off MI in ConfigHeavyFlavor
[u/mrichter/AliRoot.git] / ITS / AliITSvPPRasymmFMD.cxx
CommitLineData
6b2a1732 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
88cb7938 16/* $Id$ */
6b2a1732 17///////////////////////////////////////////////////////////////////////////////
18// //
19// Inner Traking System version PPR asymmetric for the FMD //
20// This class contains the base procedures for the Inner Tracking System //
21// //
22// Authors: R. Barbera //
f3c2ddf7 23// version 10. //
6b2a1732 24// Created January 15 2001. //
25// //
f3c2ddf7 26// NOTE: THIS IS THE ASYMMETRIC PPR geometry of the ITS for the PMD. //
6b2a1732 27// //
28///////////////////////////////////////////////////////////////////////////////
29
30// See AliITSvPPRasymmFMD::StepManager().
88cb7938 31
fd9cde50 32#include <TArrayD.h>
33#include <TArrayF.h>
f7a1cc68 34#include <TClonesArray.h>
35#include <TGeoGlobalMagField.h>
4f849f3d 36#include <TGeoManager.h>
f7a1cc68 37#include <TGeoMatrix.h>
38#include <TGeoPhysicalNode.h>
4f849f3d 39#include <TGeoVolume.h>
f7a1cc68 40#include <TLorentzVector.h>
41#include <TString.h>
f4396efc 42#include <TVirtualMC.h>
6b2a1732 43
6b2a1732 44#include "AliITS.h"
7d62fb64 45#include "AliITSDetTypeSim.h"
6b2a1732 46#include "AliITSgeom.h"
6b2a1732 47#include "AliITSgeomSDD.h"
88cb7938 48#include "AliITSgeomSPD.h"
6b2a1732 49#include "AliITSgeomSSD.h"
88cb7938 50#include "AliITShit.h"
6b2a1732 51#include "AliITSresponseSDD.h"
fcf95fc7 52#include "AliITSCalibrationSDD.h"
53#include "AliITSCalibrationSPD.h"
54#include "AliITSCalibrationSSD.h"
6b2a1732 55#include "AliITSsegmentationSDD.h"
88cb7938 56#include "AliITSsegmentationSPD.h"
6b2a1732 57#include "AliITSsegmentationSSD.h"
88cb7938 58#include "AliITSvPPRasymmFMD.h"
f77f13c8 59#include "AliLog.h"
60#include "AliMC.h"
88cb7938 61#include "AliMagF.h"
62#include "AliRun.h"
63#include "AliTrackReference.h"
70cb7b3d 64#include "AliGeomManager.h"
6b2a1732 65
7d62fb64 66
164da35c 67#define GEANTGEOMETRY kTRUE
68
6b2a1732 69ClassImp(AliITSvPPRasymmFMD)
70
87577a03 71//______________________________________________________________________
012f0f4c 72AliITSvPPRasymmFMD::AliITSvPPRasymmFMD():
73AliITS(), // Default AliITS Constructor
012f0f4c 74fByThick(kTRUE), // Flag to use services materials by thickness
75 // ture, or mass false.
76fMajorVersion(IsVersion()), // Major version number == IsVersion
77fMinorVersion(2), // Minor version number
012f0f4c 78fDet1(200.0), // thickness of detector in SPD layer 1 [microns]
79fDet2(200.0), // thickness of detector in SPD layer 2 [microns]
80fChip1(150.0), // thickness of chip in SPD layer 1 [microns]
81fChip2(150.0), // thickness of chip in SPD layer 2 [microns]
82fRails(0), // flag to switch rails on (=1) and off (=0)
83fFluid(1), // flag to switch between water (=1)& freon (=0)
84fIDMother(0), //! ITS Mother Volume id.
85fIgm((AliITSVersion_t)fMajorVersion,fMinorVersion)//! Get access to decoding
86 // and AliITSgeom init functions
ed9289c8 87 {
87577a03 88 // Standard default constructor for the ITS version 10.
89 // Inputs:
90 // none.
91 // Outputs:
92 // none.
93 // Return:
94 // none.
012f0f4c 95 fIgm.SetGeometryName("");
96}
70cb7b3d 97
012f0f4c 98//______________________________________________________________________
99AliITSvPPRasymmFMD::AliITSvPPRasymmFMD(const Char_t *title):
100AliITS(title), // Standard AliITS Constructor
012f0f4c 101fByThick(kTRUE), // Flag to use services materials by thickness
102 // ture, or mass false.
103fMajorVersion(IsVersion()), // Major version number == IsVersion
104fMinorVersion(2), // Minor version number
012f0f4c 105fDet1(200.0), // thickness of detector in SPD layer 1 [microns]
106fDet2(200.0), // thickness of detector in SPD layer 2 [microns]
107fChip1(150.0), // thickness of chip in SPD layer 1 [microns]
108fChip2(150.0), // thickness of chip in SPD layer 2 [microns]
109fRails(0), // flag to switch rails on (=1) and off (=0)
110fFluid(1), // flag to switch between water (=1)& freon (=0)
111fIDMother(0), //! ITS Mother Volume id.
112fIgm((AliITSVersion_t)fMajorVersion,fMinorVersion)//! Get access to decoding
113 // and AliITSgeom init functions
114{
115 // Standard constructor for the ITS version 10.
116 // Inputs:
117 // const Char_t * title Arbitrary title
118 // Outputs:
119 // none.
120 // Return:
121 // none.
6b2a1732 122 Int_t i;
012f0f4c 123
124 fIgm.SetDecoding(kFALSE);// Use Alice compliant naming/numbering system
125 fIgm.SetTiming(kFALSE);// default no timing
126 fIgm.SetSegGeom(kFALSE);// use AliITSgeomS?D classes instead
127 // of segmentation AliITSsegmentationS?D class
128 fIgm.SetGeometryName("ITS PPR aymmetric services with course"
129 " cables on cones");
130 // Set some AliITS class veriables.
131 fIdN = 6;
132 fIdName = new TString[fIdN];
133 fIdName[0] = "ITS1";
134 fIdName[1] = "ITS2";
135 fIdName[2] = "ITS3";
136 fIdName[3] = "ITS4";
137 fIdName[4] = "ITS5";
138 fIdName[5] = "ITS6";
139 fIdSens = new Int_t[fIdN];
140 for(i=0;i<fIdN;i++) fIdSens[i] = 0;
6b2a1732 141}
70cb7b3d 142
87577a03 143//______________________________________________________________________
012f0f4c 144AliITSvPPRasymmFMD::AliITSvPPRasymmFMD(const char *name, const char *title):
145AliITS(name,title), // Extended AliITS Constructor
012f0f4c 146fByThick(kTRUE), // Flag to use services materials by thickness
147 // ture, or mass false.
148fMajorVersion(IsVersion()), // Major version number == IsVersion
149fMinorVersion(2), // Minor version number
012f0f4c 150fDet1(200.0), // thickness of detector in SPD layer 1 [microns]
151fDet2(200.0), // thickness of detector in SPD layer 2 [microns]
152fChip1(150.0), // thickness of chip in SPD layer 1 [microns]
153fChip2(150.0), // thickness of chip in SPD layer 2 [microns]
154fRails(0), // flag to switch rails on (=1) and off (=0)
155fFluid(1), // flag to switch between water (=1)& freon (=0)
156fIDMother(0), //! ITS Mother Volume id.
157fIgm((AliITSVersion_t)fMajorVersion,fMinorVersion)//! Get access to decoding
158 // and AliITSgeom init functions
159{
87577a03 160 // Standard constructor for the ITS version 10.
161 // Inputs:
162 // const char * name Ignored, set to "ITS"
163 // const char * title Arbitrary title
164 // Outputs:
165 // none.
166 // Return:
167 // none.
012f0f4c 168
6b2a1732 169 Int_t i;
170
012f0f4c 171 fIgm.SetDecoding(kFALSE);// Use Alice compliant naming/numbering system
172 fIgm.SetTiming(kFALSE);// default no timing
173 fIgm.SetSegGeom(kFALSE);// use AliITSgeomS?D classes instead
174 // of segmentation AliITSsegmentationS?D class
175 fIgm.SetGeometryName("ITS PPR aymmetric services with course"
176 " cables on cones");
177 // Set some AliITS class veriables.
6b2a1732 178 fIdN = 6;
179 fIdName = new TString[fIdN];
180 fIdName[0] = "ITS1";
181 fIdName[1] = "ITS2";
182 fIdName[2] = "ITS3";
183 fIdName[3] = "ITS4";
184 fIdName[4] = "ITS5";
185 fIdName[5] = "ITS6";
186 fIdSens = new Int_t[fIdN];
187 for(i=0;i<fIdN;i++) fIdSens[i] = 0;
012f0f4c 188
6b2a1732 189 SetThicknessDet1();
190 SetThicknessDet2();
191 SetThicknessChip1();
87577a03 192 SetThicknessChip2();
193 SetDensityServicesByThickness();
012f0f4c 194}
70cb7b3d 195
012f0f4c 196//______________________________________________________________________
197AliITSvPPRasymmFMD::AliITSvPPRasymmFMD(const AliITSvPPRasymmFMD &source):
198AliITS(source.GetName(),source.GetTitle()),// Extended AliITS Constructor
012f0f4c 199 // from Geat.
200fByThick(source.IsDensityServicesByThickness()),// Flag to use services
201 // materials by thickness
202 // ture, or mass false.
203fMajorVersion(source.IsVersion()), // Major version number == IsVersion
204fMinorVersion(source.GetMinorVersion()),// Minor version number
012f0f4c 205 // are define.
012f0f4c 206fDet1(source.GetThicknessDet1()),//thickness of detector in SPD layer 1[micron]
207fDet2(source.GetThicknessDet2()),//thickness of detector in SPD layer 2[micron]
208fChip1(source.GetThicknessChip1()),//thickness of chip in SPD layer 1 [microns]
209fChip2(source.GetThicknessChip2()),//thickness of chip in SPD layer 2 [microns]
210fRails(source.GetRails()), // flag to switch rails on (=1) and off (=0)
211fFluid(source.GetCoolingFluid()),// flag to switch between water (1)& freon (0)
212fIDMother(source.GetMotherID()), //! ITS Mother Volume id.
213fIgm(source.GetGeomInit())//! Get access to decoding
214 // and AliITSgeom init functions
215{
216 // Copy Constructor for ITS version 10. This function is not to be
217 // used. If any other instance of this function, other than "this" is
218 // passed, an error message is returned.
219 // Inputs:
220 // const AliITSvPPRasymmFMD &source This class
221 // Outputs:
222 // none.
223 // Return:
224 // an error message
225
226 if(&source == this) return;
227 Warning("Copy Constructor","Not allowed to copy AliITSvPPRasymmFMD");
228 return;
229}
70cb7b3d 230
012f0f4c 231//______________________________________________________________________
232AliITSvPPRasymmFMD& AliITSvPPRasymmFMD::operator=(const AliITSvPPRasymmFMD
233 &source){
234 // Assignment operator for the ITS version 10. This function is not
235 // to be used. If any other instance of this function, other than "this"
236 // is passed, an error message is returned.
237 // Inputs:
238 // const AliITSvPPRasymmFMD &source This class
239 // Outputs:
240 // none.
241 // Return:
242 // an error message
6b2a1732 243
012f0f4c 244 if(&source == this) return *this;
245 Warning("= operator","Not allowed to copy AliITSvPPRasymmFMD");
246 return *this; // return null pointer, copy not allowed.
6b2a1732 247}
70cb7b3d 248
87577a03 249//______________________________________________________________________
6b2a1732 250AliITSvPPRasymmFMD::~AliITSvPPRasymmFMD() {
87577a03 251 // Standard destructor for the ITS version 10.
252 // Inputs:
253 // none.
254 // Outputs:
255 // none.
256 // Return:
257 // none.
6b2a1732 258}
70cb7b3d 259
ed9289c8 260//______________________________________________________________________
261void AliITSvPPRasymmFMD::AddAlignableVolumes() const
262{
263 //
7e366d28 264 // Creates entries for alignable volumes associating the symbolic volume
ed9289c8 265 // name with the corresponding volume path.
266 //
7e366d28 267 // Records in the alignable entries the transformation matrices converting
268 // TGeo local coordinates (in the RS of alignable volumes) to the tracking
269 // system
270 // For this, this function has to run before the misalignment because we
271 // are using the ideal positions in the AliITSgeom object.
272
ed9289c8 273 AliInfo("Add ITS alignable volumes");
274
275 if (!gGeoManager) {
276 AliFatal("TGeoManager doesn't exist !");
277 return;
278 }
279
70cb7b3d 280 AliGeomManager::ELayerID layerId;
281 Int_t modUID, modnum;
282
ed9289c8 283 if( !gGeoManager->SetAlignableEntry("ITS","ALIC_1/ITSV_1") )
284 AliFatal("Unable to set alignable entry!!");
285
41c99f19 286 Double_t al, *gtrans, rotMatrix[9];
7e366d28 287
ed9289c8 288 TString strSPD = "ITS/SPD";
289 TString strSDD = "ITS/SDD";
290 TString strSSD = "ITS/SSD";
291 TString strStave = "/Stave";
8f8273a4 292 TString strHalfStave = "/HalfStave";
ed9289c8 293 TString strLadder = "/Ladder";
294 TString strSector = "/Sector";
295 TString strSensor = "/Sensor";
296 TString strEntryName1;
297 TString strEntryName2;
298 TString strEntryName3;
8f8273a4 299 TString strEntryName4;
ed9289c8 300
301 //===== SPD layer1 =====
302 {
70cb7b3d 303 layerId = AliGeomManager::kSPD1;
304 modnum = 0;
ed9289c8 305 TString str0 = "ALIC_1/ITSV_1/ITSD_1/IT12_1/I12B_";
306 TString str1 = "/I10B_";
8f8273a4 307 TString str1Bis = "/L1H-STAVE";
308 TString str1Tierce = "_1";
ed9289c8 309 TString str2 = "/I107_";
8f8273a4 310
ed9289c8 311 TString sector;
312 TString stave;
8f8273a4 313 TString halfStave;
ed9289c8 314 TString module;
8f8273a4 315
70cb7b3d 316 for(Int_t cSect = 0; cSect<10; cSect++)
317 {
ed9289c8 318 sector = str0;
8f8273a4 319 sector += cSect+1; // this is one full sector
ed9289c8 320 strEntryName1 = strSPD;
321 strEntryName1 += 0;
322 strEntryName1 += strSector;
8f8273a4 323 strEntryName1 += cSect;
324 //printf("%s == %s\n",strEntryName1.Data(),sector.Data());
ed9289c8 325 if(!gGeoManager->SetAlignableEntry(strEntryName1.Data(),sector.Data()))
326 AliFatal("Unable to set alignable entry!!");
ed9289c8 327
70cb7b3d 328 for(Int_t cStave = 0; cStave<2; cStave++)
329 {
ed9289c8 330 stave = sector;
331 stave += str1;
8f8273a4 332 stave += cStave+1;
ed9289c8 333 strEntryName2 = strEntryName1;
334 strEntryName2 += strStave;
8f8273a4 335 strEntryName2 += cStave;
ed9289c8 336 //printf("%s == %s\n",strEntryName2.Data(),stave.Data()); // this is a stave
337
70cb7b3d 338 for(Int_t cHS=0; cHS<2; cHS++)
339 {
8f8273a4 340 halfStave = stave;
341 halfStave += str1Bis;
342 halfStave += cHS;
343 halfStave += str1Tierce;
ed9289c8 344 strEntryName3 = strEntryName2;
8f8273a4 345 strEntryName3 += strHalfStave;
346 strEntryName3 += cHS;
347 //printf("%s == %s\n",strEntryName3.Data(),halfStave.Data()); // this is a half-stave
348 if(!gGeoManager->SetAlignableEntry(strEntryName3.Data(),halfStave.Data()))
ed9289c8 349 AliFatal("Unable to set alignable entry!!");
8f8273a4 350
70cb7b3d 351 for(Int_t cLadder = 0; cLadder<2; cLadder++)
352 {
353 modUID = AliGeomManager::LayerToVolUID(layerId,modnum++);
8f8273a4 354 module = halfStave;
355 module += str2;
356 module += cLadder+cHS*2+1;
357 strEntryName4 = strEntryName3;
358 strEntryName4 += strLadder;
359 strEntryName4 += cLadder+cHS*2;
360 //printf("%s == %s\n",strEntryName4.Data(),module.Data());
70cb7b3d 361 if(!gGeoManager->SetAlignableEntry(strEntryName4.Data(),module.Data(),modUID))
8f8273a4 362 AliFatal("Unable to set alignable entry!!");
363
364 // Creates the TGeo Local to Tracking transformation matrix ...
70cb7b3d 365 TGeoPNEntry *alignableEntry = gGeoManager->GetAlignableEntryByUID(modUID);
366 TGeoHMatrix *globMatrix = alignableEntry->GetGlobalOrig();
8f8273a4 367 gtrans = globMatrix->GetTranslation();
368 memcpy(&rotMatrix[0], globMatrix->GetRotationMatrix(), 9*sizeof(Double_t));
369 al = TMath::ATan2(rotMatrix[1],rotMatrix[0]);
370 TGeoHMatrix *matLtoT = new TGeoHMatrix;
371 matLtoT->SetDx( gtrans[0]*TMath::Cos(al)+gtrans[1]*TMath::Sin(al) ); // translation
372 al += TMath::Pi()/2;
373
374 matLtoT->SetDy(-fChip1*0.0001/2.);
375 matLtoT->SetDz(-gtrans[2]);
0fcbd059 376 rotMatrix[0]= 0; rotMatrix[1]=-1; rotMatrix[2]= 0; // + rotation
8f8273a4 377 rotMatrix[3]=-1; rotMatrix[4]= 0; rotMatrix[5]= 0; // ! flip in y for the SPD1 only
378 rotMatrix[6]= 0; rotMatrix[7]= 0; rotMatrix[8]=-1;
379 TGeoRotation rot;
380 rot.SetMatrix(rotMatrix);
381 matLtoT->MultiplyLeft(&rot);
382 TGeoHMatrix *matTtoL = new TGeoHMatrix(matLtoT->Inverse());
383 delete matLtoT;
384 alignableEntry->SetMatrix(matTtoL);
385 }
ed9289c8 386 }
387 }
388 }
8f8273a4 389
390 //===== SPD layer2 =====
70cb7b3d 391 layerId = AliGeomManager::kSPD2;
392 modnum = 0;
8f8273a4 393 str1Bis = "/L2H-STAVE";
394 str1 = "/I20B_";
395 str2 = "/I1D7_";
396
70cb7b3d 397 for(Int_t cSect = 0; cSect<10; cSect++)
398 {
ed9289c8 399 sector = str0;
8f8273a4 400 sector += cSect+1; // this is one full sector
ed9289c8 401 strEntryName1 = strSPD;
402 strEntryName1 += 1;
403 strEntryName1 += strSector;
8f8273a4 404 strEntryName1 += cSect;
405 // if(!gGeoManager->SetAlignableEntry(strEntryName1.Data(),sector.Data()))
406 // AliFatal("Unable to set alignable entry!!");
407 // we don't need the previous lines because the whole sector is already define
408 // with first layer ...
ed9289c8 409
70cb7b3d 410 for(Int_t cStave =0; cStave<4; cStave++)
411 {
ed9289c8 412 stave = sector;
413 stave += str1;
8f8273a4 414 stave += cStave+1;
ed9289c8 415 strEntryName2 = strEntryName1;
416 strEntryName2 += strStave;
8f8273a4 417 strEntryName2 += cStave;
418
70cb7b3d 419 for(Int_t cHS=0; cHS<2; cHS++)
420 {
8f8273a4 421 halfStave = stave;
422 halfStave += str1Bis;
423 halfStave += cHS;
424 halfStave += str1Tierce;
ed9289c8 425 strEntryName3 = strEntryName2;
8f8273a4 426 strEntryName3 += strHalfStave;
427 strEntryName3 += cHS;
428 //printf("%s == %s\n",strEntryName3.Data(),halfStave.Data()); // this is a half-stave
429 if(!gGeoManager->SetAlignableEntry(strEntryName3.Data(),halfStave.Data()))
430 AliFatal("Unable to set alignable entry!!");
431
70cb7b3d 432 for(Int_t cLad =0; cLad<2; cLad++)
433 {
434 modUID = AliGeomManager::LayerToVolUID(layerId,modnum++);
8f8273a4 435 module = halfStave;
436 module += str2;
437 module += cLad+cHS*2+1;
438 strEntryName4 = strEntryName3;
439 strEntryName4 += strLadder;
440 strEntryName4 += cLad+cHS*2;
441 //printf("%s == %s\n",strEntryName4.Data(),module.Data());
70cb7b3d 442 if(!gGeoManager->SetAlignableEntry(strEntryName4.Data(),module.Data(),modUID))
8f8273a4 443 AliFatal("Unable to set alignable entry!!");
444
445 // Creates the TGeo Local to Tracking transformation matrix ...
70cb7b3d 446 TGeoPNEntry *alignableEntry = gGeoManager->GetAlignableEntryByUID(modUID);
447 TGeoHMatrix *globMatrix = alignableEntry->GetGlobalOrig();
8f8273a4 448 gtrans = globMatrix->GetTranslation();
449 memcpy(&rotMatrix[0], globMatrix->GetRotationMatrix(), 9*sizeof(Double_t));
450 al = TMath::ATan2(rotMatrix[1],rotMatrix[0]) + TMath::Pi();
451 TGeoHMatrix *matLtoT = new TGeoHMatrix;
452 matLtoT->SetDx(-gtrans[0]*TMath::Cos(al)-gtrans[1]*TMath::Sin(al) ); // translation
453 al += TMath::Pi()/2;
454
455 matLtoT->SetDy(-fChip2*0.0001/2.);
456 matLtoT->SetDz(-gtrans[2]);
457 rotMatrix[0]= 0; rotMatrix[1]= 1; rotMatrix[2]= 0; // + rotation
458 rotMatrix[3]= 1; rotMatrix[4]= 0; rotMatrix[5]= 0;
459 rotMatrix[6]= 0; rotMatrix[7]= 0; rotMatrix[8]=-1;
460 TGeoRotation rot;
461 rot.SetMatrix(rotMatrix);
462 matLtoT->MultiplyLeft(&rot);
463 TGeoHMatrix *matTtoL = new TGeoHMatrix(matLtoT->Inverse());
464 delete matLtoT;
465 alignableEntry->SetMatrix(matTtoL);
466 }
ed9289c8 467 }
468 }
469 }
470 }
8f8273a4 471
ed9289c8 472 //===== SDD layer1 =====
473 {
70cb7b3d 474 layerId = AliGeomManager::kSDD1;
475 modnum = 0;
ed9289c8 476 TString str0 = "ALIC_1/ITSV_1/ITSD_1/IT34_1/I004_";
477 TString str1 = "/I302_";
478
479 TString ladder;
480 TString wafer;
481
70cb7b3d 482 for(Int_t c1 = 1; c1<=14; c1++)
483 {
ed9289c8 484 ladder = str0;
485 ladder += c1; // the set of wafers from one ladder
486 strEntryName1 = strSDD;
487 strEntryName1 += 2;
488 strEntryName1 +=strLadder;
489 strEntryName1 += (c1-1);
490 if(!gGeoManager->SetAlignableEntry(strEntryName1.Data(),ladder.Data()))
491 AliFatal("Unable to set alignable entry!!");
492 //printf("%s == %s\n",strEntryName1.Data(),ladder.Data());
493
70cb7b3d 494 for(Int_t c2 =1; c2<=6; c2++)
495 {
496 modUID = AliGeomManager::LayerToVolUID(layerId,modnum++);
ed9289c8 497 wafer = ladder;
498 wafer += str1;
499 wafer += c2; // one wafer
500 strEntryName2 = strEntryName1;
501 strEntryName2 += strSensor;
502 strEntryName2 += (c2-1);
70cb7b3d 503 if(!gGeoManager->SetAlignableEntry(strEntryName2.Data(),wafer.Data(),modUID))
ed9289c8 504 AliFatal("Unable to set alignable entry!!");
505 //printf("%s == %s\n",strEntryName2.Data(),wafer.Data());
506
41c99f19 507 // Creates the TGeo Local to Tracking transformation matrix ...
70cb7b3d 508 TGeoPNEntry *alignableEntry = gGeoManager->GetAlignableEntryByUID(modUID);
509 TGeoHMatrix *globMatrix = alignableEntry->GetGlobalOrig();
41c99f19 510 gtrans = globMatrix->GetTranslation();
511 memcpy(&rotMatrix[0], globMatrix->GetRotationMatrix(), 9*sizeof(Double_t));
512 al = TMath::ATan2(rotMatrix[1],rotMatrix[0]) + TMath::Pi();
513 TGeoHMatrix *matLtoT = new TGeoHMatrix;
514 matLtoT->SetDx(-gtrans[0]*TMath::Cos(al)-gtrans[1]*TMath::Sin(al) ); // translation
515 al += TMath::Pi()/2;
516 // matLtoT->SetDy( gtrans[0]*TMath::Cos(al)+gtrans[1]*TMath::Sin(al) );
517 matLtoT->SetDy( 0 );
518 matLtoT->SetDz(-gtrans[2]);
519 rotMatrix[0]=0; rotMatrix[1]=1; rotMatrix[2]=0; // + rotation
520 rotMatrix[3]=1; rotMatrix[4]=0; rotMatrix[5]=0;
521 rotMatrix[6]=0; rotMatrix[7]=0; rotMatrix[8]=-1;
522 TGeoRotation rot;
523 rot.SetMatrix(rotMatrix);
524 matLtoT->MultiplyLeft(&rot);
525 TGeoHMatrix *matTtoL = new TGeoHMatrix(matLtoT->Inverse());
526 delete matLtoT;
527 alignableEntry->SetMatrix(matTtoL);
ed9289c8 528 }
529 }
530 }
531
532 //===== SDD layer2 =====
533 {
70cb7b3d 534 layerId = AliGeomManager::kSDD2;
535 modnum = 0;
ed9289c8 536 TString str0 = "ALIC_1/ITSV_1/ITSD_1/IT34_1/I005_";
537 TString str1 = "/I402_";
538
539 TString ladder;
540 TString wafer;
541
70cb7b3d 542 for(Int_t c1 = 1; c1<=22; c1++)
543 {
ed9289c8 544 ladder = str0;
545 ladder += c1; // the set of wafers from one ladder
546 strEntryName1 = strSDD;
547 strEntryName1 += 3;
548 strEntryName1 +=strLadder;
549 strEntryName1 += (c1-1);
550 if(!gGeoManager->SetAlignableEntry(strEntryName1.Data(),ladder.Data()))
551 AliFatal("Unable to set alignable entry!!");
552 //printf("%s == %s\n",strEntryName1.Data(),ladder.Data());
553
70cb7b3d 554 for(Int_t c2 =1; c2<=8; c2++)
555 {
556 modUID = AliGeomManager::LayerToVolUID(layerId,modnum++);
ed9289c8 557 wafer = ladder;
558 wafer += str1;
559 wafer += c2; // one wafer
560 strEntryName2 = strEntryName1;
561 strEntryName2 += strSensor;
562 strEntryName2 += (c2-1);
70cb7b3d 563 if(!gGeoManager->SetAlignableEntry(strEntryName2.Data(),wafer.Data(),modUID))
ed9289c8 564 AliFatal("Unable to set alignable entry!!");
565 //printf("%s == %s\n",strEntryName2.Data(),wafer.Data());
7e366d28 566
41c99f19 567 // Creates the TGeo Local to Tracking transformation matrix ...
70cb7b3d 568 TGeoPNEntry *alignableEntry = gGeoManager->GetAlignableEntryByUID(modUID);
569 TGeoHMatrix *globMatrix = alignableEntry->GetGlobalOrig();
41c99f19 570 gtrans = globMatrix->GetTranslation();
571 memcpy(&rotMatrix[0], globMatrix->GetRotationMatrix(), 9*sizeof(Double_t));
572 al = TMath::ATan2(rotMatrix[1],rotMatrix[0]) + TMath::Pi();
573 TGeoHMatrix *matLtoT = new TGeoHMatrix;
574 matLtoT->SetDx(-gtrans[0]*TMath::Cos(al)-gtrans[1]*TMath::Sin(al) ); // translation
575 al += TMath::Pi()/2;
576 // matLtoT->SetDy( gtrans[0]*TMath::Cos(al)+gtrans[1]*TMath::Sin(al) );
577 matLtoT->SetDy( 0 );
578 matLtoT->SetDz(-gtrans[2]);
579 rotMatrix[0]=0; rotMatrix[1]=1; rotMatrix[2]=0; // + rotation
580 rotMatrix[3]=1; rotMatrix[4]=0; rotMatrix[5]=0;
581 rotMatrix[6]=0; rotMatrix[7]=0; rotMatrix[8]=-1;
582 TGeoRotation rot;
583 rot.SetMatrix(rotMatrix);
584 matLtoT->MultiplyLeft(&rot);
585 TGeoHMatrix *matTtoL = new TGeoHMatrix(matLtoT->Inverse());
586 delete matLtoT;
587 alignableEntry->SetMatrix(matTtoL);
ed9289c8 588 }
589 }
590 }
591
592 //===== SSD layer1 =====
593 {
70cb7b3d 594 layerId = AliGeomManager::kSSD1;
595 modnum = 0;
ed9289c8 596 TString str0 = "ALIC_1/ITSV_1/ITSD_1/IT56_1/I565_";
597 TString str1 = "/I562_";
598
599 TString ladder;
600 TString wafer;
601
70cb7b3d 602 for(Int_t c1 = 1; c1<=34; c1++)
603 {
ed9289c8 604 ladder = str0;
605 ladder += c1; // the set of wafers from one ladder
606 strEntryName1 = strSSD;
607 strEntryName1 += 4;
608 strEntryName1 +=strLadder;
609 strEntryName1 += (c1-1);
610 if(!gGeoManager->SetAlignableEntry(strEntryName1.Data(),ladder.Data()))
611 AliFatal("Unable to set alignable entry!!");
612 //printf("%s == %s\n",strEntryName1.Data(),ladder.Data());
613
70cb7b3d 614 for(Int_t c2 = 1; c2<=22; c2++)
615 {
616 modUID = AliGeomManager::LayerToVolUID(layerId,modnum++);
ed9289c8 617 wafer = ladder;
618 wafer += str1;
619 wafer += c2; // one wafer
620 strEntryName2 = strEntryName1;
621 strEntryName2 += strSensor;
622 strEntryName2 += (c2-1);
70cb7b3d 623 if(!gGeoManager->SetAlignableEntry(strEntryName2.Data(),wafer.Data(),modUID))
ed9289c8 624 AliFatal("Unable to set alignable entry!!");
625 //printf("%s == %s\n",strEntryName2.Data(),wafer.Data());
7e366d28 626
41c99f19 627 // Creates the TGeo Local to Tracking transformation matrix ...
70cb7b3d 628 TGeoPNEntry *alignableEntry = gGeoManager->GetAlignableEntryByUID(modUID);
629 TGeoHMatrix *globMatrix = alignableEntry->GetGlobalOrig();
41c99f19 630 gtrans = globMatrix->GetTranslation();
631 memcpy(&rotMatrix[0], globMatrix->GetRotationMatrix(), 9*sizeof(Double_t));
632 al = TMath::ATan2(rotMatrix[1],rotMatrix[0]) + TMath::Pi();
633 TGeoHMatrix *matLtoT = new TGeoHMatrix;
634 matLtoT->SetDx(-gtrans[0]*TMath::Cos(al)-gtrans[1]*TMath::Sin(al) ); // translation
635 al += TMath::Pi()/2;
636 // matLtoT->SetDy( gtrans[0]*TMath::Cos(al)+gtrans[1]*TMath::Sin(al) );
637 matLtoT->SetDy( 0 );
638 matLtoT->SetDz(-gtrans[2]);
639 rotMatrix[0]=0; rotMatrix[1]=1; rotMatrix[2]=0; // + rotation
640 rotMatrix[3]=1; rotMatrix[4]=0; rotMatrix[5]=0;
641 rotMatrix[6]=0; rotMatrix[7]=0; rotMatrix[8]=-1;
642 TGeoRotation rot;
643 rot.SetMatrix(rotMatrix);
644 matLtoT->MultiplyLeft(&rot);
645 TGeoHMatrix *matTtoL = new TGeoHMatrix(matLtoT->Inverse());
646 delete matLtoT;
647 alignableEntry->SetMatrix(matTtoL);
ed9289c8 648 }
649 }
650 }
651
652 //===== SSD layer2 =====
653 {
70cb7b3d 654 layerId = AliGeomManager::kSSD2;
655 modnum = 0;
ed9289c8 656 TString str0 = "ALIC_1/ITSV_1/ITSD_1/IT56_1/I569_";
657 TString str1 = "/I566_";
658
659 TString ladder;
660 TString wafer;
661
70cb7b3d 662 for(Int_t c1 = 1; c1<=38; c1++)
663 {
ed9289c8 664 ladder = str0;
665 ladder += c1; // the set of wafers from one ladder
666 strEntryName1 = strSSD;
667 strEntryName1 += 5;
668 strEntryName1 +=strLadder;
669 strEntryName1 += (c1-1);
670 if(!gGeoManager->SetAlignableEntry(strEntryName1.Data(),ladder.Data()))
671 AliFatal("Unable to set alignable entry!!");
672 //printf("%s == %s\n",strEntryName1.Data(),ladder.Data());
673
70cb7b3d 674 for(Int_t c2 = 1; c2<=25; c2++)
675 {
676 modUID = AliGeomManager::LayerToVolUID(layerId,modnum++);
ed9289c8 677 wafer = ladder;
678 wafer += str1;
679 wafer += c2; // one wafer
680 strEntryName2 = strEntryName1;
681 strEntryName2 += strSensor;
682 strEntryName2 += (c2-1);
70cb7b3d 683 if(!gGeoManager->SetAlignableEntry(strEntryName2.Data(),wafer.Data(),modUID))
ed9289c8 684 AliFatal("Unable to set alignable entry!!");
685 //printf("%s == %s\n",strEntryName2.Data(),wafer.Data());
686
41c99f19 687 // Creates the TGeo Local to Tracking transformation matrix ...
70cb7b3d 688 TGeoPNEntry *alignableEntry = gGeoManager->GetAlignableEntryByUID(modUID);
689 TGeoHMatrix *globMatrix = alignableEntry->GetGlobalOrig();
41c99f19 690 gtrans = globMatrix->GetTranslation();
691 memcpy(&rotMatrix[0], globMatrix->GetRotationMatrix(), 9*sizeof(Double_t));
692 al = TMath::ATan2(rotMatrix[1],rotMatrix[0]) + TMath::Pi();
693 TGeoHMatrix *matLtoT = new TGeoHMatrix;
694 matLtoT->SetDx(-gtrans[0]*TMath::Cos(al)-gtrans[1]*TMath::Sin(al) ); // translation
695 al += TMath::Pi()/2;
696 // matLtoT->SetDy( gtrans[0]*TMath::Cos(al)+gtrans[1]*TMath::Sin(al) );
697 matLtoT->SetDy( 0 );
698 matLtoT->SetDz(-gtrans[2]);
699 rotMatrix[0]=0; rotMatrix[1]=1; rotMatrix[2]=0; // + rotation
700 rotMatrix[3]=1; rotMatrix[4]=0; rotMatrix[5]=0;
701 rotMatrix[6]=0; rotMatrix[7]=0; rotMatrix[8]=-1;
702 TGeoRotation rot;
703 rot.SetMatrix(rotMatrix);
704 matLtoT->MultiplyLeft(&rot);
705 TGeoHMatrix *matTtoL = new TGeoHMatrix(matLtoT->Inverse());
706 delete matLtoT;
707 alignableEntry->SetMatrix(matTtoL);
ed9289c8 708 }
709 }
710 }
41c99f19 711}
70cb7b3d 712
87577a03 713//______________________________________________________________________
6b2a1732 714void AliITSvPPRasymmFMD::CreateGeometry(){
87577a03 715 // This routine defines and Creates the geometry for version 10 of
716 // the ITS.
717 // Inputs:
718 // none.
719 // Outputs:
720 // none.
721 // Return:
722 // none.
723
724 //Begin_Html
725 /*
726 <img src="picts/ITS/ITS_full_vPPRasymm.jpg">
727 </pre>
728 <br clear=left>
729 <font size=+2 color=red>
730 <p>This shows the full ITS geometry.
731 </font>
732 <img src="picts/ITS/ITS_SPD_Barrel_vPPRasymm.jpg">
733 </pre>
734 < br clear=left>
735 <font size=+2 color=red>
736 <p>This shows the full SPD Barrel of the ITS geometry.
737 </font>
738 <img src="picts/ITS/ITS_SDD_Barrel_vPPRasymm.jpg">
739 </pre>
740 <br clear=left>
741 <font size=+2 color=red>
742 <p>This shows the full SDD Barrel of the ITS geometry.
743 </font>
744 <img src="picts/ITS/ITS_SSD_Barrel_vPPRasymm.jpg">
745 </pre>
746 <br clear=left>
747 <font size=+2 color=red>
748 <p>This shows the full SSD Barrel of the ITS geometry.
749 </font>
750 */
751 //End_Html
752 //INNER RADII OF THE SILICON LAYERS
753 // Float_t rl[6] = { 3.8095,7.,15.,24.,38.1,43.5765 };
754 //THICKNESSES OF LAYERS (in % radiation length)
755 Float_t drl[6] = { 1.03,1.03,0.94,0.95,0.91,0.87 };
756 //HALF LENGTHS OF LAYERS
757 // Float_t dzl[6] = { 14.35,14.35,25.1,32.1,49.405,55.27 };
758 //LENGTHS OF END-LADDER BOXES (ALL INCLUDED)
759 // Float_t dzb[6] = { 12.4,12.4,13.5,15.,7.5,7.5 };
760 //THICKNESSES OF END-LADDER BOXES (ALL INCLUDED)
761 // Float_t drb[6] = { rl[1]-rl[0],0.2,5.,5.,4.,4. };
762
763
764 Float_t dits[100], rlim, zmax;
765 // Float_t zpos;
766 // Float_t pcits[50]
767 Float_t ztpc;
768 Int_t idrotm[1999], i;
769 Float_t dgh[100];
770
771
772 // Define some variables for SPD
773
774 Float_t dits1[3], di101[3], di107[3], di10b[3], di106[3];// for layer 1
775 Float_t di103[3], di10a[3], di102[3]; // for layer 1
776 Float_t dits2[3], di1d1[3], di1d7[3], di20b[3], di1d6[3];// for layer 2
777 Float_t di1d3[3], di20a[3], di1d2[3]; // for layer 2
778 Float_t di108[3], di104[3]; // for both layers
779
780 Float_t ddet1=200.; // total detector thickness on layer 1 (micron)
781 Float_t dchip1=200.; // total chip thickness on layer 1 (micron)
782
783 Float_t ddet2=200.; // total detector thickness on layer 2 (micron)
784 Float_t dchip2=200.; // total chip thickness on layer 2 (micron)
785
786 Float_t dbus=300.; // total bus thickness on both layers (micron)
787
012f0f4c 788 // These constant character strings are set by cvs during commit
789 // do not change them unless you know what you are doing!
790 const Char_t *cvsDate="$Date$";
791 const Char_t *cvsRevision="$Revision$";
792
87577a03 793 ddet1 = GetThicknessDet1();
794 ddet2 = GetThicknessDet2();
795 dchip1 = GetThicknessChip1();
796 dchip2 = GetThicknessChip2();
797
798 if(ddet1 < 100. || ddet1 > 300.) {
f77f13c8 799 AliWarning("The detector thickness for layer 1 is outside ");
800 AliWarning("the range of [100,300] microns. The default value of 200 microns ");
801 AliWarning("will be used.");
87577a03 802 ddet1=200.;
803 } // end if
6b2a1732 804
87577a03 805 if(ddet2 < 100. || ddet2 > 300.) {
f77f13c8 806 AliWarning("The detector thickness for layer 2 is outside ");
807 AliWarning("the range of [100,300] microns. The default value of 200 microns ");
808 AliWarning("will be used.");
87577a03 809 ddet2=200.;
810 }// end if
6b2a1732 811
87577a03 812 if(dchip1 < 100. || dchip1 > 300.) {
f77f13c8 813 AliWarning("The chip thickness for layer 1 is outside");
814 AliWarning("the range of [100,300] microns. The default value of 200 microns");
815 AliWarning("will be used.");
816 dchip1=200.;
87577a03 817 }// end if
6b2a1732 818
87577a03 819 if(dchip2 < 100. || dchip2 > 300.) {
f77f13c8 820 AliWarning("The chip thickness for layer 2 is outside");
821 AliWarning("the range of [100,300] microns. The default value of 200 microns");
822 AliWarning("will be used");
823 dchip2=200.;
87577a03 824 }// end if
6b2a1732 825
87577a03 826 Int_t rails = 1; // flag for rails (1 --> rails in; 0 --> rails out)
6b2a1732 827
ad819a25 828 Int_t fluid = 1; // flag for the cooling fluid (1 --> water; 0 --> freon)
829 // This option is maintained for SDD and SSD only
830 // For SPD the cooling liquid is C4F10
87577a03 831 rails = GetRails();
6b2a1732 832
87577a03 833 fluid = GetCoolingFluid();
6b2a1732 834
87577a03 835 if(rails != 0 && rails != 1) {
f77f13c8 836 AliWarning("The switch for rails is not set neither");
837 AliWarning("to 0 (rails out) nor to 1 (rails in). The default value of");
838 AliWarning("1 (rails in) will be used");
839 rails=1;
87577a03 840 }// end if
6b2a1732 841
6b2a1732 842
64f311fe 843 AliDebug(1,Form("Detector thickness on layer 1 is set to %f microns",ddet1));
844 AliDebug(1,Form("Chip thickness on layer 1 is set to %f microns",dchip1));
845 AliDebug(1,Form("Detector thickness on layer 2 is set to %f microns",ddet2));
846 AliDebug(1,Form("Chip thickness on layer 2 is set to %f microns",dchip2));
87577a03 847 if(rails == 0 ) {
64f311fe 848 AliDebug(1,"Rails are out.");
87577a03 849 } else {
64f311fe 850 AliDebug(1,"Rails are in.");
87577a03 851 }// end if
6b2a1732 852
87577a03 853 ddet1 = ddet1*0.0001/2.; // conversion from tot length in um to half in cm
854 ddet2 = ddet2*0.0001/2.; // conversion from tot length in um to half in cm
855 dchip1 = dchip1*0.0001/2.;// conversion from tot length in um to half in cm
856 dchip2 = dchip2*0.0001/2.;// conversion from tot length in um to half in cm
857 dbus = dbus*0.0001/2.; // conversion from tot length in um to half in cm
858
859 Float_t deltax, deltay;
860
861 Int_t thickness = fMinorVersion/10;
862 Int_t option = fMinorVersion - 10*thickness;
863
87577a03 864 // Define some variables for SDD
865
866
867 Float_t sin30, cos30;
868
869 // SDD electronics+services main volumes
41b19549 870 Float_t iI018dits[3], iI024dits[3], iI047dits[3], iI048dits[3];
87577a03 871
872 // SDD detector ladder
873
41b19549 874 Float_t iI302dits[3], iI402dits[3], iI004dits[3], iI005dits[3];
875 Float_t ySDDsep = 0.20;
87577a03 876 Float_t ySDD;
877 Int_t iSDD;
41b19549 878 Float_t zSDDlay3[6] = { 18.55, 10.95, 3.70, -3.70,-11.20,-18.35};
879 Float_t zSDDlay4[8] = { 25.75, 18.60, 11.00, 3.70, -3.70,-11.20,
87577a03 880 -18.45,-26.05};
881
882 // ladder foot and end-ladder (frame and cooling)
41b19549 883 Float_t iI028dits[3], iI420dits[3], iI421dits[3], iI422dits[6], iI423dits[3];
884 Float_t iI424dits[3], xI424, yI424;
885 Float_t iI425dits[3];
87577a03 886 Int_t indI425;
41b19549 887 Float_t iI029dits[4], iI030dits[4], iI031dits[3], iI032dits[3];
87577a03 888
889 // SDD ladder frame and cooling
41b19549 890 Float_t iSDDCoolPipe[3] = {1.7000, -0.5500, 0.0000};
891 Float_t iI035dits[3], iI037dits[3], iI038dits[3];
892 Float_t iI039dits[3], xI039, yI039;
893 Float_t iI041dits[5];
87577a03 894
895 // SDD hybrid, chips and capacitors
41b19549 896 Float_t iI050dits[3], xI050, yI050;
897 Float_t iI052dits[3], xI052, yI052;
898 Float_t iI042dits[3], xI042, yI042;
87577a03 899 Float_t xI042space = 0.17;
41b19549 900 Float_t iI043dits[3], xI043, yI043;
87577a03 901 Float_t xI043space = 0.17;
902 Float_t zchip, zChipSpace;
41b19549 903 Float_t iI051dits[3], xI051, yI051, zI051, yI051space, xcap;
87577a03 904 Int_t ichip, icap;
905
906 // SDD microcables
41b19549 907 Float_t iI044dits[4], xI044, yI044, volI044;
87577a03 908 Float_t xHV, yHV, zHV, xLV, yLV, zLV;
41b19549 909 Char_t nameHV[5], nameLV[5];
87577a03 910
911
912 // Define media off-set
913
914 Int_t *idtmed = fIdtmed->GetArray()-199;
915
916
917 // Rotation matrices
918
919 // SPD - option 'a' (this is NOT the default so leave commented)
920
921
922 if (option == 1) {
923 AliMatrix(idrotm[201],90.0,90.0,90.0,180.0,0.0,0.0);
924 AliMatrix(idrotm[202],90.0,90.0,90.0,0.0,0.0,0.0);
925 AliMatrix(idrotm[203],90.0,350.0,90.0,260.0,0.0,0.0);
926 AliMatrix(idrotm[204],90.0,170.0,90.0,80.0,0.0,0.0);
927 AliMatrix(idrotm[205],90.0,10.0,90.0,100.0,0.0,0.0);
928 AliMatrix(idrotm[206],90.0,190.0,90.0,280.0,0.0,0.0);
929 AliMatrix(idrotm[207],90.0,342.0,90.0,72.0,0.0,0.0);
930 AliMatrix(idrotm[208],90.0,156.999893,90.0,246.999893,0.0,0.0);
931 AliMatrix(idrotm[209],90.0,147.999802,90.0,237.999893,0.0,0.0);
932 AliMatrix(idrotm[210],90.0,138.999802,90.0,228.999802,0.0,0.0);
933 AliMatrix(idrotm[211],90.0,129.999802,90.0,219.999802,0.0,0.0);
934 AliMatrix(idrotm[212],90.0,36.7896,90.0,126.789597,0.0,0.0);
935 AliMatrix(idrotm[213],90.0,343.579712,90.0,73.579697,0.0,0.0);
936 AliMatrix(idrotm[214],90.0,95.413696,90.0,185.413696,0.0,0.0);
937 AliMatrix(idrotm[215],90.0,5.4141,90.0,95.414101,0.0,0.0);
938 AliMatrix(idrotm[216],90.0,318.296906,90.0,48.296902,0.0,0.0);
939 AliMatrix(idrotm[217],90.0,67.000099,90.0,157.000107,0.0,0.0);
940 AliMatrix(idrotm[218],90.0,337.003998,90.0,67.003998,0.0,0.0);
941 AliMatrix(idrotm[219],90.0,247.000305,90.0,337.000305,0.0,0.0);
942 AliMatrix(idrotm[220],90.0,305.633514,90.0,35.633499,0.0,0.0);
943 AliMatrix(idrotm[221],90.0,58.000198,90.0,148.000198,0.0,0.0);
944 AliMatrix(idrotm[222],90.0,327.997101,90.0,57.997101,0.0,0.0 );
945 AliMatrix(idrotm[223],90.0,237.994202,90.0,327.994202,0.0,0.0);
946 AliMatrix(idrotm[224],90.0,296.627502,90.0,26.627399,0.0,0.0);
947 AliMatrix(idrotm[225],90.0,48.994099,90.0,138.994095,0.0,0.0);
948 AliMatrix(idrotm[226],90.0,318.990997,90.0,48.991001,0.0,0.0);
949 AliMatrix(idrotm[227],90.0,228.988205,90.0,318.98819,0.0,0.0);
950 AliMatrix(idrotm[228],90.0,287.621399,90.0,17.621401,0.0,0.0);
951 AliMatrix(idrotm[229],90.0,39.988098,90.0,129.988098,0.0,0.0);
952 AliMatrix(idrotm[230],90.0,309.984985,90.0,39.985001,0.0,0.0);
953 AliMatrix(idrotm[231],90.0,327.2612,90.0,57.2612,0.0,0.0);
954 AliMatrix(idrotm[232],90.0,237.261398,90.0,327.261414,0.0,0.0);
955 AliMatrix(idrotm[233],90.0,252.000504,90.0,342.000488,0.0,0.0 );
956 AliMatrix(idrotm[234],90.0,71.9991,90.0,161.9991,0.0,0.0);
957 AliMatrix(idrotm[235],90.0,270.0,90.0,0.0,0.0,0.0);
958 AliMatrix(idrotm[236],90.0,180.013702,90.0,270.013702,0.0,0.0);
959 AliMatrix(idrotm[237],90.0,0.0,90.0,90.0,0.0,0.0);
960 AliMatrix(idrotm[238],90.0,144.0,90.0,234.0,0.0,0.0);
961 AliMatrix(idrotm[239],90.0,216.0,90.0,306.0,0.0,0.0);
962 AliMatrix(idrotm[240],90.0,288.0,90.0,18.0,0.0,0.0);
963 AliMatrix(idrotm[241],90.0,324.0,90.0,54.0,0.0,0.0);
964 AliMatrix(idrotm[242],90.0,36.0,90.0,126.0,0.0,0.0);
965 AliMatrix(idrotm[243],90.0,108.0,90.0,198.0,0.0,0.0);
966 AliMatrix(idrotm[244],90.0,180.0,90.0,270.0,0.0,0.0);
967 AliMatrix(idrotm[245],90.0,162.0,90.0,252.0,0.0,0.0);
968 AliMatrix(idrotm[246],90.0,310.0,90.0,40.0,0.0,0.0);
969 AliMatrix(idrotm[247],90.0,319.0,90.0,49.0,0.0,0.0);
970 AliMatrix(idrotm[248],90.0,328.0,90.0,58.0,0.0,0.0);
971 AliMatrix(idrotm[249],90.0,337.0,90.0,67.0,0.0,0.0);
972 AliMatrix(idrotm[1003],90.0,73.5,90.0,163.5,0.0,0.0);
973 AliMatrix(idrotm[1011],90.0,342.0,90.0,72.0,0.0,0.0);
974 AliMatrix(idrotm[1039],90.0,72.0,90.0,162.0,0.0,0.0);
975 AliMatrix(idrotm[1043],90.0,66.91,90.0,156.91,0.0,0.0);
976 AliMatrix(idrotm[1065],90.0,144.0,90.0,234.0,0.0,0.0);
977 AliMatrix(idrotm[1078],90.0,180.0,90.0,270.0,0.0,0.0);
978 AliMatrix(idrotm[1088],90.0,57.41,90.0,147.41,0.0,0.0);
979 AliMatrix(idrotm[1089],90.0,333.0,90.0,63.0,0.0,0.0);
980 AliMatrix(idrotm[1090],90.0,351.0,90.0,81.0,0.0,0.0);
981 AliMatrix(idrotm[1091],90.0,216.0,90.0,306.0,0.0,0.0);
982 AliMatrix(idrotm[1092],90.0,27.0,90.0,117.0,0.0,0.0);
983 AliMatrix(idrotm[1093],90.0,18.0,90.0,108.0,0.0,0.0);
984 AliMatrix(idrotm[1094],90.0,9.0,90.0,99.0,0.0,0.0);
985 AliMatrix(idrotm[1104],90.0,252.0,90.0,342.0,0.0,0.0);
986 AliMatrix(idrotm[1106],90.0,36.0,90.0,126.0,0.0,0.0);
987 AliMatrix(idrotm[1107],90.0,108.0,90.0,198.0,0.0,0.0);
988 AliMatrix(idrotm[1108],90.0,324.0,90.0,54.0,180.0,0.0);
989 AliMatrix(idrotm[1109],90.0,0.0,90.0,90.0,180.0,0.0);
990 AliMatrix(idrotm[1110],90.0,36.0,90.0,126.0,180.0,0.0);
991 AliMatrix(idrotm[1111],90.0,72.0,90.0,162.0,180.0,0.0);
992 AliMatrix(idrotm[1112],90.0,108.0,90.0,198.0,180.0,0.0);
993 AliMatrix(idrotm[1113],90.0,144.0,90.0,234.0,180.0,0.0);
994 AliMatrix(idrotm[1114],90.0,180.0,90.0,270.0,180.0,0.0);
995 AliMatrix(idrotm[1115],90.0,216.0,90.0,306.0,180.0,0.0);
996 AliMatrix(idrotm[1116],90.0,252.0,90.0,342.0,180.0,0.0);
997 AliMatrix(idrotm[1117],90.0,288.0,90.0,18.0,0.0,0.0);
998 AliMatrix(idrotm[1118],90.0,288.0,90.0,18.0,180.0,0.0);
999 AliMatrix(idrotm[1130],90.0,324.0,90.0,54.0,0.0,0.0);
1000 }// end if option == 1
1001
1002 // SPD - option 'b' (this is the default)
1003
1004 if (option == 2) {
1005 AliMatrix(idrotm[201],90.0,0.0,90.0,90.0,0.0,0.0);
1006 AliMatrix(idrotm[202],90.0,90.0,90.0,0.0,0.0,0.0);
1007 AliMatrix(idrotm[203],90.0,350.0,90.0,260.0,0.0,0.0);
1008 AliMatrix(idrotm[204],90.0,170.0,90.0,80.0,0.0,0.0);
1009 AliMatrix(idrotm[205],90.0,10.0,90.0,100.0,0.0,0.0);
1010 AliMatrix(idrotm[206],90.0,190.0,90.0,280.0,0.0,0.0);
1011 AliMatrix(idrotm[207],90.0,342.0,90.0,72.0,0.0,0.0);
1012 AliMatrix(idrotm[208],90.0,156.999893,90.0,246.999893,0.0,0.0);
1013 AliMatrix(idrotm[209],90.0,147.999802,90.0,237.999893,0.0,0.0);
1014 AliMatrix(idrotm[210],90.0,138.999802,90.0,228.999802,0.0,0.0);
1015 AliMatrix(idrotm[211],90.0,129.999802,90.0,219.999802,0.0,0.0);
1016 AliMatrix(idrotm[212],90.0,36.7896,90.0,126.789597,0.0,0.0);
1017 AliMatrix(idrotm[213],90.0,343.579712,90.0,73.579697,0.0,0.0);
1018 AliMatrix(idrotm[214],90.0,95.413696,90.0,185.413696,0.0,0.0);
1019 AliMatrix(idrotm[215],90.0,5.4141,90.0,95.414101,0.0,0.0);
1020 AliMatrix(idrotm[216],90.0,318.296906,90.0,48.296902,0.0,0.0);
1021 AliMatrix(idrotm[217],90.0,67.000099,90.0,157.000107,0.0,0.0);
1022 AliMatrix(idrotm[218],90.0,337.003998,90.0,67.003998,0.0,0.0);
1023 AliMatrix(idrotm[219],90.0,247.000305,90.0,337.000305,0.0,0.0);
1024 AliMatrix(idrotm[220],90.0,305.633514,90.0,35.633499,0.0,0.0);
4f849f3d 1025
87577a03 1026 AliMatrix(idrotm[221],90.0,58.000198,90.0,148.000198,0.0,0.0);
1027 AliMatrix(idrotm[222],90.0,327.997101,90.0,57.997101,0.0,0.0);
1028 AliMatrix(idrotm[223],90.0,237.994202,90.0,327.994202,0.0,0.0);
1029 AliMatrix(idrotm[224],90.0,296.627502,90.0,26.627399,0.0,0.0);
1030 AliMatrix(idrotm[225],90.0,48.994099,90.0,138.994095,0.0,0.0);
1031 AliMatrix(idrotm[226],90.0,318.990997,90.0,48.991001,0.0,0.0);
1032 AliMatrix(idrotm[227],90.0,228.988205,90.0,318.98819,0.0,0.0);
1033 AliMatrix(idrotm[228],90.0,287.621399,90.0,17.621401,0.0,0.0);
1034 AliMatrix(idrotm[229],90.0,39.988098,90.0,129.988098,0.0,0.0);
1035 AliMatrix(idrotm[230],90.0,309.984985,90.0,39.985001,0.0,0.0);
1036 AliMatrix(idrotm[231],90.0,327.2612,90.0,57.2612,0.0,0.0);
1037 AliMatrix(idrotm[232],90.0,237.261398,90.0,327.261414,0.0,0.0);
1038 AliMatrix(idrotm[233],90.0,252.000504,90.0,342.000488,0.0,0.0);
1039 AliMatrix(idrotm[234],90.0,71.9991,90.0,161.9991,0.0,0.0);
1040 AliMatrix(idrotm[235],90.0,270.0,90.0,0.0,0.0,0.0);
1041 AliMatrix(idrotm[236],90.0,180.013702,90.0,270.013702,0.0,0.0);
1042 AliMatrix(idrotm[237],90.0,90.0,90.0,180.0,0.0,0.0);
1043 AliMatrix(idrotm[238],90.0,180.0,90.0,270.0,0.0,0.0);
1044 AliMatrix(idrotm[239],90.0,162.0,90.0,252.0,0.0,0.0);
1045 AliMatrix(idrotm[240],90.0,310.0,90.0,40.0,0.0,0.0);
1046 AliMatrix(idrotm[241],90.0,319.0,90.0,49.0,0.0,0.0);
1047 AliMatrix(idrotm[242],90.0,328.0,90.0,58.0,0.0,0.0);
1048 AliMatrix(idrotm[243],90.0,337.0,90.0,67.0,0.0,0.0);
1049 AliMatrix(idrotm[244],90.0,216.0,90.0,306.0,0.0,0.0);
1050 AliMatrix(idrotm[245],90.0,36.0,90.0,126.0,0.0,0.0);
1051 AliMatrix(idrotm[246],90.0,108.0,90.0,198.0,0.0,0.0);
1052 AliMatrix(idrotm[247],90.0,144.0,90.0,234.0,0.0,0.0);
1053 AliMatrix(idrotm[248],90.0,288.0,90.0,18.0,0.0,0.0);
1054 AliMatrix(idrotm[249],90.0,324.0,90.0,54.0,0.0,0.0);
1055 AliMatrix(idrotm[1003],90.0,73.5,90.0,163.5,0.0,0.0);
1056 AliMatrix(idrotm[1011],90.0,342.0,90.0,72.0,0.0,0.0);
1057 AliMatrix(idrotm[1039],90.0,72.0,90.0,162.0,0.0,0.0);
1058 AliMatrix(idrotm[1043],90.0,66.91,90.0,156.91,0.0,0.0);
1059 AliMatrix(idrotm[1065],90.0,144.0,90.0,234.0,0.0,0.0);
1060 AliMatrix(idrotm[1078],90.0,180.0,90.0,270.0,0.0,0.0);
1061 AliMatrix(idrotm[1088],90.0,57.41,90.0,147.41,0.0,0.0);
1062 AliMatrix(idrotm[1089],90.0,333.0,90.0,63.0,0.0,0.0);
1063 AliMatrix(idrotm[1090],90.0,351.0,90.0,81.0,0.0,0.0);
1064 AliMatrix(idrotm[1091],90.0,216.0,90.0,306.0,0.0,0.0);
1065 AliMatrix(idrotm[1092],90.0,27.0,90.0,117.0,0.0,0.0);
1066 AliMatrix(idrotm[1093],90.0,18.0,90.0,108.0,0.0,0.0);
1067 AliMatrix(idrotm[1094],90.0,9.0,90.0,99.0,0.0,0.0);
1068 AliMatrix(idrotm[1104],90.0,252.0,90.0,342.0,0.0,0.0);
1069 AliMatrix(idrotm[1106],90.0,36.0,90.0,126.0,0.0,0.0);
1070 AliMatrix(idrotm[1107],90.0,108.0,90.0,198.0,0.0,0.0);
1071 AliMatrix(idrotm[1108],90.0,324.0,90.0,54.0,180.0,0.0);
1072 AliMatrix(idrotm[1109],90.0,0.0,90.0,90.0,180.0,0.0);
1073 AliMatrix(idrotm[1110],90.0,36.0,90.0,126.0,180.0,0.0);
1074 AliMatrix(idrotm[1111],90.0,72.0,90.0,162.0,180.0,0.0);
1075 AliMatrix(idrotm[1112],90.0,108.0,90.0,198.0,180.0,0.0);
1076 AliMatrix(idrotm[1113],90.0,144.0,90.0,234.0,180.0,0.0);
1077 AliMatrix(idrotm[1114],90.0,180.0,90.0,270.0,180.0,0.0);
1078 AliMatrix(idrotm[1115],90.0,216.0,90.0,306.0,180.0,0.0);
1079 AliMatrix(idrotm[1116],90.0,252.0,90.0,342.0,180.0,0.0);
1080 AliMatrix(idrotm[1117],90.0,288.0,90.0,18.0,0.0,0.0);
1081 AliMatrix(idrotm[1118],90.0,288.0,90.0,18.0,180.0,0.0);
1082 AliMatrix(idrotm[1130],90.0,324.0,90.0,54.0,0.0,0.0);
1083 }// end if option==2
6b2a1732 1084
87577a03 1085 // SDD
1086 AliMatrix(idrotm[301],0.0,0.0,90.0,90.0,90.0,180.0);
1087 AliMatrix(idrotm[302],0.0,0.0,90.0,90.0,90.0,0.0);
1088 AliMatrix(idrotm[303],180.0,0.0,90.0,90.0,90.0,0.0);
1089 AliMatrix(idrotm[304],180.0,0.0,90.0,90.0,90.0,180.0);
1090 AliMatrix(idrotm[305],90.0,347.14,90.0,77.14,0.0,0.0);
1091 AliMatrix(idrotm[306],90.0,321.43,90.0,51.43,0.0,0.0);
1092 AliMatrix(idrotm[307],90.0,295.71,90.0,25.71,0.0,0.0);
1093 AliMatrix(idrotm[308],90.0,244.29,90.0,334.29,0.0,0.0);
1094 AliMatrix(idrotm[309],90.0,218.57,90.0,308.57,0.0,0.0);
1095 AliMatrix(idrotm[310],90.0,167.14,90.0,257.14,0.0,0.0);
1096 AliMatrix(idrotm[311],90.0,141.43,90.0,231.43,0.0,0.0);
1097 AliMatrix(idrotm[312],90.0,0.0,0.0,0.0,90.0,270.0);
1098 AliMatrix(idrotm[313],90.0,115.71,90.0,205.71,0.0,0.0);
1099 AliMatrix(idrotm[314],90.0,335.45,90.0,65.45,0.0,0.0);
1100 AliMatrix(idrotm[315],90.0,319.09,90.0,49.09,0.0,0.0);
1101 AliMatrix(idrotm[316],90.0,302.73,90.0,32.73,0.0,0.0);
1102 AliMatrix(idrotm[317],90.0,286.36,90.0,16.36,0.0,0.0);
1103 AliMatrix(idrotm[318],90.0,270.0,90.0,360.0,0.0,0.0);
1104 AliMatrix(idrotm[319],90.0,253.64,90.0,343.64,0.0,0.0);
1105 AliMatrix(idrotm[320],90.0,237.27,90.0,327.27,0.0,0.0);
1106 AliMatrix(idrotm[321],90.0,12.86,90.0,102.86,0.0,0.0);
1107 AliMatrix(idrotm[322],90.0,220.91,90.0,310.91,0.0,0.0);
1108 AliMatrix(idrotm[323],90.0,204.55,90.0,294.55,0.0,0.0);
1109 AliMatrix(idrotm[324],90.0,188.18,90.0,278.18,0.0,0.0);
1110 AliMatrix(idrotm[325],90.0,171.82,90.0,261.82,0.0,0.0);
1111 AliMatrix(idrotm[326],90.0,155.45,90.0,245.45,0.0,0.0);
1112 AliMatrix(idrotm[327],90.0,139.09,90.0,229.09,0.0,0.0);
1113 AliMatrix(idrotm[328],90.0,122.73,90.0,212.73,0.0,0.0);
1114 AliMatrix(idrotm[329],90.0,106.36,90.0,196.36,0.0,0.0);
1115 AliMatrix(idrotm[330],90.0,73.64,90.0,163.64,0.0,0.0);
1116 AliMatrix(idrotm[331],90.0,40.91,90.0,130.91,0.0,0.0);
1117 AliMatrix(idrotm[332],90.0,24.55,90.0,114.55,0.0,0.0);
1118 AliMatrix(idrotm[333],90.0,38.57,90.0,128.57,0.0,0.0);
1119 AliMatrix(idrotm[334],90.0,351.82,90.0,81.82,0.0,0.0);
1120 AliMatrix(idrotm[335],90.0,8.18,90.0,98.18,0.0,0.0);
1121 AliMatrix(idrotm[336],90.0,64.29,90.0,154.29,0.0,0.0);
1122 AliMatrix(idrotm[337],111.0,300.0,21.0,300.0,90.0,30.0);
1123 AliMatrix(idrotm[338],69.0,240.0,159.0,240.0,90.0,150.0);
1124 AliMatrix(idrotm[339],111.0,240.0,21.0,240.0,90.0,150.0);
1125 AliMatrix(idrotm[340],69.0,300.0,159.0,300.0,90.0,30.0);
1126 AliMatrix(idrotm[341],128.0,0.0,38.0,0.0,90.0,270.0);
1127 AliMatrix(idrotm[342],90.0,240.0,180.0,0.0,90.0,330.);
1128 AliMatrix(idrotm[343],90.0,120.0,180.0,0.0,90.0,210.0);
1129 AliMatrix(idrotm[344],90.0,0.0,180.0,0.0,90.0,90.0);
1130 AliMatrix(idrotm[345],90.0,180.0,90.0,90.0,0.0,0.0);
1131 AliMatrix(idrotm[346],90.0,300.0,90.0,30.0,0.0,0.0);
1132 AliMatrix(idrotm[347],90.0,240.0,90.0,150.0,0.0,0.0);
1133 AliMatrix(idrotm[348],90.0,180.0,0.0,0.0,90.0,270.0);
1134 AliMatrix(idrotm[349],90.0,235.0,90.0,145.0,0.0,0.0);
1135 AliMatrix(idrotm[350],90.0,90.0,90.0,180.0,0.0,0.0);
1136 AliMatrix(idrotm[351],90.0,305.0,90.0,35.0,0.0,0.0);
1137 AliMatrix(idrotm[352],0.0,0.0,90.0,0.0,90.0,90.0);
1138 AliMatrix(idrotm[353],90.0,60.0,90.0,150.0,0.0,0.0);
1139 AliMatrix(idrotm[354],90.0,120.0,90.0,30.0,0.0,0.0);
1140 AliMatrix(idrotm[355],90.0,180.0,90.0,90.0,180.0,0.0);
1141 AliMatrix(idrotm[356],90.0,270.0,90.0,0.0,0.0,0.0);
1142 AliMatrix(idrotm[366],90.0,57.27,90.0,147.27,0.0,0.0);
1143 AliMatrix(idrotm[386],90.0,192.86,90.0,282.86,0.0,0.0);
1144
1145 // SSD
1146 AliMatrix(idrotm[501],90.0,148.24,90.0,238.24,0.0,0.0);
1147 AliMatrix(idrotm[503],90.0,137.65,90.0,227.65,0.0,0.0);
1148 AliMatrix(idrotm[504],90.0,127.06,90.0,217.06,0.0,0.0);
1149 AliMatrix(idrotm[505],90.0,116.47,90.0,206.47,0.0,0.0);
1150 AliMatrix(idrotm[506],90.0,105.88,90.0,195.88,0.0,0.0);
1151 AliMatrix(idrotm[507],90.0,95.29,90.0,185.29,0.0,0.0);
1152 AliMatrix(idrotm[508],90.0,84.71,90.0,174.71,0.0,0.0);
1153 AliMatrix(idrotm[509],90.0,74.12,90.0,164.12,0.0,0.0);
1154 AliMatrix(idrotm[510],90.0,63.53,90.0,153.53,0.0,0.0);
1155 AliMatrix(idrotm[511],90.0,52.94,90.0,142.94,0.0,0.0);
1156 AliMatrix(idrotm[512],90.0,42.35,90.0,132.35,0.0,0.0);
1157 AliMatrix(idrotm[513],90.0,31.76,90.0,121.76,0.0,0.0);
1158 AliMatrix(idrotm[514],90.0,10.59,90.0,100.59,0.0,0.0);
1159 AliMatrix(idrotm[515],90.0,349.41,90.0,79.41,0.0,0.0);
1160 AliMatrix(idrotm[516],90.0,338.82,90.0,68.82,0.0,0.0);
1161 AliMatrix(idrotm[517],90.0,328.24,90.0,58.24,0.0,0.0);
1162 AliMatrix(idrotm[518],90.0,317.65,90.0,47.65,0.0,0.0);
1163 AliMatrix(idrotm[519],90.0,307.06,90.0,37.06,0.0,0.0);
1164 AliMatrix(idrotm[520],90.0,296.47,90.0,26.47,0.0,0.0);
1165 AliMatrix(idrotm[521],90.0,285.88,90.0,15.88,0.0,0.0);
1166 AliMatrix(idrotm[522],90.0,275.29,90.0,5.29,0.0,0.0);
1167 AliMatrix(idrotm[523],90.0,264.71,90.0,354.71,0.0,0.0);
1168 AliMatrix(idrotm[524],90.0,254.12,90.0,344.12,0.0,0.0);
1169 AliMatrix(idrotm[525],90.0,243.53,90.0,333.53,0.0,0.0);
1170 AliMatrix(idrotm[526],90.0,232.94,90.0,322.94,0.0,0.0);
1171 AliMatrix(idrotm[527],90.0,222.35,90.0,312.35,0.0,0.0);
1172 AliMatrix(idrotm[528],90.0,211.76,90.0,301.76,0.0,0.0);
1173 AliMatrix(idrotm[529],90.0,190.59,90.0,280.59,0.0,0.0);
1174 AliMatrix(idrotm[530],90.0,169.41,90.0,259.41,0.0,0.0);
1175 AliMatrix(idrotm[531],90.0,158.82,90.0,248.82,0.0,0.0);
1176 AliMatrix(idrotm[532],90.0,360.0,90.0,90.0,0.0,0.0);
1177 AliMatrix(idrotm[533],90.0,180.0,90.0,270.0,0.0,0.0);
1178 AliMatrix(idrotm[534],90.0,189.47,90.0,279.47,0.0,0.0);
1179 AliMatrix(idrotm[535],90.0,198.95,90.0,288.95,0.0,0.0);
1180 AliMatrix(idrotm[537],90.0,217.89,90.0,307.89,0.0,0.0);
1181 AliMatrix(idrotm[538],90.0,227.37,90.0,317.37,0.0,0.0);
1182 AliMatrix(idrotm[539],90.0,236.84,90.0,326.84,0.0,0.0);
1183 AliMatrix(idrotm[540],90.0,246.32,90.0,336.32,0.0,0.0);
1184 AliMatrix(idrotm[541],90.0,255.79,90.0,345.79,0.0,0.0);
1185 AliMatrix(idrotm[542],90.0,265.26,90.0,355.26,0.0,0.0);
1186 AliMatrix(idrotm[543],90.0,274.74,90.0,4.74,0.0,0.0);
1187 AliMatrix(idrotm[544],90.0,284.21,90.0,14.21,0.0,0.0);
1188 AliMatrix(idrotm[545],90.0,293.68,90.0,23.68,0.0,0.0);
1189 AliMatrix(idrotm[546],90.0,303.16,90.0,33.16,0.0,0.0);
1190 AliMatrix(idrotm[547],90.0,312.63,90.0,42.63,0.0,0.0);
1191 AliMatrix(idrotm[548],90.0,322.11,90.0,52.11,0.0,0.0);
1192 AliMatrix(idrotm[549],90.0,331.58,90.0,61.58,0.0,0.0);
1193 AliMatrix(idrotm[550],90.0,341.05,90.0,71.05,0.0,0.0);
1194 AliMatrix(idrotm[551],90.0,350.53,90.0,80.53,0.0,0.0);
1195 AliMatrix(idrotm[552],90.0,9.47,90.0,99.47,0.0,0.0);
1196 AliMatrix(idrotm[553],90.0,18.95,90.0,108.95,0.0,0.0);
1197 AliMatrix(idrotm[555],90.0,37.89,90.0,127.89,0.0,0.0);
1198 AliMatrix(idrotm[556],90.0,47.37,90.0,137.37,0.0,0.0);
1199 AliMatrix(idrotm[557],90.0,56.84,90.0,146.84,0.0,0.0);
1200 AliMatrix(idrotm[558],90.0,66.32,90.0,156.32,0.0,0.0);
1201 AliMatrix(idrotm[559],90.0,75.79,90.0,165.79,0.0,0.0);
1202 AliMatrix(idrotm[560],90.0,85.26,90.0,175.26,0.0,0.0);
1203 AliMatrix(idrotm[561],90.0,94.74,90.0,184.74,0.0,0.0);
1204 AliMatrix(idrotm[562],90.0,104.21,90.0,194.21,0.0,0.0);
1205 AliMatrix(idrotm[563],90.0,113.68,90.0,203.68,0.0,0.0);
1206 AliMatrix(idrotm[564],90.0,123.16,90.0,213.16,0.0,0.0);
1207 AliMatrix(idrotm[565],90.0,132.63,90.0,222.63,0.0,0.0);
1208 AliMatrix(idrotm[566],90.0,142.11,90.0,232.11,0.0,0.0);
1209 AliMatrix(idrotm[567],90.0,151.58,90.0,241.58,0.0,0.0);
1210 AliMatrix(idrotm[568],90.0,161.05,90.0,251.05,0.0,0.0);
1211 AliMatrix(idrotm[569],90.0,170.53,90.0,260.53,0.0,0.0);
1212 AliMatrix(idrotm[570],90.0,180.0,90.0,90.0,180.0,0.0);
1213 AliMatrix(idrotm[571],90.0,0.0,0.0,0.0,90.0,270.0);
1214 AliMatrix(idrotm[572],90.0,180.0,0.0,0.0,90.0,270.0);
1215 AliMatrix(idrotm[573],90.0,180.0,90.0,90.0,0.0,0.0);
1216 AliMatrix(idrotm[575],90.0,120.0,180.0,0.0,90.0,210.0);
1217 AliMatrix(idrotm[576],65.71,300.0,90.0,30.0,24.29,120.0);
1218 AliMatrix(idrotm[577],114.29,300.0,90.0,30.0,155.71,120.0);
1219 AliMatrix(idrotm[579],65.71,240.0,90.0,150.0,24.29,60.0);
1220 AliMatrix(idrotm[580],114.29,240.0,90.0,150.0,155.71,60.0);
1221 AliMatrix(idrotm[581],90.0,240.0,180.0,0.0,90.0,330.0);
1222 AliMatrix(idrotm[583],90.0,0.0,180.0,0.0,90.0,90.0);
1223 AliMatrix(idrotm[584],90.0,180.0,180.0,0.0,90.0,90.0);
1224 AliMatrix(idrotm[586],180.0,0.0,90.0,90.0,90.0,0.0);
1225 AliMatrix(idrotm[618],90.0,201.18,90.0,291.18,0.0,0.0);
1226 AliMatrix(idrotm[620],90.0,28.42,90.0,118.42,0.0,0.0);
1227 AliMatrix(idrotm[623],90.0,208.42,90.0,298.42,0.0,0.0);
1228 AliMatrix(idrotm[633],132.46,0.0,90.0,90.0,42.46,360.0);
1229 AliMatrix(idrotm[653],90.0,21.18,90.0,111.18,0.0,0.0);
1230
1231 // SDD cone
1232 AliMatrix(idrotm[846],90.0,300.0,90.0,30.0,0.0,0.0);
1233 AliMatrix(idrotm[851],90.0,305.0,90.0,35.0,0.0,0.0);
1234 AliMatrix(idrotm[853],90.0,60.0,90.0,150.0,0.0,0.0);
1235 AliMatrix(idrotm[856],90.0,0.0,90.0,90.0,180.0,0.0);
1236 AliMatrix(idrotm[857],90.0,5.0,90.0,95.0,180.0,0.0);
1237 AliMatrix(idrotm[858],90.0,65.0,90.0,155.0,180.0,0.0);
1238 AliMatrix(idrotm[859],90.0,305.0,90.0,35.0,180.0,0.0);
1239 AliMatrix(idrotm[860],90.0,245.0,90.0,335.0,180.0,0.0);
1240 AliMatrix(idrotm[861],90.0,185.0,90.0,275.0,180.0,0.0);
1241 AliMatrix(idrotm[862],90.0,125.0,90.0,215.0,180.0,0.0);
1242 AliMatrix(idrotm[863],90.0,257.5,90.0,347.5,180.0,0.0);
1243 AliMatrix(idrotm[864],90.0,227.5,90.0,317.5,180.0,0.0);
1244 AliMatrix(idrotm[865],90.0,197.5,90.0,287.5,180.0,0.0);
1245 AliMatrix(idrotm[867],90.0,167.5,90.0,257.5,180.0,0.0);
1246 AliMatrix(idrotm[868],90.0,287.5,90.0,17.5,0.0,0.0);
1247 AliMatrix(idrotm[869],90.0,137.5,90.0,227.5,180.0,0.0);
1248 AliMatrix(idrotm[870],90.0,107.5,90.0,197.5,180.0,0.0);
1249 AliMatrix(idrotm[871],90.0,77.5,90.0,167.5,180.0,0.0);
1250 AliMatrix(idrotm[872],90.0,47.5,90.0,137.5,180.0,0.0);
1251 AliMatrix(idrotm[873],90.0,17.5,90.0,107.5,180.0,0.0);
1252 AliMatrix(idrotm[874],90.0,347.5,90.0,77.5,180.0,0.0);
1253 AliMatrix(idrotm[875],90.0,317.5,90.0,47.5,180.0,0.0);
1254 AliMatrix(idrotm[876],90.0,287.5,90.0,17.5,180.0,0.0);
1255 AliMatrix(idrotm[877],90.0,185.0,90.0,275.0,0.0,0.0);
1256 AliMatrix(idrotm[878],90.0,180.0,90.0,270.0,0.0,0.0);
1257 AliMatrix(idrotm[879],90.0,125.0,90.0,215.0,0.0,0.0);
1258 AliMatrix(idrotm[880],90.0,65.0,90.0,155.0,0.0,0.0);
1259 AliMatrix(idrotm[881],90.0,5.0,90.0,95.0,0.0,0.0);
1260 AliMatrix(idrotm[882],90.0,245.0,90.0,335.0,0.0,0.0);
1261 AliMatrix(idrotm[883],90.0,47.5,90.0,137.5,0.0,0.0);
1262 AliMatrix(idrotm[884],90.0,77.5,90.0,167.5,0.0,0.0);
1263 AliMatrix(idrotm[885],90.0,107.5,90.0,197.5,0.0,0.0);
1264 AliMatrix(idrotm[887],90.0,137.5,90.0,227.5,0.0,0.0);
1265 AliMatrix(idrotm[888],90.0,167.5,90.0,257.5,0.0,0.0);
1266 AliMatrix(idrotm[889],90.0,197.5,90.0,287.5,0.0,0.0);
1267 AliMatrix(idrotm[890],90.0,227.5,90.0,317.5,0.0,0.0);
1268 AliMatrix(idrotm[891],90.0,347.5,90.0,77.5,0.0,0.0);
1269 AliMatrix(idrotm[892],90.0,317.5,90.0,47.5,0.0,0.0);
1270 AliMatrix(idrotm[893],90.0,257.5,90.0,347.5,0.0,0.0);
1271 AliMatrix(idrotm[894],90.0,270.0,0.0,0.0,90.0,180.0);
1272 AliMatrix(idrotm[895],90.0,286.36,0.0,0.0,90.0,196.36);
1273 AliMatrix(idrotm[896],90.0,302.73,0.0,0.0,90.0,212.73);
1274 AliMatrix(idrotm[897],90.0,319.09,0.0,0.0,90.0,229.09);
1275 AliMatrix(idrotm[898],90.0,17.5,90.0,107.5,0.0,0.0);
1276 AliMatrix(idrotm[899],90.0,335.45,0.0,0.0,90.0,245.45);
1277 AliMatrix(idrotm[900],90.0,351.82,0.0,0.0,90.0,261.82);
1278 AliMatrix(idrotm[901],90.0,8.18,0.0,0.0,90.0,278.18);
1279 AliMatrix(idrotm[902],90.0,24.55,0.0,0.0,90.0,294.55);
1280 AliMatrix(idrotm[903],90.0,40.91,0.0,0.0,90.0,310.91);
1281 AliMatrix(idrotm[904],90.0,57.27,0.0,0.0,90.0,327.27);
1282 AliMatrix(idrotm[905],90.0,73.64,0.0,0.0,90.0,343.64);
1283 AliMatrix(idrotm[906],90.0,90.0,0.0,0.0,90.0,360.0);
1284 AliMatrix(idrotm[907],90.0,106.36,0.0,0.0,90.0,16.36);
1285 AliMatrix(idrotm[908],90.0,122.73,0.0,0.0,90.0,32.73);
1286 AliMatrix(idrotm[909],90.0,139.09,0.0,0.0,90.0,49.09);
1287 AliMatrix(idrotm[910],90.0,155.45,0.0,0.0,90.0,65.45);
1288 AliMatrix(idrotm[911],90.0,171.82,0.0,0.0,90.0,81.82);
1289 AliMatrix(idrotm[912],90.0,188.18,0.0,0.0,90.0,98.18);
1290 AliMatrix(idrotm[913],90.0,204.55,0.0,0.0,90.0,114.55);
1291 AliMatrix(idrotm[914],90.0,220.91,0.0,0.0,90.0,130.91);
1292 AliMatrix(idrotm[915],90.0,237.27,0.0,0.0,90.0,147.27);
1293 AliMatrix(idrotm[916],90.0,253.64,0.0,0.0,90.0,163.64);
1294 AliMatrix(idrotm[917],90.0,295.71,0.0,0.0,90.0,205.71);
1295 AliMatrix(idrotm[918],90.0,321.43,0.0,0.0,90.0,231.43);
1296 AliMatrix(idrotm[919],90.0,347.14,0.0,0.0,90.0,257.14);
1297 AliMatrix(idrotm[920],90.0,12.86,0.0,0.0,90.0,282.86);
1298 AliMatrix(idrotm[921],90.0,38.57,0.0,0.0,90.0,308.57);
1299 AliMatrix(idrotm[922],90.0,64.29,0.0,0.0,90.0,334.29);
1300 AliMatrix(idrotm[923],90.0,115.71,0.0,0.0,90.0,25.71);
1301 AliMatrix(idrotm[924],90.0,141.43,0.0,0.0,90.0,51.43);
1302 AliMatrix(idrotm[925],90.0,167.14,0.0,0.0,90.0,77.14);
1303 AliMatrix(idrotm[926],90.0,192.86,0.0,0.0,90.0,102.86);
1304 AliMatrix(idrotm[927],90.0,218.57,0.0,0.0,90.0,128.57);
1305 AliMatrix(idrotm[928],90.0,244.29,0.0,0.0,90.0,154.29);
1306 AliMatrix(idrotm[929],90.0,120.0,90.0,210.0,0.0,0.0);
1307 AliMatrix(idrotm[930],90.0,240.0,90.0,330.0,0.0,0.0);
1308 AliMatrix(idrotm[931],90.0,60.0,90.0,150.0,180.0,0.0);
1309 AliMatrix(idrotm[932],90.0,120.0,90.0,210.0,180.0,0.0);
1310 AliMatrix(idrotm[933],90.0,180.0,90.0,270.0,180.0,0.0);
1311 AliMatrix(idrotm[934],90.0,240.0,90.0,330.0,180.0,0.0);
1312 AliMatrix(idrotm[935],90.0,300.0,90.0,30.0,180.0,0.0);
1313
1314 // SSD cone
1315 AliMatrix(idrotm[701],90.0,0.0,90.0,90.0,180.0,0.0);
1316 AliMatrix(idrotm[702],90.0,347.5,90.0,77.5,180.0,0.0);
1317 AliMatrix(idrotm[703],90.0,17.5,90.0,107.5,180.0,0.0);
1318 AliMatrix(idrotm[704],90.0,47.5,90.0,137.5,180.0,0.0);
1319 AliMatrix(idrotm[705],90.0,77.5,90.0,167.5,180.0,0.0);
1320 AliMatrix(idrotm[706],90.0,107.5,90.0,197.5,180.0,0.0);
1321 AliMatrix(idrotm[707],90.0,137.5,90.0,227.5,180.0,0.0);
1322 AliMatrix(idrotm[708],90.0,167.5,90.0,257.5,180.0,0.0);
1323 AliMatrix(idrotm[709],90.0,197.5,90.0,287.5,180.0,0.0);
1324 AliMatrix(idrotm[710],90.0,227.5,90.0,317.5,180.0,0.0);
1325 AliMatrix(idrotm[711],90.0,257.5,90.0,347.5,180.0,0.0);
1326 AliMatrix(idrotm[712],90.0,287.5,90.0,17.5,180.0,0.0);
1327 AliMatrix(idrotm[713],90.0,317.5,90.0,47.5,180.0,0.0);
1328 AliMatrix(idrotm[714],90.0,328.4,90.0,58.4,180.0,0.0);
1329 AliMatrix(idrotm[715],90.0,28.4,90.0,118.4,180.0,0.0);
1330 AliMatrix(idrotm[716],90.0,88.4,90.0,178.4,180.0,0.0);
1331 AliMatrix(idrotm[717],90.0,148.4,90.0,238.4,180.0,0.0);
1332 AliMatrix(idrotm[718],90.0,208.4,90.0,298.4,180.0,0.0);
1333 AliMatrix(idrotm[719],90.0,268.4,90.0,358.4,180.0,0.0);
1334 AliMatrix(idrotm[720],90.0,28.4,90.0,118.4,0.0,0.0);
1335 AliMatrix(idrotm[721],90.0,88.4,90.0,178.4,0.0,0.0);
1336 AliMatrix(idrotm[722],90.0,148.4,90.0,238.4,0.0,0.0);
1337 AliMatrix(idrotm[723],90.0,208.4,90.0,298.4,0.0,0.0);
1338 AliMatrix(idrotm[724],90.0,268.4,90.0,358.4,0.0,0.0);
1339 AliMatrix(idrotm[725],90.0,328.4,90.0,58.4,0.0,0.0);
1340 AliMatrix(idrotm[726],90.0,77.5,90.0,167.5,0.0,0.0);
1341 AliMatrix(idrotm[727],90.0,107.5,90.0,197.5,0.0,0.0);
1342 AliMatrix(idrotm[728],90.0,137.5,90.0,227.5,0.0,0.0);
1343 AliMatrix(idrotm[729],90.0,167.5,90.0,257.5,0.0,0.0);
1344 AliMatrix(idrotm[730],90.0,227.5,90.0,317.5,0.0,0.0);
1345 AliMatrix(idrotm[731],90.0,257.5,90.0,347.5,0.0,0.0);
1346 AliMatrix(idrotm[732],90.0,317.5,90.0,47.5,0.0,0.0);
1347 AliMatrix(idrotm[733],90.0,197.5,90.0,287.5,0.0,0.0);
1348 AliMatrix(idrotm[734],90.0,347.5,90.0,77.5,0.0,0.0);
1349 AliMatrix(idrotm[735],90.0,47.5,90.0,137.5,0.0,0.0);
1350 AliMatrix(idrotm[768],90.0,287.5,90.0,17.5,0.0,0.0);
1351 AliMatrix(idrotm[798],90.0,17.5,90.0,107.5,0.0,0.0);
1352
1353 // Services
1354 AliMatrix(idrotm[200], 90., 0., 90., 90., 180., 0.);
1355
4a42f2b9 1356 // New reference frame: z---> -z; x ---> -x; y ---> y
1357 AliMatrix(idrotm[199], 90.,180., 90.,90., 180.,0.);
1358
87577a03 1359 // CONVERT INTO CM (RL(SI)=9.36 CM)
1360 for (i = 0; i < 6; ++i) {
1361 drl[i] = drl[i] / 100. * 9.36;
1362 } // end for i
6b2a1732 1363
87577a03 1364 // FIELD CAGE HALF LENGTH
1365 rlim = 50.;
1366 zmax = 74.;
1367 ztpc = 284.;
1368 // --- Define ghost volume containing the whole ITS (including services)
1369 // and fill it with air
87577a03 1370
012f0f4c 1371// dgh[0] = 0.;
1372// dgh[1] = 360.;
1373// dgh[2] = 16.;
1374// dgh[3] = -ztpc-5.-0.1;
1375// dgh[4] = 46;
1376// dgh[5] = 85.;
1377// dgh[6] = -ztpc;
1378// dgh[7] = 46;
1379// dgh[8] = 85.;
1380// dgh[9] = -ztpc;
1381// dgh[10] = 46;
1382// dgh[11] = rlim+7.5;
1383// dgh[12] = -97.5;
1384// dgh[13] = 46;
1385// dgh[14] = rlim+7.5;
1386// dgh[15] = -zmax;
1387// dgh[16] = 46;
1388// dgh[17] = rlim+7.5;
1389// dgh[18] = -48;
1390// dgh[19] = 6;
1391// dgh[20] = rlim+7.5;
1392// dgh[21] = -28.6;
1393// dgh[22] = 6;
1394// dgh[23] = rlim+7.5;
1395// dgh[24] = -27.6;
1396// dgh[25] = 3.295;
1397// dgh[26] = rlim+7.5;
1398// dgh[27] = 27.6;
1399// dgh[28] = 3.295;
1400// dgh[29] = rlim+7.5;
1401// dgh[30] = 28.6;
1402// dgh[31] = 6;
1403// dgh[32] = rlim+7.5;
1404// dgh[33] = 48;
1405// dgh[34] = 6;
1406// dgh[35] = rlim+7.5;
1407// dgh[36] = zmax;
1408// dgh[37] = 46;
1409// dgh[38] = rlim+7.5;
1410// dgh[39] = 97.5;
1411// dgh[40] = 46;
1412// dgh[41] = rlim+7.5;
1413// dgh[42] = ztpc;
1414// dgh[43] = 62;
1415// dgh[44] = 62+4.;
1416// dgh[45] = ztpc;
1417// dgh[46] = 62;
1418// dgh[47] = 85.;
1419// dgh[48] = ztpc+4.+0.1;
1420// dgh[49] = 62.0;//62.4;
1421// dgh[50] = 85.;
1422// gMC->Gsvolu("ITSV", "PCON", idtmed[205], dgh, 51);
1423 TGeoVolumeAssembly *itsV = gGeoManager->MakeVolumeAssembly("ITSV");
1424 const Int_t length=100;
1425 Char_t vstrng[length];
1426 if(fIgm.WriteVersionString(vstrng,length,(AliITSVersion_t)IsVersion(),
1427 fMinorVersion,cvsDate,cvsRevision))
1428 itsV->SetTitle(vstrng);
1429
87577a03 1430 // --- Place the ghost volume in its mother volume (ALIC) and make it
1431 // invisible
012f0f4c 1432 // gMC->Gspos("ITSV", 1, "ALIC", 0., 0., 0., idrotm[199], "MANY");
1433 TGeoVolume *alic = gGeoManager->GetVolume("ALIC");
1434 if(alic==0) {
1435 Error("CreateGeometry","alic=0");
1436 return;
1437 } // end if
1438 // See idrotm[199] for angle definitions.
1439 alic->AddNode(itsV,1,new TGeoRotation("", 90.,180., 90.,90., 180.,0.));
87577a03 1440
1441 // --- Define ghost volume containing the six layers and fill it with air
1442
1443 dgh[0] = 0.;
1444 dgh[1] = 360.;
1445 dgh[2] = 8.;
1446 dgh[3] = -zmax;
1447 dgh[4] = 46.;
1448 dgh[5] = rlim;
1449 dgh[6] = -47.5;
1450 dgh[7] = 6.005;
1451 dgh[8] = rlim;
1452 dgh[9] = -28.5;
1453 dgh[10] = 6.005;
1454 dgh[11] = rlim;
1455 dgh[12] = -27.5;
1456 dgh[13] = 3.3;
1457 dgh[14] = rlim;
1458 dgh[15] = 27.5;
1459 dgh[16] = 3.3;
1460 dgh[17] = rlim;
1461 dgh[18] = 28.5;
1462 dgh[19] = 6.005;
1463 dgh[20] = rlim;
1464 dgh[21] = 47.5;
1465 dgh[22] = 6.005;
1466 dgh[23] = rlim;
1467 dgh[24] = zmax;
1468 dgh[25] = 46.;
1469 dgh[26] = rlim;
1470 gMC->Gsvolu("ITSD", "PCON", idtmed[205], dgh, 27);
1471
1472 // --- Place the ghost volume in its mother volume (ITSV) and make it
1473 // invisible
1474 gMC->Gspos("ITSD", 1, "ITSV", 0., 0., 0., 0, "ONLY");
1475 //gMC->Gsatt("ITSD", "SEEN", 0);
1476
1477 // --- Define SPD (option 'a') volumes ----------------------------
1478 // SPD - option 'a'
1479 // (this is NOT the default)
1480 if (option == 1) {
1481 dits[0] = 3.7;
1482 dits[1] = 7.75;
1483 dits[2] = 26.1;
1484 gMC->Gsvolu("IT12", "TUBE", idtmed[254], dits, 3);
1485
1486 dits[0] = 3.7;
1487 dits[1] = 7.7;
1488 dits[2] = 24;
1489 dits[3] = 57;
1490 dits[4] = 100;
1491 gMC->Gsvolu("I12A", "TUBS", idtmed[254], dits, 5); // sector
1492
1493 di10a[0] = 0.843;
1494 di10a[1] = ddet1+dchip1+dbus+0.0025;
1495 di10a[2] = 19.344;
1496 gMC->Gsvolu("I10A", "BOX ", idtmed[254], di10a, 3); // mother volume
1497 // on layer 1
1498 di20a[0] = 0.843;
1499 di20a[1] = ddet2+dchip2+dbus+0.0025;
1500 di20a[2] = 19.344;
1501 gMC->Gsvolu("I20A", "BOX ", idtmed[254], di20a, 3); // mother volume
1502 // on layer 2
1503 dits[0] = 1.3673;
1504 dits[1] = 0.01;
1505 dits[2] = 24;
1506 gMC->Gsvolu("I123", "BOX ", idtmed[253], dits, 3);
1507
1508 dits[0] = 0.06;
1509 dits[1] = 0.08;
1510 dits[2] = 24;
1511 dits[3] = -36.79;
1512 dits[4] = 21.834;
1513 gMC->Gsvolu("I121", "TUBS", idtmed[253], dits, 5);
1514
1515 dits[0] = 0.1253;
1516 dits[1] = 0.01;
1517 dits[2] = 24;
1518 gMC->Gsvolu("I122", "BOX ", idtmed[253], dits, 3);
1519
1520 dits[0] = 0.04;
1521 dits[1] = 0.06 ;
1522 dits[2] = 24;
1523 dits[3] = 126.79;
1524 dits[4] = 270;
1525 gMC->Gsvolu("I120", "TUBS", idtmed[253], dits, 5);
1526
1527 dits[0] = 0.1134;
1528 dits[1] = 0.01;
1529 dits[2] = 24;
1530 gMC->Gsvolu("I144", "BOX ", idtmed[253], dits, 3);
1531
1532 dits[0] = 0.25;
1533 dits[1] = 0.06;
1534 dits[2] = 24;
1535 gMC->Gsvolu("I113", "BOX ", idtmed[254], dits, 3);
1536
1537 dits[0] = 0.077;
1538 dits[1] = 0.01;
1539 dits[2] = 24;
1540 gMC->Gsvolu("I143", "BOX ", idtmed[253], dits, 3);
1541
1542 dits[0] = 0.04;
1543 dits[1] = 0.06;
1544 dits[2] = 24;
1545 dits[3] = 0;
1546 dits[4] = 90;
1547 gMC->Gsvolu("I142", "TUBS", idtmed[253], dits, 5);
1548
1549 dits[0] = 0.0695;
1550 dits[1] = 0.01;
1551 dits[2] = 24;
1552 gMC->Gsvolu("I141", "BOX ", idtmed[253], dits, 3);
1553
1554 dits[0] = 0.06;
1555 dits[1] = 0.08;
1556 dits[2] = 24;
1557 dits[3] = 0;
1558 dits[4] = 108;
1559 gMC->Gsvolu("I140", "TUBS", idtmed[253], dits, 5);
1560
1561 dits[0] = 0.1835;
1562 dits[1] = 0.01;
1563 dits[2] = 24;
1564 gMC->Gsvolu("I139", "BOX ", idtmed[253], dits, 3);
1565
1566 dits[0] = 0.1894 ;
1567 dits[1] = 0.01;
1568 dits[2] = 24;
1569 gMC->Gsvolu("I138", "BOX ", idtmed[253], dits, 3);
1570
1571 dits[0] = 0.04;
1572 dits[1] = 0.06;
1573 dits[2] = 24;
1574 dits[3] = 0;
1575 dits[4] = 75.261;
1576 gMC->Gsvolu("I137", "TUBS", idtmed[253], dits, 5);
1577
4f849f3d 1578
87577a03 1579 dits[0] = 1.3401;
1580 dits[1] = 0.01;
1581 dits[2] = 24;
1582 gMC->Gsvolu("I136", "BOX ", idtmed[253], dits, 3);
1583
1584 dits[0] = 0.05;
1585 dits[1] = 0.07;
1586 dits[2] = 24;
1587 dits[3] = 0;
1588 dits[4] = 72.739;
1589 gMC->Gsvolu("I135", "TUBS", idtmed[253], dits, 5);
1590
1591 dits[0] = 0.1193;
1592 dits[1] = 0.01;
1593 dits[2] = 24;
1594 gMC->Gsvolu("I134", "BOX ", idtmed[253], dits, 3);
1595
1596 dits[0] = 0.163;
1597 dits[1] = 0.01;
1598 dits[2] = 24;
1599 gMC->Gsvolu("I133", "BOX ", idtmed[253], dits, 3);
1600
1601 dits[0] = 0.04;
1602 dits[1] = 0.06;
1603 dits[2] = 24;
1604 dits[3] = 0;
1605 dits[4] = 157.633;
1606 gMC->Gsvolu("I132", "TUBS", idtmed[253], dits, 5);
1607
1608 dits[0] = 0.2497;
1609 dits[1] = 0.01;
1610 dits[2] = 24;
1611 gMC->Gsvolu("I131", "BOX ", idtmed[253], dits, 3);
1612
1613 dits[0] = 0.06;
1614 dits[1] = 0.08;
1615 dits[2] = 24;
1616 dits[3] = 0;
1617 dits[4] = 148.633;
1618 gMC->Gsvolu("I130", "TUBS", idtmed[253], dits, 5);
1619
1620 dits[0] = 0.292;
1621 dits[1] = 0.01;
1622 dits[2] = 24;
1623 gMC->Gsvolu("I129", "BOX ", idtmed[253], dits, 3);
1624
1625 dits[0] = 0.163;
1626 dits[1] = 0.01;
1627 dits[2] = 24;
1628 gMC->Gsvolu("I128", "BOX ", idtmed[253], dits, 3);
1629
1630 dits[0] = 0.04;
1631 dits[1] = 0.06;
1632 dits[2] = 24;
1633 dits[3] = 0;
1634 dits[4] = 161.297;
1635 gMC->Gsvolu("I126", "TUBS", idtmed[253], dits, 5);
1636
1637 dits[0] = 0.2433;
1638 dits[1] = 0.01;
1639 dits[2] = 24;
1640 gMC->Gsvolu("I125", "BOX ", idtmed[253], dits, 3);
1641
1642 dits[0] = 0.06;
1643 dits[1] = 0.08;
1644 dits[2] = 24;
1645 dits[3] = 0;
1646 dits[4] = 42.883;
1647 gMC->Gsvolu("I124", "TUBS", idtmed[253], dits, 5);
1648
1649 di103[0] = 0.793;
1650 di103[1] = ddet1+dchip1;
1651 di103[2] = 3.536;
1652 gMC->Gsvolu("I103", "BOX ", idtmed[254], di103, 3); // contains det
1653 // and chip layer 1
1654 dits[0] = 0.793;
7de9bc5a 1655 dits[1] = ddet1+dchip1+dbus+0.0025;
87577a03 1656 dits[2] = 2.5;
1657 gMC->Gsvolu("I105", "BOX ", idtmed[290], dits, 3);// end-ladder electr.
1658
1659 di104[0] = 0.843;
1660 di104[1] = dbus;
1661 di104[2] = 14.344;
1662 gMC->Gsvolu("I104", "BOX ", idtmed[275], di104, 3);// bus for both
1663 // layers
1664
1665 di1d3[0] = 0.793;
1666 di1d3[1] = ddet2+dchip2;
1667 di1d3[2] = 3.536;
1668 gMC->Gsvolu("I1D3", "BOX ", idtmed[254], di1d3, 3); // contains det
1669 // and chip layer 2
1670 dits[0] = 0.793;
1671 dits[0] = 0.06;
1672 dits[1] = 0.08;
1673 dits[2] = 24;
1674 dits[3] = 0;
1675 dits[4] = 80;
1676 gMC->Gsvolu("I112", "TUBS", idtmed[253], dits, 5);
1677
1678 dits[0] = 0.04;
1679 dits[1] = 0.06;
1680 dits[2] = 24;
1681 dits[3] = 0;
1682 dits[4] = 80;
1683 gMC->Gsvolu("I111", "TUBS", idtmed[253], dits, 5);
1684
1685 dits[0] = 0.15;
1686 dits[1] = 0.0146;
1687 dits[2] = 24;
1688 gMC->Gsvolu("I118", "BOX ", idtmed[273], dits, 3);
1689
1690 dits[0] = 0.1315;
1691 dits[1] = 0.01;
1692 dits[2] = 24;
1693 gMC->Gsvolu("I110", "BOX ", idtmed[253], dits, 3);
1694
1695 dits[0] = 0.025;
1696 dits[1] = 0.035;
1697 dits[2] = 24;
1698 dits[3] = 0;
1699 dits[4] = 180;
1700 gMC->Gsvolu("I114", "TUBS", idtmed[264], dits, 5);
1701
ad819a25 1702 dits[0] = 0;
1703 dits[1] = 0.025;
1704 dits[2] = 24;
1705 dits[3] = 0;
1706 dits[4] = 180;
1707 gMC->Gsvolu("I115", "TUBS", idtmed[211], dits, 5); // set freon
1708 // as cooling
1709 // fluid
87577a03 1710 dits[0] = 0.063;
1711 dits[1] = 0.035;
1712 dits[2] = 24;
1713 gMC->Gsvolu("I116", "BOX ", idtmed[264], dits, 3);
1714
1715 di102[0] = 0.793;
1716 di102[1] = dchip1;
1717 di102[2] = 0.68;
1718 gMC->Gsvolu("I102", "BOX ", idtmed[201], di102, 3); // chip layer 1
6b2a1732 1719
87577a03 1720 di1d2[0] = 0.793;
1721 di1d2[1] = dchip2;
1722 di1d2[2] = 0.68;
1723 gMC->Gsvolu("I1D2", "BOX ", idtmed[201], di1d2, 3); // chip layer 2
1724
1725 di101[0] = 0.705;
1726 di101[1] = ddet1;
1727 di101[2] = 3.536;
1728 gMC->Gsvolu("I101", "BOX ", idtmed[250], di101, 3);// contains detector
6b2a1732 1729 // layer 1
87577a03 1730 di1d1[0] = 0.705;
1731 di1d1[1] = ddet2;
1732 di1d1[2] = 3.536;
1733 gMC->Gsvolu("I1D1", "BOX ", idtmed[250], di1d1, 3);// contains detector
6b2a1732 1734 // layer 2
ad819a25 1735 dits[0] = 0.063;
1736 dits[1] = 0.025;
1737 dits[2] = 24;
1738 gMC->Gsvolu("I117", "BOX ", idtmed[211], dits, 3); // set freon
87577a03 1739 // as cooling
1740 // fluid
87577a03 1741
1742 dits1[0] = 0.64;
1743 dits1[1] = ddet1;
1744 dits1[2] = 3.48;
1745 gMC->Gsvolu("ITS1", "BOX ", idtmed[200], dits1, 3);// detector layer 1
1746
1747 dits2[0] = 0.64;
1748 dits2[1] = ddet2;
1749 dits2[2] = 3.48;
1750 gMC->Gsvolu("ITS2", "BOX ", idtmed[200], dits2, 3);// detector layer 2
1751
1752 dits[0] = 3.701;
1753 dits[1] = 7.699;
1754 dits[2] = 4;
1755 dits[3] = 57.1;
1756 dits[4] = 99.9;
1757 gMC->Gsvolu("I650", "TUBS", idtmed[254], dits, 5);// was I150 in old
1758 // geom.
1759
1760 dits[0] = 3.7;
1761 dits[1] = 7.75;
1762 dits[2] = 0.05;
1763 gMC->Gsvolu("I651", "TUBE", idtmed[296], dits, 3); // services disk
1764 //Begin_Html
1765 /*
1766 <img src="http://www.Physics.ohio-state.edu/~nilsen/ITS/ITS_FMD_PMD_SPD_Geom.eps">
1767 </pre>
1768 <br clear=left>
1769 <font size=+2 color=blue>
1770 <p>SPD services volume cone with other forward detectors. Shown in
1771 brown are a posible cabling layout.
1772 </font>
1773 */
1774 //End_Html
1775 dits[0] = 0;
1776 dits[1] = 0.5;
1777 dits[2] = 1.5;
1778 gMC->Gsvolu("I676", "TUBE", idtmed[274], dits, 3); // was I176 in
1779 // old geom.
1780
1781 dits[0] = 0;
1782 dits[1] = 0.18;
1783 dits[2] = 0.8;
1784 gMC->Gsvolu("I673", "TUBE", idtmed[274], dits, 3); // was I173 in
1785 // old geom.
1786
1787 dits[0] = 0;
1788 dits[1] = 0.18;
1789 dits[2] = 3;
1790 gMC->Gsvolu("I671", "TUBE", idtmed[274], dits, 3); // was I171 in
1791 // old geom.
1792
1793 dits[0] = 0;
1794 dits[1] = 0.075;
1795 dits[2] = 0.8;
1796 gMC->Gsvolu("I669", "TUBE", idtmed[264], dits, 3); // was I169 in
1797 // old geom.
1798
1799 dits[0] = 3.5;
1800 dits[1] = 5.6;
1801 dits[2] = 0.55;
1802 dits[3] = 0;
1803 dits[4] = 38;
1804 gMC->Gsvolu("I667", "TUBS", idtmed[263], dits, 5); // was I167 in old geom.
6b2a1732 1805
1806 dits[0] = 6.6;
1807 dits[1] = 7.6;
1808 dits[2] = 0.5;
1809 dits[3] = 0;
1810 dits[4] = 9;
87577a03 1811 gMC->Gsvolu("I666", "TUBS", idtmed[263], dits, 5); // was I166 in old geom
6b2a1732 1812
1813 dits[0] = 0.26;
1814 dits[1] = 0.32;
1815 dits[2] = 0.55;
87577a03 1816 gMC->Gsvolu("I678", "TUBE", idtmed[263], dits, 3); // was I178 in old geom
6b2a1732 1817
ad819a25 1818
1819 dits[0] = 0;
1820 dits[1] = 0.3;
1821 dits[2] = 1.5;
1822 gMC->Gsvolu("I677", "TUBE", idtmed[211], dits, 3); // set freon as cooling fluid
1823 // was I177 in old geom.
1824
6b2a1732 1825
1826 dits[0] = 0.07;
1827 dits[1] = 0.125;
1828 dits[2] = 0.3;
87577a03 1829 gMC->Gsvolu("I675", "TUBE", idtmed[263], dits, 3); // was I175 in old geom
6b2a1732 1830
ad819a25 1831
1832 dits[0] = 0;
1833 dits[1] = 0.1;
1834 dits[2] = 0.8;
1835 gMC->Gsvolu("I674", "TUBE", idtmed[211], dits, 3); // set freon as cooling fluid
1836 // was I174 in old geom.
6b2a1732 1837
6b2a1732 1838
ad819a25 1839 dits[0] = 0;
1840 dits[1] = 0.1;
1841 dits[2] = 3;
1842 gMC->Gsvolu("I672", "TUBE", idtmed[211], dits, 3); // set freon as cooling fluid
1843 // was I172 in old geom.
1844
1845
1846 dits[0] = 0;
1847 dits[1] = 0.0746;
1848 dits[2] = 0.8;
1849 gMC->Gsvolu("I670", "TUBE", idtmed[211], dits, 3); // set freon as cooling fluid
1850 // was I170 in old geom.
1851
1852
1853 dits[0] = 3.7;
1854 dits[1] = 5.4;
1855 dits[2] = 0.35;
1856 dits[3] = 2;
1857 dits[4] = 36;
1858 gMC->Gsvolu("I668", "TUBS", idtmed[211], dits, 5); // set freon as cooling fluid
1859 // was I168 in old geom.
6b2a1732 1860
6b2a1732 1861
1862
ad819a25 1863 }
6b2a1732 1864
1865 // --- Define SPD (option 'b') volumes ----------------------------
1866
1867 // SPD - option 'b'
1868 // (this is the default)
1869
1870 if (option == 2) {
1871
1872 dits[0] = 3.7;
1873 dits[1] = 7.75;
1874 dits[2] = 26.1;
1875 gMC->Gsvolu("IT12", "TUBE", idtmed[254], dits, 3);
3d82d255 1876 /*
6b2a1732 1877 dits[0] = 3.7;
1878 dits[1] = 7.7;
1879 dits[2] = 24;
1880 dits[3] = 57;
1881 dits[4] = 100;
3d82d255 1882 gMC->Gsvolu("I12B", "TUBS", idtmed[254], dits, 5); // sector */
1883 // TGeoVolumeAssembly *i12b = gGeoManager->MakeVolumeAssembly("I12B");
1884 gGeoManager->MakeVolumeAssembly("I12B");
6b2a1732 1885 di10b[0] = 0.843;
1886 di10b[1] = ddet1+dchip1+dbus+0.0025;
1887 di10b[2] = 19.344;
1888 gMC->Gsvolu("I10B", "BOX ", idtmed[254], di10b, 3); // mother volume
1889 // on layer 1
1890
1891 di20b[0] = 0.843;
1892 di20b[1] = ddet2+dchip2+dbus+0.0025;
1893 di20b[2] = 19.344;
1894 gMC->Gsvolu("I20B", "BOX ", idtmed[254], di20b, 3); // mother volume
1895 // layer 2
1896
1897 dits[0] = 1.3673;
1898 dits[1] = 0.01;
1899 dits[2] = 24;
1900 gMC->Gsvolu("I123", "BOX ", idtmed[253], dits, 3);
1901
1902 dits[0] = 0.06;
1903 dits[1] = 0.08;
1904 dits[2] = 24;
1905 dits[3] = -36.79;
1906 dits[4] = 21.834;
1907 gMC->Gsvolu("I121", "TUBS", idtmed[253], dits, 5);
1908
1909 dits[0] = 0.1253;
1910 dits[1] = 0.01;
1911 dits[2] = 24;
1912 gMC->Gsvolu("I122", "BOX ", idtmed[253], dits, 3);
1913
1914 dits[0] = 0.04;
1915 dits[1] = 0.06 ;
1916 dits[2] = 24;
1917 dits[3] = 126.79;
1918 dits[4] = 270;
1919 gMC->Gsvolu("I120", "TUBS", idtmed[253], dits, 5);
1920
1921 dits[0] = 0.1134;
1922 dits[1] = 0.01;
1923 dits[2] = 24;
1924 gMC->Gsvolu("I144", "BOX ", idtmed[253], dits, 3);
1925
1926 dits[0] = 0.25;
1927 dits[1] = 0.06;
1928 dits[2] = 24;
1929 gMC->Gsvolu("I113", "BOX ", idtmed[254], dits, 3);
1930
1931 dits[0] = 0.077;
1932 dits[1] = 0.01;
1933 dits[2] = 24;
1934 gMC->Gsvolu("I143", "BOX ", idtmed[253], dits, 3);
1935
1936 dits[0] = 0.04;
1937 dits[1] = 0.06;
1938 dits[2] = 24;
1939 dits[3] = 0;
1940 dits[4] = 90;
1941 gMC->Gsvolu("I142", "TUBS", idtmed[253], dits, 5);
1942
1943 dits[0] = 0.0695;
1944 dits[1] = 0.01;
1945 dits[2] = 24;
1946 gMC->Gsvolu("I141", "BOX ", idtmed[253], dits, 3);
1947
1948 dits[0] = 0.06;
1949 dits[1] = 0.08;
1950 dits[2] = 24;
1951 dits[3] = 0;
1952 dits[4] = 108;
1953 gMC->Gsvolu("I140", "TUBS", idtmed[253], dits, 5);
1954
1955 dits[0] = 0.1835;
1956 dits[1] = 0.01;
1957 dits[2] = 24;
1958 gMC->Gsvolu("I139", "BOX ", idtmed[253], dits, 3);
1959
1960 dits[0] = 0.1894 ;
1961 dits[1] = 0.01;
1962 dits[2] = 24;
1963 gMC->Gsvolu("I138", "BOX ", idtmed[253], dits, 3);
1964
1965 dits[0] = 0.04;
1966 dits[1] = 0.06;
1967 dits[2] = 24;
1968 dits[3] = 0;
1969 dits[4] = 75.261;
1970 gMC->Gsvolu("I137", "TUBS", idtmed[253], dits, 5);
1971
1972 dits[0] = 1.3401;
1973 dits[1] = 0.01;
1974 dits[2] = 24;
1975 gMC->Gsvolu("I136", "BOX ", idtmed[253], dits, 3);
1976
1977 dits[0] = 0.05;
1978 dits[1] = 0.07;
1979 dits[2] = 24;
1980 dits[3] = 0;
1981 dits[4] = 72.739;
1982 gMC->Gsvolu("I135", "TUBS", idtmed[253], dits, 5);
1983
1984 dits[0] = 0.1193;
1985 dits[1] = 0.01;
1986 dits[2] = 24;
1987 gMC->Gsvolu("I134", "BOX ", idtmed[253], dits, 3);
1988
1989 dits[0] = 0.163;
1990 dits[1] = 0.01;
1991 dits[2] = 24;
1992 gMC->Gsvolu("I133", "BOX ", idtmed[253], dits, 3);
1993
1994 dits[0] = 0.04;
1995 dits[1] = 0.06;
1996 dits[2] = 24;
1997 dits[3] = 0;
1998 dits[4] = 157.633;
1999 gMC->Gsvolu("I132", "TUBS", idtmed[253], dits, 5);
2000
2001 dits[0] = 0.2497;
2002 dits[1] = 0.01;
2003 dits[2] = 24;
2004 gMC->Gsvolu("I131", "BOX ", idtmed[253], dits, 3);
2005
2006 dits[0] = 0.06;
2007 dits[1] = 0.08;
2008 dits[2] = 24;
2009 dits[3] = 0;
2010 dits[4] = 148.633;
2011 gMC->Gsvolu("I130", "TUBS", idtmed[253], dits, 5);
2012
2013 dits[0] = 0.292;
2014 dits[1] = 0.01;
2015 dits[2] = 24;
2016 gMC->Gsvolu("I129", "BOX ", idtmed[253], dits, 3);
2017
2018 dits[0] = 0.163;
2019 dits[1] = 0.01;
2020 dits[2] = 24;
2021 gMC->Gsvolu("I128", "BOX ", idtmed[253], dits, 3);
2022
2023 dits[0] = 0.04;
2024 dits[1] = 0.06;
2025 dits[2] = 24;
2026 dits[3] = 0;
2027 dits[4] = 161.297;
2028 gMC->Gsvolu("I126", "TUBS", idtmed[253], dits, 5);
2029
2030 dits[0] = 0.2433;
2031 dits[1] = 0.01;
2032 dits[2] = 24;
2033 gMC->Gsvolu("I125", "BOX ", idtmed[253], dits, 3);
2034
2035 dits[0] = 0.06;
2036 dits[1] = 0.08;
2037 dits[2] = 24;
2038 dits[3] = 0;
2039 dits[4] = 42.883;
2040 gMC->Gsvolu("I124", "TUBS", idtmed[253], dits, 5);
2041
2042 dits[0] = 0.793;
7de9bc5a 2043 dits[1] = ddet1+dchip1+dbus+0.0025;
6b2a1732 2044 dits[2] = 2.5;
2045 gMC->Gsvolu("I105", "BOX ", idtmed[290], dits, 3);
2046
2047 di107[0] = 0.793;
2048 di107[1] = ddet1+dchip1;
2049 di107[2] = 3.536;
2050 gMC->Gsvolu("I107", "BOX ", idtmed[254], di107, 3); // contains det and chip
2051 // layer 1
2052 dits[0] = 0.705;
2053 dits[1] = 0.01;
2054 dits[2] = 2.5;
2055 gMC->Gsvolu("I109", "BOX ", idtmed[275], dits, 3);
2056
2057 di108[0] = 0.705;
2058 di108[1] = dbus;
2059 di108[2] = 14.344;
2060 gMC->Gsvolu("I108", "BOX ", idtmed[275], di108, 3); // bus for both layers
2061
2062 di1d7[0] = 0.7975;
2063 di1d7[1] = ddet2+dchip2;
2064 di1d7[2] = 3.536;
2065 gMC->Gsvolu("I1D7", "BOX ", idtmed[254], di1d7, 3); // contains det and chip
2066 // layer 2
2067 dits[0] = 0.06;
2068 dits[1] = 0.08;
2069 dits[2] = 24;
2070 dits[3] = 0;
2071 dits[4] = 80;
2072 gMC->Gsvolu("I112", "TUBS", idtmed[253], dits, 5);
2073
2074 dits[0] = 0.04;
2075 dits[1] = 0.06;
2076 dits[2] = 24;
2077 dits[3] = 0;
2078 dits[4] = 80;
2079 gMC->Gsvolu("I111", "TUBS", idtmed[253], dits, 5);
2080
2081 dits[0] = 0.15;
2082 dits[1] = 0.0146;
2083 dits[2] = 24;
2084 gMC->Gsvolu("I118", "BOX ", idtmed[273], dits, 3);
2085
2086 dits[0] = 0.1315;
2087 dits[1] = 0.01;
2088 dits[2] = 24;
2089 gMC->Gsvolu("I110", "BOX ", idtmed[253], dits, 3);
2090
2091 dits[0] = 0.025;
2092 dits[1] = 0.035;
2093 dits[2] = 24;
2094 dits[3] = 0;
2095 dits[4] = 180;
2096 gMC->Gsvolu("I114", "TUBS", idtmed[264], dits, 5);
2097
ad819a25 2098 dits[0] = 0;
2099 dits[1] = 0.025;
2100 dits[2] = 24;
2101 dits[3] = 0;
2102 dits[4] = 180;
2103 gMC->Gsvolu("I115", "TUBS", idtmed[211], dits, 5); // set freon as cooling fluid
2104
6b2a1732 2105
2106 dits[0] = 0.063;
2107 dits[1] = 0.035;
2108 dits[2] = 24;
2109 gMC->Gsvolu("I116", "BOX ", idtmed[264], dits, 3);
2110
2111 di106[0] = 0.7975;
2112 di106[1] = dchip1;
2113 di106[2] = 0.68;
2114 gMC->Gsvolu("I106", "BOX ", idtmed[201], di106, 3); // chip layer 1
2115
2116 di1d6[0] = 0.7975;
2117 di1d6[1] = dchip2;
2118 di1d6[2] = 0.68;
2119 gMC->Gsvolu("I1D6", "BOX ", idtmed[201], di1d6, 3); // chip layer 2
2120
2121 di101[0] = 0.705;
2122 di101[1] = ddet1;
2123 di101[2] = 3.536;
87577a03 2124 gMC->Gsvolu("I101", "BOX ", idtmed[250], di101, 3); // contains detector
6b2a1732 2125 // layer 1
2126 di1d1[0] = 0.705;
2127 di1d1[1] = ddet2;
2128 di1d1[2] = 3.536;
87577a03 2129 gMC->Gsvolu("I1D1", "BOX ", idtmed[250], di1d1, 3); // contains detector
6b2a1732 2130 // layer 2
2131
ad819a25 2132
2133 dits[0] = 0.063;
2134 dits[1] = 0.025;
2135 dits[2] = 24;
2136 gMC->Gsvolu("I117", "BOX ", idtmed[211], dits, 3); // set freon as cooling fluid
2137
6b2a1732 2138
2139 dits1[0] = 0.64;
2140 dits1[1] = ddet1;
2141 dits1[2] = 3.48;
2142 gMC->Gsvolu("ITS1", "BOX ", idtmed[200], dits1, 3); // detector layer 1
2143
2144 dits2[0] = 0.64;
2145 dits2[1] = ddet2;
2146 dits2[2] = 3.48;
2147 gMC->Gsvolu("ITS2", "BOX ", idtmed[200], dits2, 3); // detector layer 2
2148
3d67b484 2149// dits[0] = 3.701;
2150// dits[1] = 7.699;
2151// dits[2] = 4;
2152// dits[3] = 57.1;
2153// dits[4] = 99.9;
2154// gMC->Gsvolu("I650", "TUBS", idtmed[254], dits, 5); // was I150 in old geom.
2155 gGeoManager->MakeVolumeAssembly("I650");
6b2a1732 2156
2157 dits[0] = 3.7;
2158 dits[1] = 7.75;
2159 dits[2] = 0.05;
2160 gMC->Gsvolu("I651", "TUBE", idtmed[296], dits, 3); // services disk
2161
2162 dits[0] = 0;
2163 dits[1] = 0.5;
2164 dits[2] = 1.5;
2165 gMC->Gsvolu("I676", "TUBE", idtmed[274], dits, 3); // was I176 in old geom.
2166
2167 dits[0] = 0;
2168 dits[1] = 0.18;
2169 dits[2] = 0.8;
2170 gMC->Gsvolu("I673", "TUBE", idtmed[274], dits, 3); // was I173 in old geom.
2171
2172 dits[0] = 0;
2173 dits[1] = 0.18;
2174 dits[2] = 3;
2175 gMC->Gsvolu("I671", "TUBE", idtmed[274], dits, 3); // was I171 in old geom.
2176
2177 dits[0] = 0;
2178 dits[1] = 0.075;
2179 dits[2] = 0.8;
2180 gMC->Gsvolu("I669", "TUBE", idtmed[264], dits, 3); // was I169 in old geom.
2181
2182 dits[0] = 3.5;
2183 dits[1] = 5.6;
2184 dits[2] = 0.55;
2185 dits[3] = 0;
2186 dits[4] = 38;
2187 gMC->Gsvolu("I667", "TUBS", idtmed[263], dits, 5); // was I167 in old geom.
2188
2189 dits[0] = 6.6;
2190 dits[1] = 7.6;
2191 dits[2] = 0.5;
2192 dits[3] = 0;
2193 dits[4] = 9;
2194 gMC->Gsvolu("I666", "TUBS", idtmed[263], dits, 5); // was I166 in old geom.
2195
2196 dits[0] = 0.26;
2197 dits[1] = 0.32;
2198 dits[2] = 0.55;
2199 gMC->Gsvolu("I678", "TUBE", idtmed[263], dits, 3); // was I178 in old geom.
2200
ad819a25 2201 dits[0] = 0;
2202 dits[1] = 0.3;
2203 dits[2] = 1.5;
2204 gMC->Gsvolu("I677", "TUBE", idtmed[211], dits, 3); //set freon as cooling fluid
2205 // was I177 in old geom.
2206
6b2a1732 2207 dits[0] = 0.07;
2208 dits[1] = 0.125;
2209 dits[2] = 0.3;
2210 gMC->Gsvolu("I675", "TUBE", idtmed[263], dits, 3); // was I175 in old geom.
2211
ad819a25 2212
2213 dits[0] = 0;
2214 dits[1] = 0.1;
2215 dits[2] = 0.8;
2216 gMC->Gsvolu("I674", "TUBE", idtmed[211], dits, 3); //set freon as cooling fluid
2217 // was I174 in old geom.
6b2a1732 2218
6b2a1732 2219
ad819a25 2220
2221 dits[0] = 0;
2222 dits[1] = 0.1;
2223 dits[2] = 3;
2224 gMC->Gsvolu("I672", "TUBE", idtmed[211], dits, 3); //set freon as cooling fluid
2225 // was I172 in old geom.
2226
2227
2228 dits[0] = 0;
2229 dits[1] = 0.0746;
2230 dits[2] = 0.8;
2231 gMC->Gsvolu("I670", "TUBE", idtmed[211], dits, 3); //set freon as cooling fluid
2232 // was I170 in old geom.
2233
2234 dits[0] = 3.7;
2235 dits[1] = 5.4;
2236 dits[2] = 0.35;
2237 dits[3] = 2;
2238 dits[4] = 36;
2239 gMC->Gsvolu("I668", "TUBS", idtmed[211], dits, 5); //set freon as cooling fluid
2240 // was I168 in old geom.
6b2a1732 2241
6b2a1732 2242
2243
2244 }
2245
2246 // --- Define SDD volumes ------------------------------------------
2247
2248
2249 cos30 = cos(30.*3.14159/180.);
2250 sin30 = sin(30.*3.14159/180.);
2251
7672c713 2252 Double_t maxRadius = 28.5;
6b2a1732 2253 dits[0] = 0;
2254 dits[1] = 360;
2255 dits[2] = 6;
2256 dits[3] = -34.6;
2257 dits[4] = 23.49;
7672c713 2258 dits[5] = maxRadius;
7de9bc5a 2259 dits[6] = -27.35;
6b2a1732 2260 dits[7] = 23.49;
7672c713 2261 dits[8] = maxRadius;
7de9bc5a 2262 dits[9] = -27.35;
6b2a1732 2263 dits[10] = 14.59;
7672c713 2264 dits[11] = maxRadius;
7de9bc5a 2265 dits[12] = 27.35;
6b2a1732 2266 dits[13] = 14.59;
7672c713 2267 dits[14] = maxRadius;
7de9bc5a 2268 dits[15] = 27.35;
6b2a1732 2269 dits[16] = 23.49;
7672c713 2270 dits[17] = maxRadius;
6b2a1732 2271 dits[18] = 34.6;
2272 dits[19] = 23.49;
7672c713 2273 dits[20] = maxRadius;
6b2a1732 2274 gMC->Gsvolu("IT34", "PCON", idtmed[209], dits, 21);
2275
2276 // block of the SDD electronics and related ladder frame
41b19549 2277 iI018dits[0] = 3.2;
2278 iI018dits[1] = 2;
2279 iI018dits[2] = 3.65;
2280 gMC->Gsvolu("I018", "BOX ", idtmed[209], iI018dits, 3);
6b2a1732 2281
2282 // block of the SDD end ladder
41b19549 2283 iI024dits[0] = 3.2;
2284 iI024dits[1] = 2;
2285 iI024dits[2] = 2.725;
2286 gMC->Gsvolu("I024", "BOX ", idtmed[209], iI024dits, 3);
6b2a1732 2287
2288 // ladder frame of layer 3 - F.T. March,7-2001
41b19549 2289 iI047dits[0] = iI018dits[0];
2290 iI047dits[1] = iI018dits[1];
2291 iI047dits[2] = 6*iI018dits[2] + 2*iI024dits[2];
2292 gMC->Gsvolu("I047", "BOX ", idtmed[209], iI047dits, 3);
6b2a1732 2293
2294 // ladder frame of layer 4 - F.T. March,7-2001
41b19549 2295 iI048dits[0] = iI018dits[0];
2296 iI048dits[1] = iI018dits[1];
2297 iI048dits[2] = 8*iI018dits[2] + 2*iI024dits[2];
2298 gMC->Gsvolu("I048", "BOX ", idtmed[209], iI048dits, 3);
6b2a1732 2299
2300
2301 // global SDD volume (sensitive + insensitive)
41b19549 2302 iI302dits[0] = 3.6250;
2303 iI302dits[1] = 0.0150;
2304 iI302dits[2] = 4.3794;
2305 gMC->Gsvolu("I302", "BOX ", idtmed[278], iI302dits, 3);
6b2a1732 2306
2307 // Like for I302 - F.T. March,7-2001
41b19549 2308 iI402dits[0] = 3.6250;
2309 iI402dits[1] = 0.0150;
2310 iI402dits[2] = 4.3794;
2311 gMC->Gsvolu("I402", "BOX ", idtmed[278], iI402dits, 3);
6b2a1732 2312
2313 // SDD ladder of layer 3 - F.T. March,7-2001
41b19549 2314 iI004dits[0] = iI302dits[0]+0.005;
2315 iI004dits[1] = 2*iI302dits[1]+ySDDsep/2.;
2316 iI004dits[2] = TMath::Abs(zSDDlay3[0]);
2317 if (iI004dits[2] < TMath::Abs(zSDDlay3[5])) {
2318 iI004dits[2] = TMath::Abs(zSDDlay3[5]);
6b2a1732 2319 }
41b19549 2320 iI004dits[2] = iI004dits[2] + iI302dits[2];
2321 gMC->Gsvolu("I004", "BOX ", idtmed[209], iI004dits, 3);
6b2a1732 2322
2323 // SDD ladder of layer 4 - F.T. March,7-2001
41b19549 2324 iI005dits[0] = iI402dits[0]+0.005;
2325 iI005dits[1] = 2*iI402dits[1]+ySDDsep/2.;
2326 iI005dits[2] = TMath::Abs(zSDDlay4[0]);
2327 if (iI005dits[2] < TMath::Abs(zSDDlay4[7])) {
2328 iI005dits[2] = TMath::Abs(zSDDlay4[7]);
6b2a1732 2329 }
41b19549 2330 iI005dits[2] = iI005dits[2] + iI402dits[2];
2331 gMC->Gsvolu("I005", "BOX ", idtmed[209], iI005dits, 3);
6b2a1732 2332
2333
2334 // -- block of the SDD ladder foot and end ladder
2335
2336 // ladder foot mother volume
41b19549 2337 iI028dits[0] = 3.0000;
2338 iI028dits[1] = 0.4000;
2339 iI028dits[2] = 0.9000;
2340 gMC->Gsvolu("I028", "BOX ", idtmed[224], iI028dits, 3);
6b2a1732 2341
2342 // positioning-box #1 at SDD end-ladder - F.T. March,7-2001
41b19549 2343 iI420dits[0] = 0.4500;
2344 iI420dits[1] = 0.4000;
2345 iI420dits[2] = 0.4500;
2346 gMC->Gsvolu("I420", "BOX ", idtmed[264], iI420dits, 3);
6b2a1732 2347
2348 // positioning-box #2 at SDD end-ladder - F.T. March,7-2001
41b19549 2349 iI421dits[0] = 0.;
2350 iI421dits[1] = 0.25;
2351 iI421dits[2] = iI420dits[1];
2352 gMC->Gsvolu("I421", "TUBE", idtmed[209], iI421dits, 3);
6b2a1732 2353
2354 // reference ruby-sphere at SDD end-ladder - F.T. March,7-2001
41b19549 2355 iI422dits[0] = 0.0000;
2356 iI422dits[1] = 0.2000;
2357 iI422dits[2] = 0.0000;
2358 iI422dits[3] = 180.00;
2359 iI422dits[4] = 0.0000;
2360 iI422dits[5] = 360.00;
2361 gMC->Gsvolu("I422", "SPHE", idtmed[277], iI422dits, 6);
6b2a1732 2362
2363 // support for ruby-sphere (I422) - F.T. March,7-2001
41b19549 2364 iI423dits[0] = 0.0000;
2365 iI423dits[1] = 0.1000;
2366 iI423dits[2] = (iI420dits[1]-iI422dits[1])/2.;
2367 gMC->Gsvolu("I423", "TUBE", idtmed[264], iI423dits, 3);
6b2a1732 2368
2369 // passage for HV microcables - F.T. March,7-2001
41b19549 2370 iI424dits[0] = 1.5000;
2371 iI424dits[1] = 0.1500;
2372 iI424dits[2] = iI421dits[2];
2373 gMC->Gsvolu("I424", "BOX ", idtmed[209], iI424dits, 3);
6b2a1732 2374
2375 // HV microcables segment at the end ladder - F.T. March,7-2001
41b19549 2376 iI425dits[0] = 1.350000;
2377 iI425dits[1] = 0.015250;
2378 iI425dits[2] = iI024dits[2];
2379 gMC->Gsvolu("I425", "BOX ", idtmed[279], iI425dits, 3);
6b2a1732 2380
2381 // lower edge of SDD ladder frame at end-ladder - part 1
2382 dits[0] = 0.2;
2383 dits[1] = 0.1815;
41b19549 2384 dits[2] = iI024dits[2];
6b2a1732 2385 dits[3] = 0.015;
2386 gMC->Gsvolu("I025", "TRD1", idtmed[208], dits, 4);
2387
2388 // lower edge of SDD ladder frame at end-ladder - part 2
2389 dits[0] = 0.183;
2390 dits[1] = 0.165;
41b19549 2391 dits[2] = iI024dits[2];
6b2a1732 2392 dits[3] = 0.015;
2393 gMC->Gsvolu("I026", "TRD1", idtmed[208], dits, 4);
2394
2395 // new: for the 1st top rod of the structure
2396 // at the end-ladder - F.T. March,7-2001
41b19549 2397 iI029dits[0] = 0.2;
2398 iI029dits[1] = 0.1815;
2399 iI029dits[2] = 1.0100;
2400 iI029dits[3] = 0.015;
2401 gMC->Gsvolu("I029", "TRD1", idtmed[208], iI029dits, 4);
6b2a1732 2402
2403 // new: for the 2nd top rod of the structure
2404 // at the end-ladder - F.T. March,7-2001
41b19549 2405 iI030dits[0] = 0.1830;
2406 iI030dits[1] = 0.1650;
2407 iI030dits[2] = 1.0100;
2408 iI030dits[3] = 0.0150;
2409 gMC->Gsvolu("I030", "TRD1", idtmed[208], iI030dits, 4);
6b2a1732 2410
2411 // inox cooling tubes for the end ladder - F.T. March,7-2001
41b19549 2412 iI031dits[0] = 0.093;
2413 iI031dits[1] = 0.1;
2414 iI031dits[2] = iI024dits[2];
2415 gMC->Gsvolu("I031", "TUBE", idtmed[264], iI031dits, 3);
6b2a1732 2416
2417 if (fluid == 1) {
2418 // cooling water for the end ladder - F.T. March,7-2001
41b19549 2419 iI032dits[0] = 0;
2420 iI032dits[1] = iI031dits[0];
2421 iI032dits[2] = iI024dits[2];
2422 gMC->Gsvolu("I032", "TUBE", idtmed[211], iI032dits, 3);
6b2a1732 2423 } else {
2424 // cooling freon for the end ladder - R.B. March,21-2001
41b19549 2425 iI032dits[0] = 0;
2426 iI032dits[1] = iI031dits[0];
2427 iI032dits[2] = iI024dits[2];
2428 gMC->Gsvolu("I032", "TUBE", idtmed[212], iI032dits, 3);
6b2a1732 2429 }
2430
2431 // -- block of the SDD ladder frame holding the electronics
2432
2433 // edge of the ladder frame - part 1
2434 dits[0] = 0.2;
2435 dits[1] = 0.182;
2436 dits[2] = 3.65;
2437 dits[3] = 0.015;
2438 gMC->Gsvolu("I019", "TRD1", idtmed[208], dits, 4);
2439
2440 // edge of the ladder frame - part 2
2441 dits[0] = 0.183;
2442 dits[1] = 0.165;
2443 dits[2] = 3.65;
2444 dits[3] = 0.015;
2445 gMC->Gsvolu("I020", "TRD1", idtmed[208], dits, 4);
2446
2447 // inclined segments of the ladder frame
2448 dits[0] = 2.23;
2449 dits[1] = 2.1;
2450 dits[2] = 0.05;
2451 dits[3] = 0.03;
2452 gMC->Gsvolu("I021", "TRD1", idtmed[208], dits, 4);
2453
2454 // horiz.segments of the ladders, normal to ladder edges
2455 dits[0] = 2.1;
2456 dits[1] = 2;
2457 dits[2] = 0.06;
2458 dits[3] = 0.04;
2459 gMC->Gsvolu("I022", "TRD1", idtmed[208], dits, 4);
2460
2461 // horiz.segments of the ladders, at 45 deg. to ladder edges
2462 dits[0] = 2.615;
2463 dits[1] = 2.465;
2464 dits[2] = 0.06;
2465 dits[3] = 0.04;
2466 gMC->Gsvolu("I023", "TRD1", idtmed[208], dits, 4);
2467
2468 // supports of the ceramic pins holding the detectors
2469 dits[0] = 0.3;
2470 dits[1] = 0.05;
2471 dits[2] = 0.15;
2472 gMC->Gsvolu("I033", "BOX ", idtmed[208], dits, 3);
2473
2474 // ceramic pins holding the detectors
2475 dits[0] = 0;
2476 dits[1] = 0.05;
2477 dits[2] = 0.225;
2478 gMC->Gsvolu("I034", "TUBE", idtmed[277], dits, 3);
2479
2480 // holders of cooling tubes
41b19549 2481 iI035dits[0] = 0.1;
2482 iI035dits[1] = 0.15;
2483 iI035dits[2] = 0.2;
2484 gMC->Gsvolu("I035", "TUBE", idtmed[208], iI035dits, 3);
6b2a1732 2485
2486 // top holders of microcables
2487 dits[0] = 0.2;
2488 dits[1] = 0.01;
2489 dits[2] = 0.05;
2490 gMC->Gsvolu("I036", "BOX ", idtmed[208], dits, 3);
2491
2492 // inox cooling tubes - F.T. March,7-2001
41b19549 2493 iI037dits[0] = 0.093;
2494 iI037dits[1] = 0.1;
2495 iI037dits[2] = iI018dits[2];
2496 gMC->Gsvolu("I037", "TUBE", idtmed[264], iI037dits, 3);
6b2a1732 2497
2498 if (fluid == 1) {
2499 // cooling water - F.T. March,7-2001
41b19549 2500 iI038dits[0] = 0;
2501 iI038dits[1] = iI037dits[0];
2502 iI038dits[2] = iI018dits[2];
2503 gMC->Gsvolu("I038", "TUBE", idtmed[211], iI038dits, 3);
6b2a1732 2504 } else {
2505 // cooling freon - R.B. March,21-2001
41b19549 2506 iI038dits[0] = 0;
2507 iI038dits[1] = iI037dits[0];
2508 iI038dits[2] = iI018dits[2];
2509 gMC->Gsvolu("I038", "TUBE", idtmed[212], iI038dits, 3);
6b2a1732 2510 }
2511 // -- block of the SDD electronics (heat bridge, chips, hybrid, anode microcable)
2512
2513 // SDD heat bridge - F.T. March,7-2001
41b19549 2514 iI039dits[0] = 1.1000;
2515 iI039dits[1] = 0.0087;
2516 iI039dits[2] = 3.2500;
2517 gMC->Gsvolu("I039", "BOX ", idtmed[268], iI039dits, 3);
6b2a1732 2518
2519 // SDD clip part 1
2520 dits[0] = 0.25;
2521 dits[1] = 0.01;
41b19549 2522 dits[2] = iI039dits[2];
6b2a1732 2523 gMC->Gsvolu("I040", "BOX ", idtmed[268], dits, 3);
2524
2525 // SDD clip part 2
41b19549 2526 iI041dits[0] = 0.1;
2527 iI041dits[1] = 0.12;
2528 iI041dits[2] = iI039dits[2];
2529 iI041dits[3] = 90;
2530 iI041dits[4] = 320;
2531 gMC->Gsvolu("I041", "TUBS", idtmed[268], iI041dits, 5);
6b2a1732 2532
2533
2534 // SDD PASCAL - F.T. March,7-2001
41b19549 2535 iI042dits[0] = 0.5000;
2536 iI042dits[1] = 0.0175;
2537 iI042dits[2] = 0.5000;
2538 gMC->Gsvolu("I042", "BOX ", idtmed[206], iI042dits, 3);
6b2a1732 2539
2540 // SDD AMBRA - F.T. March,7-2001
41b19549 2541 iI043dits[0] = 0.3500;
2542 iI043dits[1] = 0.0175;
2543 iI043dits[2] = 0.5000;
2544 gMC->Gsvolu("I043", "BOX ", idtmed[206], iI043dits, 3);
6b2a1732 2545
2546 // SDD capacitors - F.T. March,7-2001
41b19549 2547 iI051dits[0] = 0.1400;
2548 iI051dits[1] = 0.0350;
2549 iI051dits[2] = 0.0625;
2550 gMC->Gsvolu("I051", "BOX ", idtmed[276], iI051dits, 3);
6b2a1732 2551
2552 // SDD hybrid circuit - F.T. March,7-2001
41b19549 2553 iI052dits[0] = 1.725000;
2554 iI052dits[1] = 0.003743;
2555 iI052dits[2] = iI039dits[2];
2556 gMC->Gsvolu("I052", "BOX ", idtmed[281], iI052dits, 3);
6b2a1732 2557
2558 // SDD anode microcable : changed - F.T. March,7-2001
41b19549 2559 iI044dits[0] = iI018dits[2];
2560 iI044dits[1] = iI039dits[2];
2561 iI044dits[2] = 0.00084;
2562 iI044dits[3] = (15.189149/(iI044dits[0]+iI044dits[1]))/2;
2563 gMC->Gsvolu("I044", "TRD1", idtmed[282], iI044dits, 4);
2564 volI044 = ((2*iI044dits[0] + 2*iI044dits[1]) * 2*iI044dits[2])/2 * 2*iI044dits[3];
6b2a1732 2565
2566 // SDD electronics box - F.T. March,7-2001
41b19549 2567 iI050dits[1] = iI039dits[1]+iI052dits[1]+iI051dits[1]+iI044dits[2];
2568 iI050dits[0] = iI018dits[1]/cos(30.*3.14159/180.)-iI050dits[1]*sin(30.*3.14159/180.);
2569 iI050dits[2] = iI018dits[2];
2570 gMC->Gsvolu("I050", "BOX ", idtmed[209], iI050dits, 3);
6b2a1732 2571
2572 // SDD sensitive volume
2573 dits[0] = 3.50850;
2574 dits[1] = 0.01499; // not 0.015 because it is included into I302 which is 0.015
2575 dits[2] = 3.76320;
2576 gMC->Gsvolu("ITS3", "BOX ", idtmed[200], dits, 3);
2577
2578 // Like for ITS3 - F.T. March,7-2001
2579 dits[0] = 3.50850;
2580 dits[1] = 0.01499; // not 0.015 because it is included into I402 which is 0.015
2581 dits[2] = 3.76320;
2582 gMC->Gsvolu("ITS4", "BOX ", idtmed[200], dits, 3);
2583
2584
2585 // --- Define SSD volumes ------------------------------------------
2586
2587
2588 dits[0] = 0;
2589 dits[1] = 360;
2590 dits[2] = 6;
2591 dits[3] = -57.45;
2592 dits[4] = 43.6;
2593 dits[5] = 48;
2594 dits[6] = -49.15;
2595 dits[7] = 43.6;
2596 dits[8] = 48;
2597 dits[9] = -49.15;
2598 dits[10] = 36.9;
2599 dits[11] = 48;
2600 dits[12] = 50.55;
2601 dits[13] = 36.9;
2602 dits[14] = 48;
2603 dits[15] = 50.55;
2604 dits[16] = 43.6;
2605 dits[17] = 48;
2606 dits[18] = 57.45;
2607 dits[19] = 43.6;
2608 dits[20] = 48;
4f849f3d 2609 //gMC->Gsvolu("IT56", "PCON", idtmed[220], dits, 21); // SSD air
2610 gMC->Gsvolu("IT56", "PCON", idtmed[204], dits, 21); // air
6b2a1732 2611
2612 dits[0] = 3.4;
2613 dits[1] = 1.955;
2614 dits[2] = 56.5;
2615 gMC->Gsvolu("I570", "BOX ", idtmed[204], dits, 3);
2616
2617 dits[0] = 3.75;
2618 dits[1] = 0.045;
2619 dits[2] = 50.975;
2620 gMC->Gsvolu("I569", "BOX ", idtmed[204], dits, 3);
2621
2622 dits[0] = 3.4;
2623 dits[1] = 1.955;
2624 dits[2] = 47;
2625 gMC->Gsvolu("I571", "BOX ", idtmed[204], dits, 3);
2626
2627 dits[0] = 3.75;
2628 dits[1] = 0.045;
2629 dits[2] = 43.3;
2630 gMC->Gsvolu("I565", "BOX ", idtmed[204], dits, 3);
2631
2632 dits[0] = 3.4;
2633 dits[1] = 1.955;
2634 dits[2] = 3.15;
2635 gMC->Gsvolu("I553", "BOX ", idtmed[204], dits, 3);
2636
2637 dits[0] = 3.405;
2638 dits[1] = 1.955;
2639 dits[2] = 1.955;
2640 gMC->Gsvolu("I523", "BOX ", idtmed[204], dits, 3);
2641
2642 dits[0] = 3.75;
2643 dits[1] = 0.015;
2644 dits[2] = 2.1;
2645 gMC->Gsvolu("I566", "BOX ", idtmed[206], dits, 3);
2646
2647 dits[0] = 3.4;
2648 dits[1] = 1.955;
2649 dits[2] = 3.15;
2650 gMC->Gsvolu("I544", "BOX ", idtmed[204], dits, 3);
2651
2652 dits[0] = 3.41;
2653 dits[1] = 1.955;
2654 dits[2] = 1.955;
2655 gMC->Gsvolu("I516", "BOX ", idtmed[204], dits, 3);
2656
2657 dits[0] = 3.75;
2658 dits[1] = 0.015;
2659 dits[2] = 2.1;
2660 gMC->Gsvolu("I562", "BOX ", idtmed[206], dits, 3);
2661
2662 if (fluid == 1) {
2663 dits[0] = 0;
2664 dits[1] = 0.07;
2665 dits[2] = 3.15;
2666 gMC->Gsvolu("I559", "TUBE", idtmed[211], dits, 3); // set water as cooling fluid
2667 } else {
2668 dits[0] = 0;
2669 dits[1] = 0.07;
2670 dits[2] = 3.15;
2671 gMC->Gsvolu("I559", "TUBE", idtmed[212], dits, 3); // set freon as cooling fluid
2672 }
2673
2674 dits[0] = 0.07;
2675 dits[1] = 0.1;
2676 dits[2] = 3.15;
2677 gMC->Gsvolu("I560", "TUBE", idtmed[210], dits, 3);
2678
2679 dits[0] = 0.225;
2680 dits[1] = 0.195;
2681 dits[2] = 3.15;
2682 dits[3] = 0.025;
2683 gMC->Gsvolu("I558", "TRD1", idtmed[203], dits, 4);
2684
2685 dits[0] = 0.25;
2686 dits[1] = 0.22;
2687 dits[2] = 3.15;
2688 dits[3] = 0.025;
2689 gMC->Gsvolu("I557", "TRD1", idtmed[203], dits, 4);
2690
2691 dits[0] = 2.17;
2692 dits[1] = 0.035;
2693 dits[2] = 0.05;
2694 gMC->Gsvolu("I556", "BOX ", idtmed[203], dits, 3);
2695
2696 dits[0] = 2 ;
2697 dits[1] = 0.035;
2698 dits[2] = 0.05;
2699 gMC->Gsvolu("I554", "BOX ", idtmed[203], dits, 3);
2700
2701 dits[0] = 2.675;
2702 dits[1] = 0.035;
2703 dits[2] = 0.05;
2704 gMC->Gsvolu("I555", "BOX ", idtmed[203], dits, 3);
2705
2706 dits[0] = 0.3;
2707 dits[1] = 0.15;
2708 dits[2] = 0.15;
2709 gMC->Gsvolu("I561", "BOX ", idtmed[203], dits, 3);
2710
2711 dits[0] = 0.025;
2712 dits[1] = 0.025;
2713 dits[2] = 0.05;
2714 gMC->Gsvolu("I519", "BOX ", idtmed[214], dits, 3);
2715
2716 dits[0] = 0.304;
2717 dits[1] = 0.0275;
2718 dits[2] = 0.432;
2719 gMC->Gsvolu("I521", "BOX ", idtmed[206], dits, 3);
2720
2721 dits[0] = 0.16;
2722 dits[1] = 0.08;
2723 dits[2] = 0.08;
2724 gMC->Gsvolu("I520", "BOX ", idtmed[214], dits, 3);
2725
2726 dits[0] = 3.4;
2727 dits[1] = 0.015;
2728 dits[2] = 0.525;
2729 gMC->Gsvolu("I518", "BOX ", idtmed[203], dits, 3);
2730
2731 dits[0] = 0.15;
2732 dits[1] = 0.105;
2733 dits[2] = 0.29;
2734 dits[3] = 0.08;
2735 gMC->Gsvolu("I522", "TRD1", idtmed[203], dits, 4);
2736
2737 dits[0] = 0.07;
2738 dits[1] = 0.1;
2739 dits[2] = 1.955;
2740 gMC->Gsvolu("I542", "TUBE", idtmed[210], dits, 3);
2741
2742 if (fluid == 1) {
2743 dits[0] = 0;
2744 dits[1] = 0.07;
2745 dits[2] = 1.955;
2746 gMC->Gsvolu("I541", "TUBE", idtmed[211], dits, 3); // set water as cooling fluid
2747 } else {
2748 dits[0] = 0;
2749 dits[1] = 0.07;
2750 dits[2] = 1.955;
2751 gMC->Gsvolu("I541", "TUBE", idtmed[212], dits, 3); // set freon as cooling fluid
2752 }
2753
2754 dits[0] = 0.3;
2755 dits[1] = 0.15;
2756 dits[2] = 0.15;
2757 gMC->Gsvolu("I543", "BOX ", idtmed[203], dits, 3);
2758
2759 dits[0] = 0.25;
2760 dits[1] = 0.22;
2761 dits[2] = 1.955;
2762 dits[3] = 0.025;
2763 gMC->Gsvolu("I537", "TRD1", idtmed[203], dits, 4);
2764
2765 dits[0] = 0.225;
2766 dits[1] = 0.195;
2767 dits[2] = 1.955;
2768 dits[4] = 0.025;
2769 gMC->Gsvolu("I538", "TRD1", idtmed[203], dits, 4);
2770
2771 dits[0] = 2.17;
2772 dits[1] = 0.035;
2773 dits[2] = 0.05;
2774 gMC->Gsvolu("I536", "BOX ", idtmed[203], dits, 3);
2775
2776 dits[0] = 2.675;
2777 dits[1] = 0.035;
2778 dits[2] = 0.05;
2779 gMC->Gsvolu("I535", "BOX ", idtmed[203], dits, 3);
2780
2781 dits[0] = 2;
2782 dits[1] = 0.035;
2783 dits[2] = 0.05;
2784 gMC->Gsvolu("I534", "BOX ", idtmed[203], dits, 3);
2785
2786 dits[0] = 0;
2787 dits[1] = 0.05;
2788 dits[2] = 0.17;
2789 gMC->Gsvolu("I540", "TUBE", idtmed[203], dits, 3);
2790
2791 dits[0] = 0;
2792 dits[1] = 0.05;
2793 dits[2] = 0.205;
2794 gMC->Gsvolu("I539", "TUBE", idtmed[203], dits, 3);
2795
2796 dits[0] = 3.65;
2797 dits[1] = 0.015;
2798 dits[2] = 2;
2799 gMC->Gsvolu("ITS6", "BOX ", idtmed[200], dits, 3);
2800
2801 if (fluid == 1) {
2802 dits[0] = 0;
2803 dits[1] = 0.07;
2804 dits[2] = 3.15;
2805 gMC->Gsvolu("I550", "TUBE", idtmed[211], dits, 3); // set water as cooling fluid
2806 } else {
2807 dits[0] = 0;
2808 dits[1] = 0.07;
2809 dits[2] = 3.15;
2810 gMC->Gsvolu("I550", "TUBE", idtmed[212], dits, 3); // set freon as cooling fluid
2811 }
2812
2813 dits[0] = 0.07;
2814 dits[1] = 0.1;
2815 dits[2] = 3.15;
2816 gMC->Gsvolu("I551", "TUBE", idtmed[210], dits, 3);
2817
2818 dits[0] = 0.225;
2819 dits[1] = 0.195;
2820 dits[2] = 3.15;
2821 dits[3] = 0.025;
2822 gMC->Gsvolu("I549", "TRD1", idtmed[203], dits, 4);
2823
2824 dits[0] = 0.25;
2825 dits[1] = 0.22;
2826 dits[2] = 3.15;
2827 dits[3] = 0.025;
2828 gMC->Gsvolu("I548", "TRD1", idtmed[203], dits, 4);
2829
2830 dits[0] = 2.17;
2831 dits[1] = 0.035;
2832 dits[2] = 0.05;
2833 gMC->Gsvolu("I547", "BOX ", idtmed[203], dits, 3);
2834
2835 dits[0] = 2;
2836 dits[1] = 0.035;
2837 dits[2] = 0.05;
2838 gMC->Gsvolu("I545", "BOX ", idtmed[203], dits, 3);
2839
2840 dits[0] = 2.675;
2841 dits[1] = 0.035;
2842 dits[2] = 0.05;
2843 gMC->Gsvolu("I546", "BOX ", idtmed[203], dits, 3);
2844
2845 dits[0] = 0.3;
2846 dits[1] = 0.15;
2847 dits[2] = 0.15;
2848 gMC->Gsvolu("I552", "BOX ", idtmed[203], dits, 3);
2849
2850 dits[0] = 0.304;
2851 dits[1] = 0.0275;
2852 dits[2] = 0.4322;
2853 gMC->Gsvolu("I515", "BOX ", idtmed[206], dits, 3);
2854
2855 dits[0] = 0.025;
2856 dits[1] = 0.025;
2857 dits[2] = 0.05;
2858 gMC->Gsvolu("I513", "BOX ", idtmed[214], dits, 3);
2859
2860 dits[0] = 0.16;
2861 dits[1] = 0.08;
2862 dits[2] = 0.08;
2863 gMC->Gsvolu("I514", "BOX ", idtmed[214], dits, 3);
2864
2865 dits[0] = 3.4;
2866 dits[1] = 0.015;
2867 dits[2] = 0.525;
2868 gMC->Gsvolu("I512", "BOX ", idtmed[203], dits, 3);
2869
2870 dits[0] = 0.225;
2871 dits[1] = 0.195;
2872 dits[2] = 1.955;
2873 dits[3] = 0.025;
2874 gMC->Gsvolu("I528", "TRD1", idtmed[203], dits, 4);
2875
2876 dits[0] = 0.25;
2877 dits[1] = 0.22;
2878 dits[2] = 1.955;
2879 dits[3] = 0.025;
2880 gMC->Gsvolu("I527", "TRD1", idtmed[203], dits, 4);
2881
2882 dits[0] = 2.17;
2883 dits[1] = 0.035;
2884 dits[2] = 0.05;
2885 gMC->Gsvolu("I526", "BOX ", idtmed[203], dits, 3);
2886
2887 dits[0] = 2.675;
2888 dits[1] = 0.035;
2889 dits[2] = 0.05;
2890 gMC->Gsvolu("I525", "BOX ", idtmed[203], dits, 3);
2891
2892 dits[0] = 2;
2893 dits[1] = 0.035;
2894 dits[2] = 0.05;
2895 gMC->Gsvolu("I524", "BOX ", idtmed[203], dits, 3);
2896
2897 dits[0] = 0;
2898 dits[1] = 0.05;
2899 dits[2] = 0.205;
2900 gMC->Gsvolu("I529", "TUBE", idtmed[203], dits, 3);
2901
2902 dits[0] = 0;
2903 dits[1] = 0.05;
2904 dits[2] = 0.17;
2905 gMC->Gsvolu("I530", "TUBE", idtmed[203], dits, 3);
2906
2907 dits[0] = 0.15;
2908 dits[1] = 0.105;
2909 dits[2] = 0.29;
2910 dits[3] = 0.08;
2911 gMC->Gsvolu("I517", "TRD1", idtmed[203], dits, 4);
2912
2913 if (fluid == 1) {
2914 dits[0] = 0;
2915 dits[1] = 0.07;
2916 dits[2] = 1.955;
2917 gMC->Gsvolu("I531", "TUBE", idtmed[211], dits, 3); // set water as cooling fluid
2918 } else {
2919 dits[0] = 0;
2920 dits[1] = 0.07;
2921 dits[2] = 1.955;
2922 gMC->Gsvolu("I531", "TUBE", idtmed[212], dits, 3); // set freon as cooling fluid
2923 }
2924
2925 dits[0] = 0.07;
2926 dits[1] = 0.1;
2927 dits[2] = 1.955;
2928 gMC->Gsvolu("I532", "TUBE", idtmed[210], dits, 3);
2929
2930 dits[0] = 0.3;
2931 dits[1] = 0.15;
2932 dits[2] = 0.15;
2933 gMC->Gsvolu("I533", "BOX ", idtmed[203], dits, 3);
2934
2935 dits[0] = 3.65;
2936 dits[1] = 0.015;
2937 dits[2] = 2;
2938 gMC->Gsvolu("ITS5", "BOX ", idtmed[200], dits, 3);
2939
2940
2941
2942 // --- Define volumes of shield of SPD ----------------
2943
2944
2945 dits[0] = 8.37;
2946 dits[1] = 9.93;
2947 dits[2] = 25;
2948 gMC->Gsvolu("IC01", "TUBE", idtmed[289], dits, 3);
2949
2950 dits[0] = 8.3;
2951 dits[1] = 9.995;
2952 dits[2] = 17.5/2.;
2953 gMC->Gsvolu("IC02", "TUBE", idtmed[289], dits, 3);
2954
2955
2956 // --- Define volume of first cylinder between SPD and SDD --------------
2957
2958 dits[0] = (21.-0.128)/2.;
2959 dits[1] = 21./2.;
2960 dits[2] = 39.4;
2961 gMC->Gsvolu("ICY1", "TUBE", idtmed[208], dits, 3);
2962
2963 // --- Define volume of second cylinder between SDD and SSD --------------
2964
2965 dits[0] = (59.5-0.128)/2.;
2966 dits[1] = 59.5/2.;
2967 dits[2] = 56.2; // was 57
2968 gMC->Gsvolu("ICY2", "TUBE", idtmed[208], dits, 3);
2969
2970 // --- Define volumes of SDD cone ----------------------------------
2971
2972 dits[0] = 0;
2973 dits[1] = 360;
2974 dits[2] = 12;
3d67b484 2975
6b2a1732 2976 dits[3] = -59.7;
2977 dits[4] = 27;
2978 dits[5] = 28.6;
3d67b484 2979
6b2a1732 2980 dits[6] = -42.7;
2981 dits[7] = 10;
2982 dits[8] = 28.6;
3d67b484 2983
6b2a1732 2984 dits[9] = -34.65;
2985 dits[10] = 10;
2986 dits[11] = 28.6;
3d67b484 2987
6b2a1732 2988 dits[12] = -34.65;
2989 dits[13] = 10;
2990 dits[14] = 23.495;
3d67b484 2991
6b2a1732 2992 dits[15] = -23.7;
2993 dits[16] = 10;
2994 dits[17] = 23.495;
3d67b484 2995
6b2a1732 2996 dits[18] = -23.7;
2997 dits[19] = 10;
2998 dits[20] = 14.595;
3d67b484 2999
6b2a1732 3000 dits[21] = 23.7;
3001 dits[22] = 10;
3002 dits[23] = 14.595;
3d67b484 3003
6b2a1732 3004 dits[24] = 23.7;
3005 dits[25] = 10;
3006 dits[26] = 23.495;
3d67b484 3007
6b2a1732 3008 dits[27] = 34.65;
3009 dits[28] = 10;
3010 dits[29] = 23.495;
3d67b484 3011
6b2a1732 3012 dits[30] = 34.65;
3013 dits[31] = 10;
3014 dits[32] = 28.6;
3d67b484 3015
6b2a1732 3016 dits[33] = 42.7;
3017 dits[34] = 10;
3018 dits[35] = 28.6;
3d67b484 3019
6b2a1732 3020 dits[36] = 59.7;
3021 dits[37] = 27.2637;
3d67b484 3022 dits[38] = 28.6;
3023
3024
3025 // fixing overlaps :
3026 dits[15] = -27.35;
3027 dits[18] = -27.35;
3028 dits[21] = 27.35;
3029 dits[24] = 27.35;
3030
6b2a1732 3031 gMC->Gsvolu("IS02", "PCON", idtmed[204], dits, 39);
3032
3033 dits[0] = 0;
3034 dits[1] = 360;
3035 dits[2] = 6;
3036 dits[3] = 38.65;
3037 dits[4] = 10.75;
3038 dits[5] = 12.25;
3039 dits[6] = 40.15;
3040 dits[7] = 10.75;
3041 dits[8] = 13.96;
3042 dits[9] = 40.15;
3043 dits[10] = 12.46;
3044 dits[11] = 13.96;
3045 dits[12] = 55.75;
3046 dits[13] = 27;
3047 dits[14] = 28.5;
3048 dits[15] = 55.75;
3049 dits[16] = 27;
3050 dits[17] = 28.5;
3051 dits[18] = 57.25;
3052 dits[19] = 27;
2938f24d 3053 dits[20] = 28.5;
6b2a1732 3054// gMC->Gsvolu("I093", "PCON", idtmed[272], dits, 21); // SDD cone
f3c2ddf7 3055 gMC->Gsvolu("I093", "PCON", idtmed[287], dits, 21); // SDD cone
6b2a1732 3056
2938f24d 3057 // Redefined to make adding material for cables easier (FMD geometry)
3058 Double_t s1,s2,b1,b2;
87577a03 3059 s1 = (dits[13]-dits[10])/(dits[12]-dits[9]); // Slope of conical section
3060 s2 = (dits[14]-dits[11])/(dits[12]-dits[9]); // Slope of conical section
3061 b1 = dits[13] - s1*dits[12]; // inside cone axis intersept
3062 b2 = dits[14] - s2*dits[12]; // outside cone axis intersept
2938f24d 3063 dits[0] = 0; //dits[0] = 0;
3064 dits[1] = 50; //dits[1] = 50;
3065 dits[2] = 4; //dits[2] = 3;
3066
3067 dits[4] = 14.0; //dits[4] = 14; // r inner
3068 dits[5] = dits[4]; //dits[5] = 18.75; // r outer
3069 dits[3] = (dits[4]-b2)/s2; //dits[3] = 39; // Z
3070
3071 dits[7] = dits[4]; //dits[7] = 14; // r inner
3072 dits[6] = (dits[7]-b1)/s1; //dits[6] = 46.7-3; // Z
3073 dits[8] = s2*dits[6]+b2; //dits[8] = 18.75; // r outer
3074
3075 dits[11] = 18.75; //dits[11] = 18.75; // r outer
3076 dits[9] = (dits[11]-b2)/s2; //dits[9] = 51.45-3; // Z
3077 dits[10] = s1*dits[9]+b1; //dits[10] = 18.75; // r inner
3078
3079 dits[13] = dits[11]; // r inner
3080 dits[14] = dits[11]; // r outer
3081 dits[12] = (dits[13]-b1)/s1; // Z
6b2a1732 3082// gMC->Gsvolu("I099", "PCON", idtmed[204], dits, 12); // SDD 3 cone hole
f3c2ddf7 3083 gMC->Gsvolu("I099", "PCON", idtmed[285], dits, 15); // SDD 3 cone hole
6b2a1732 3084
2938f24d 3085 dits[0] = 0; //dits[0] = 0;
3086 dits[1] = 25; //dits[1] = 25;
3087 dits[2] = 4; //dits[2] = 3;
3088
3089 dits[4] = 23.4; //dits[4] = 23.4; // r inner
3090 dits[5] = dits[4]; //dits[5] = 26.4; // r outer
3091 dits[3] = (dits[4]-b2)/s2; //dits[3] = 49; // Z
3092
3093 dits[7] = dits[4]; //dits[7] = 23.4; // r inner
3094 dits[6] = (dits[7]-b1)/s1; //dits[6] = 56.1-3; // Z
3095 dits[8] = s2*dits[6]+b2; //dits[8] = 26.4; // r outer
3096
3097 dits[11] = 26.4; //dits[11] = 26.4; // r outer
3098 dits[9] = (dits[11]-b2)/s2; //dits[9] = 59.1-3; // Z
3099 dits[10] = s1*dits[9]+b1; //dits[10] = 26.4; // r inner
3100
3101 dits[13] = dits[11]; // r inner
3102 dits[14] = dits[11]; // r outer
3103 dits[12] = (dits[13]-b1)/s1; // Z
6b2a1732 3104// gMC->Gsvolu("I200", "PCON", idtmed[204], dits, 12); // SDD 4 cone hole
f3c2ddf7 3105 gMC->Gsvolu("I200", "PCON", idtmed[285], dits, 15); // SDD 4 cone hole
87577a03 3106 //Begin_Html
3107 /*
3108 <img src="http://www.Physics.ohio-state.edu/~nilsen/ITS/ITS_FMD_PMD_Geom.eps">
3109 </pre>
3110 <br clear=left>
3111 <font size=+2 color=blue>
3112 <p>SDD Support cone with other forward detectors. Shown in
3113 brown are a posible cabling layout.
3114 </font>
3115 */
3116 //End_Html
6b2a1732 3117 dits[0] = 10.0;
3118 dits[1] = 10.5;
3119 dits[2] = 0.25;
3120 gMC->Gsvolu("I090", "TUBE", idtmed[224], dits, 3); // SDD cylinder flange
3121
3122 dits[0] = 21.95;
3123 dits[1] = 22.95;
3124 dits[2] = 1;
3125 gMC->Gsvolu("I098", "TUBE", idtmed[283], dits, 3); // ladder support on layer 4
3126
3127 dits[0] = 13.1;
3128 dits[1] = 14.1;
3129 dits[2] = 1;
3130 gMC->Gsvolu("I097", "TUBE", idtmed[283], dits, 3); // ladder support on layer 3
3131
3132 dits[0] = 1;
3133 dits[1] = 1;
3134 dits[2] = 7.74;
3135 gMC->Gsvolu("I202", "BOX ", idtmed[272], dits, 3);
3136
3137 dits[0] = 1;
3138 dits[1] = 1;
3139 dits[2] = 9.14;
3140 gMC->Gsvolu("I203", "BOX ", idtmed[272], dits, 3);
3141
3142 dits[0] = 21.95;
3143 dits[1] = 22.95;
3144 dits[2] = 1;
3145 gMC->Gsvolu("I095", "TUBE", idtmed[224], dits, 3);
3146
3147 dits[0] = 3;
3148 dits[1] = 2.7;
3149 dits[2] = 1;
3150 dits[3] = 0.63;
3151 gMC->Gsvolu("I096", "TRD1", idtmed[264], dits, 4);
3152
3153 dits[0] = 13.1;
3154 dits[1] = 14.1;
3155 dits[2] = 1;
3156 gMC->Gsvolu("I094", "TUBE", idtmed[224], dits, 3);
3157
3158
3159 // --- Define volumes of SSD cone ----------------------------------
3160
3161
3162 dits[0] = 0;
3163 dits[1] = 360;
3164 dits[2] = 12;
3165 dits[3] = -zmax;
3166 dits[4] = 46;
3167 dits[5] = 49.25;
3168 dits[6] = -61.2;
3169 dits[7] = 28.7;
3170 dits[8] = 49.25;
3171 dits[9] = -57.5;
3172 dits[10] = 28.7;
3173 dits[11] = 49.25;
3174 dits[12] = -57.5;
3175 dits[13] = 28.7;
3176 dits[14] = 43.5;
3177 dits[15] = -49.2;
3178 dits[16] = 28.7;
3179 dits[17] = 43.5;
3180 dits[18] = -49.2;
3181 dits[19] = 28.7;
3182 dits[20] = 36.85;
3183 dits[21] = 50.6;
3184 dits[22] = 28.7;
3185 dits[23] = 36.85;
3186 dits[24] = 50.6;
3187 dits[25] = 28.7;
3188 dits[26] = 43.5;
3189 dits[27] = 57.5;
3190 dits[28] = 28.7;
3191 dits[29] = 43.5;
3192 dits[30] = 57.5;
3193 dits[31] = 28.7;
3194 dits[32] = 49.25;
3195 dits[33] = 61.2;
3196 dits[34] = 28.7;
3197 dits[35] = 49.25;
3198 dits[36] = zmax;
3199 dits[37] = 46;
3200 dits[38] = 49.25;
3201 gMC->Gsvolu("IS01", "PCON", idtmed[204], dits, 39); // SSD cone mother volume
3202
3203 dits[0] = 0;
3204 dits[1] = 360;
3205 dits[2] = 6;
3206 dits[3] = -zmax;
3207 dits[4] = 47.75;
3208 dits[5] = 49.25;
3209 dits[6] = -zmax+2.;
3210 dits[7] = 47.75;
3211 dits[8] = 49.25;
3212 dits[9] = -71.2819;
3213 dits[10] = 46.75;
3214 dits[11] = 49.0319;
3215 dits[12] = -57.25; // was 58.5
3216 dits[13] = 32.9681;
3217 dits[14] = 34.75;
3218 dits[15] = -57.25; // was 58.5
3219 dits[16] = 30;
3220 dits[17] = 34.75;
3221 dits[18] = -55.75; // was 57
3222 dits[19] = 30;
3223 dits[20] = 32.25; // was 31.5
3224// gMC->Gsvolu("I212", "PCON", idtmed[272], dits, 21); // SSD cone
f3c2ddf7 3225 gMC->Gsvolu("I212", "PCON", idtmed[288], dits, 21); // SSD cone
2938f24d 3226
87577a03 3227 s1 = (dits[10]-dits[13])/(dits[9]-dits[12]); // Slope of conical section
3228 s2 = (dits[11]-dits[14])/(dits[9]-dits[12]); // Slope of conical section
3229 b1 = dits[13] - s1*dits[12]; // inside cone axis intersept
3230 b2 = dits[14] - s2*dits[12]; // outside cone axis intersept
2938f24d 3231 dits[0] = 0;
3232 dits[1] = 25;
3233 dits[2] = 4; //dits[2] = 5;
3234
3235 dits[4] = 45.50; //dits[4] = 45.5; // r inner
3236 dits[5] = dits[4]; //dits[5] = 45.5; // r outer
87577a03 3237 dits[3] = (dits[4] - b1)/s1; //dits[3] = -zmax+3; // z
2938f24d 3238
3239 dits[8] = dits[4]; //dits[8] = 45.5; // r outer
87577a03 3240 dits[6] = (dits[8] - b2)/s2; //dits[6] = -69.7+3;; // z
3241 dits[7] = s1*dits[6] + b1; //dits[7] = 37; // r inner
2938f24d 3242
3243 dits[10] = 37.00; //dits[10] = 37; // r inner
87577a03 3244 dits[9] = (dits[10]-b1)/s1; //dits[9] = -68.5+3;; // z
3245 dits[11] = s2*dits[9]+b2; //dits[11] = 45.5; // r outer
2938f24d 3246
3247 dits[13] = dits[10]; //dits[13] = 37; // r inner
3248 dits[14] = dits[13]; //dits[14] = 45.5; // r outer
87577a03 3249 dits[12] = (dits[14] - b2)/s2; //dits[12] = -68.5+4.8;; // z
2938f24d 3250// gMC->Gsvolu("I215", "PCON", idtmed[204], dits, 18); // SSD cone hole
f3c2ddf7 3251 gMC->Gsvolu("I215", "PCON", idtmed[286], dits, 15); // SSD cone hole
87577a03 3252 //Begin_Html
3253 /*
3254 <img src="http://www.Physics.ohio-state.edu/~nilsen/ITS/ITS_FMD_PMD_Geom.eps">
3255 </pre>
3256 <br clear=left>
3257 <font size=+2 color=blue>
3258 <p>SSD Support cone with other forward detectors. Shown in
3259 brown are a posible cabling layout.
3260 </font>
3261 */
3262 //End_Html
6b2a1732 3263
3264 dits[0] = 28.75;
3265 dits[1] = 29.75;
3266 dits[2] = 0.5;
3267 gMC->Gsvolu("I211", "TUBE", idtmed[224], dits, 3); // SSD cylinder flange
3268
3269 dits[0] = 35.8;
3270 dits[1] = 36.8;
3271 dits[2] = 1;
3272 gMC->Gsvolu("I217", "TUBE", idtmed[283], dits, 3); // ladder support on layer 5
3273
3274 dits[0] = 41.4;
3275 dits[1] = 42.4;
3276 dits[2] = 1;
3277 gMC->Gsvolu("I219", "TUBE", idtmed[283], dits, 3); // ladder support on layer 6
3278
3279 dits[0] = 42.05+5.;
3280 dits[1] = 42.55+5.;
3281 dits[2] = 1.25;
3282 gMC->Gsvolu("I214", "TUBE", idtmed[224], dits, 3); // layer 6 electronic support
3283 // this will change after PPR
3284 dits[0] = 37.05+5.;
3285 dits[1] = 37.55+5.;
3286 dits[2] = 1.25;
3287 gMC->Gsvolu("I213", "TUBE", idtmed[224], dits, 3); // layer 5 electronic support
3288 // this will change after PPR
6b2a1732 3289
3290 dits[0] = 0;
3291 dits[1] = 3.2;
3292 dits[2] = 9;
3293 dits[3] = -14;
3294 dits[4] = 30.5;
3295 dits[5] = 33.5;
3296 dits[6] = -9.85;
3297 dits[7] = 30.5;
3298 dits[8] = 33.5;
3299 dits[9] = -9.85;
3300 dits[10] = 30.5;
3301 dits[11] = 43.45;
3302 dits[12] = -7.85;
3303 dits[13] = 30.5;
3304 dits[14] = 43.45;
3305 dits[15] = -7.85;
3306 dits[16] = 30.5;
3307 dits[17] = 36.5;
3308 dits[18] = -7;
3309 dits[19] = 30.5;
3310 dits[20] = 36.5;
3311 dits[21] = -4;
3312 dits[22] = 33.0173;
3313 dits[23] = 36.5;
3314 dits[24] = -4;
3315 dits[25] = 33.0173;
3316 dits[26] = 36.80;
3317 dits[27] = -2;
3318 dits[28] = 34.6955;
3319 dits[29] = 36.80;
3320 gMC->Gsvolu("I216", "PCON", idtmed[272], dits, 30); // supports (1-6) of the ladders
3321
3322
3323 // --- Place SPD (option 'a') volumes into their mother volume IT12
3324
3325 // SPD - option 'a'
3326 // (this is NOT the default)
3327
3328 if (option == 1) {
3329
3330 gMC->Gspos("I12A",5,"IT12",0.0,0.0,0.0,idrotm[238],"MANY");
3331 gMC->Gspos("I12A",6,"IT12",0.0,0.0,0.0,idrotm[236],"MANY");
3332 gMC->Gspos("I12A",7,"IT12",0.0,0.0,0.0,idrotm[239],"MANY");
3333 gMC->Gspos("I12A",8,"IT12",0.0,0.0,0.0,idrotm[233],"MANY");
3334 gMC->Gspos("I12A",9,"IT12",0.0,0.0,0.0,idrotm[240],"MANY");
3335 gMC->Gspos("I12A",10,"IT12",0.0,0.0,0.0,idrotm[241],"MANY");
3336 gMC->Gspos("I12A",2,"IT12",0.0,0.0,0.0,idrotm[242],"MANY");
3337 gMC->Gspos("I12A",3,"IT12",0.0,0.0,0.0,idrotm[234],"MANY");
3338 gMC->Gspos("I12A",4,"IT12",0.0,0.0,0.0,idrotm[243],"MANY");
3339 gMC->Gspos("I12A",1,"IT12",0.0,0.0,0.0,0,"MANY");
3340 deltax=((ddet1-0.01/2.)+(dchip1-0.015/2.))*TMath::Cos(270.*TMath::Pi()/180.); // see definition of idrotm[244]
3341 deltay=((ddet1-0.01/2.)+(dchip1-0.015/2.))*TMath::Sin(270.*TMath::Pi()/180.); // see definition of idrotm[244]
3342 gMC->Gspos("I10A",2,"I12A",0.203+deltax,3.8206+deltay,0.0,idrotm[244],"ONLY");
3343 deltax=((ddet1-0.01/2.)+(dchip1-0.015/2.))*TMath::Cos(252.*TMath::Pi()/180.); // see definition of idrotm[245]
3344 deltay=((ddet1-0.01/2.)+(dchip1-0.015/2.))*TMath::Sin(252.*TMath::Pi()/180.); // see definition of idrotm[245]
3345 gMC->Gspos("I10A",1,"I12A",1.4531+deltax,3.8152+deltay,0.0,idrotm[245],"ONLY");
3346 deltax=((ddet2-0.01/2.)+(dchip2-0.015/2.))*TMath::Cos(40.*TMath::Pi()/180.); // see definition of idrotm[246]
3347 deltay=((ddet2-0.01/2.)+(dchip2-0.015/2.))*TMath::Sin(40.*TMath::Pi()/180.); // see definition of idrotm[246]
3348 gMC->Gspos("I20A",1,"I12A",3.0174+deltax,6.5143+deltay,0.0,idrotm[246],"ONLY");
3349 deltax=((ddet2-0.01/2.)+(dchip2-0.015/2.))*TMath::Cos(49.*TMath::Pi()/180.); // see definition of idrotm[247]
3350 deltay=((ddet2-0.01/2.)+(dchip2-0.015/2.))*TMath::Sin(49.*TMath::Pi()/180.); // see definition of idrotm[247]
3351 gMC->Gspos("I20A",2,"I12A",1.9612+deltax,6.9062+deltay,0.0,idrotm[247],"ONLY");
3352 deltax=((ddet2-0.01/2.)+(dchip2-0.015/2.))*TMath::Cos(58.*TMath::Pi()/180.); // see definition of idrotm[248]
3353 deltay=((ddet2-0.01/2.)+(dchip2-0.015/2.))*TMath::Sin(58.*TMath::Pi()/180.); // see definition of idrotm[248]
3354 gMC->Gspos("I20A",3,"I12A",0.8567+deltax,7.1279+deltay,0.0,idrotm[248],"ONLY");
3355 deltax=((ddet2-0.01/2.)+(dchip2-0.015/2.))*TMath::Cos(67.*TMath::Pi()/180.); // see definition of idrotm[249]
3356 deltay=((ddet2-0.01/2.)+(dchip2-0.015/2.))*TMath::Sin(67.*TMath::Pi()/180.); // see definition of idrotm[249]
3357 gMC->Gspos("I20A",4,"I12A",-0.2689+deltax,7.1742+deltay,0.0,idrotm[249],"ONLY");
3358 gMC->Gspos("I123",2,"I12A",-0.2978,5.5196,0.0,idrotm[214],"ONLY");
3359 gMC->Gspos("I121",2,"I12A",-0.2385,4.1518,0.0,idrotm[213],"ONLY");
3360 gMC->Gspos("I122",2,"I12A",-0.2968,4.0207,0.0,idrotm[212],"ONLY");
3361 gMC->Gspos("I120",2,"I12A",-0.3672,3.9056,0.0,0,"ONLY");
3362 gMC->Gspos("I144",1,"I12A",-0.2538,3.8556,0.0,0,"ONLY");
3363 gMC->Gspos("I113",3,"I12A",0.1095,3.9056,0.0,0,"ONLY");
3364 gMC->Gspos("I143",1,"I12A",0.4365,3.8556,0.0,idrotm[236],"ONLY");
3365 gMC->Gspos("I142",1,"I12A",0.5136,3.9056,0.0,idrotm[235],"ONLY");
3366 gMC->Gspos("I141",1,"I12A",0.5636,3.9752,0.0,idrotm[201],"ONLY");
3367 gMC->Gspos("I140",1,"I12A",0.6336,4.0447,0.0,idrotm[234],"ONLY");
3368 gMC->Gspos("I139",1,"I12A",0.8297,4.0545,0.0,idrotm[207],"ONLY");
3369 gMC->Gspos("I113",5,"I12A",1.2575,3.9681,0.0,idrotm[207],"ONLY");
3370 gMC->Gspos("I138",1,"I12A",1.66,3.7848,0.0,idrotm[207],"ONLY");
3371 gMC->Gspos("I137",1,"I12A",1.8556,3.7738,0.0,idrotm[233],"ONLY");
3372 gMC->Gspos("I136",1,"I12A",2.6224,4.874,0.0,idrotm[232],"ONLY");
3373 gMC->Gspos("I135",1,"I12A",3.2967,6.0337,0.0,idrotm[231],"ONLY");
3374 gMC->Gspos("I134",1,"I12A",3.266,6.1636,0.0,idrotm[230],"ONLY");
3375 gMC->Gspos("I113",1,"I12A",2.9903,6.4144,0.0,idrotm[211],"ONLY");
3376 gMC->Gspos("I133",3,"I12A",2.7631,6.7627,0.0,idrotm[230],"ONLY");
3377 gMC->Gspos("I132",3,"I12A",2.62,6.8555,0.0,idrotm[229],"ONLY");
3378 gMC->Gspos("I131",3,"I12A",2.648,6.6023,0.0,idrotm[228],"ONLY");
3379 gMC->Gspos("I130",3,"I12A",2.6569,6.3431,0.0,idrotm[227],"ONLY");
3380 gMC->Gspos("I129",3,"I12A",2.3906,6.4819,0.0,idrotm[226],"ONLY");
3381 gMC->Gspos("I113",2,"I12A",1.9488,6.7998,0.0,idrotm[210],"ONLY");
3382 gMC->Gspos("I133",2,"I12A",1.6699,7.1085,0.0,idrotm[226],"ONLY");
3383 gMC->Gspos("I132",2,"I12A",1.5142,7.1777,0.0,idrotm[225],"ONLY");
3384 gMC->Gspos("I131",2,"I12A",1.5814,6.932,0.0,idrotm[224],"ONLY");
3385 gMC->Gspos("I130",2,"I12A",1.6308,6.6774,0.0,idrotm[223],"ONLY");
3386 gMC->Gspos("I129",2,"I12A",1.346,6.7728,0.0,idrotm[222],"ONLY");
3387 gMC->Gspos("I113",6,"I12A",0.8599,7.0176,0.0,idrotm[209],"ONLY");
3388 gMC->Gspos("I133",1,"I12A",0.5362,7.2789,0.0,idrotm[222],"ONLY");
3389 gMC->Gspos("I132",1,"I12A",0.3715,7.3228,0.0,idrotm[221],"ONLY");
3390 gMC->Gspos("I131",1,"I12A",0.4763,7.0907,0.0,idrotm[220],"ONLY");
3391 gMC->Gspos("I130",1,"I12A",0.5649,6.8469,0.0,idrotm[219],"ONLY");
3392 gMC->Gspos("I129",1,"I12A",0.2688,6.8966,0.0,idrotm[218],"ONLY");
3393 gMC->Gspos("I113",4,"I12A",-0.2497,7.0624,0.0,idrotm[208],"ONLY");
3394 gMC->Gspos("I128",1,"I12A",-0.6103,7.2698,0.0,idrotm[218],"ONLY");
3395 gMC->Gspos("I126",2,"I12A",-0.7799,7.2874,0.0,idrotm[217],"ONLY");
3396 gMC->Gspos("I125",2,"I12A",-0.6315,7.0883,0.0,idrotm[216],"ONLY");
3397 gMC->Gspos("I124",2,"I12A",-0.4965,6.8742,0.0,idrotm[215],"ONLY");
3398 gMC->Gspos("I103",3,"I10A",-0.05,-di10a[1]+2.*di104[1]+di103[1],-3.536,0,"ONLY");
3399 gMC->Gspos("I103",4,"I10A",-0.05,-di10a[1]+2.*di104[1]+di103[1],-10.708,0,"ONLY");
3400 gMC->Gspos("I103",1,"I10A",-0.05,-di10a[1]+2.*di104[1]+di103[1],10.708,0,"ONLY");
3401 gMC->Gspos("I103",2,"I10A",-0.05,-di10a[1]+2.*di104[1]+di103[1],3.536,0,"ONLY");
3402 gMC->Gspos("I105",1,"I10A",-0.05,0.01,-16.844,idrotm[237],"ONLY");
3403 gMC->Gspos("I105",2,"I10A",-0.05,0.01,16.844,0,"ONLY");
3404 gMC->Gspos("I104",1,"I10A",0.0,-di10a[1]+di104[1],0.0,0,"ONLY");
3405 gMC->Gspos("I1D3",3,"I20A",-0.05,-di20a[1]+2.*di104[1]+di1d3[1],-3.536,0,"ONLY");
3406 gMC->Gspos("I1D3",4,"I20A",-0.05,-di20a[1]+2.*di104[1]+di1d3[1],-10.708,0,"ONLY");
3407 gMC->Gspos("I1D3",1,"I20A",-0.05,-di20a[1]+2.*di104[1]+di1d3[1],10.708,0,"ONLY");
3408 gMC->Gspos("I1D3",2,"I20A",-0.05,-di20a[1]+2.*di104[1]+di1d3[1],3.536,0,"ONLY");
3409 gMC->Gspos("I105",3,"I20A",-0.05,0.01,-16.844,idrotm[237],"ONLY");
3410 gMC->Gspos("I105",4,"I20A",-0.05,0.01,16.844,0,"ONLY");
3411 gMC->Gspos("I104",2,"I20A",0.0,-di20a[1]+di104[1],0.0,0,"ONLY");
3412 gMC->Gspos("I112",2,"I113",0.25,0.02,0.0,idrotm[206],"ONLY");
3413 gMC->Gspos("I111",2,"I113",0.1318,-0.0008,0.0,idrotm[205],"ONLY");
3414 gMC->Gspos("I118",1,"I113",0.0,-0.0454,0.0,0,"ONLY");
3415 gMC->Gspos("I110",1,"I113",0.0,0.0492,0.0,0,"ONLY");
3416 gMC->Gspos("I114",1,"I113",0.063,0.0042,0.0,idrotm[202],"ONLY");
3417 gMC->Gspos("I115",1,"I113",0.063,0.0042,0.0,idrotm[202],"ONLY");
3418 gMC->Gspos("I115",2,"I113",-0.063,0.0042,0.0,idrotm[201],"ONLY");
3419 gMC->Gspos("I114",2,"I113",-0.063,0.0042,0.0,idrotm[201],"ONLY");
3420 gMC->Gspos("I116",1,"I113",0.0,0.0042,0.0,0,"ONLY");
3421 gMC->Gspos("I111",1,"I113",-0.1318,-0.0008,0.0,idrotm[204],"ONLY");
3422 gMC->Gspos("I112",1,"I113",-0.25,0.02,0.0,idrotm[203],"ONLY");
3423 gMC->Gspos("I101",1,"I103",-0.088,ddet1,0.0,0,"ONLY");
3424 gMC->Gspos("I102",1,"I103",0.0,-dchip1,-2.8,0,"ONLY");
3425 gMC->Gspos("I102",2,"I103",0.0,-dchip1,-1.4,0,"ONLY");
3426 gMC->Gspos("I102",3,"I103",0.0,-dchip1,0.0,0,"ONLY");
3427 gMC->Gspos("I102",4,"I103",0.0,-dchip1,1.4,0,"ONLY");
3428 gMC->Gspos("I102",5,"I103",0.0,-dchip1,2.8,0,"ONLY");
3429 gMC->Gspos("I1D1",1,"I1D3",-0.088,ddet2,0.0,0,"ONLY");
3430 gMC->Gspos("I1D2",1,"I1D3",0.0,-dchip2,-2.8,0,"ONLY");
3431 gMC->Gspos("I1D2",2,"I1D3",0.0,-dchip2,-1.4,0,"ONLY");
3432 gMC->Gspos("I1D2",3,"I1D3",0.0,-dchip2,0.0,0,"ONLY");
3433 gMC->Gspos("I1D2",4,"I1D3",0.0,-dchip2,1.4,0,"ONLY");
3434 gMC->Gspos("I1D2",5,"I1D3",0.0,-dchip2,2.8,0,"ONLY");
3435 gMC->Gspos("I117",1,"I116",0.0,0.0,0.0,0,"ONLY");
3436 gMC->Gspos("ITS1",1,"I101",0.0,0.0,0.0,0,"ONLY");
3437 gMC->Gspos("ITS2",1,"I1D1",0.0,0.0,0.0,0,"ONLY");
3438 gMC->Gspos("I651",1,"IT12",0.0,0.0,26.05,0,"ONLY");
3439 gMC->Gspos("I651",2,"IT12",0.0,0.0,-26.05,0,"ONLY");
3440 gMC->Gspos("I650",16,"IT12",0.0,0.0,22.0,idrotm[1104],"MANY");
3441 gMC->Gspos("I650",20,"IT12",0.0,0.0,22.0,idrotm[1130],"MANY");
3442 gMC->Gspos("I650",18,"IT12",0.0,0.0,22.0,idrotm[1117],"MANY");
3443 gMC->Gspos("I650",1,"IT12",0.0,0.0,22.0,0,"MANY");
3444 gMC->Gspos("I650",4,"IT12",0.0,0.0,22.0,idrotm[1106],"MANY");