]> git.uio.no Git - u/mrichter/AliRoot.git/blame - VZERO/AliVZEROv7.cxx
Fix for bug#59210 (Alex)
[u/mrichter/AliRoot.git] / VZERO / AliVZEROv7.cxx
CommitLineData
1a809d19 1/**************************************************************************
2 * Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. *
3 * *
4 * Author: The ALICE Off-line Project. *
5 * Contributors are mentioned in the code where appropriate. *
6 * *
7 * Permission to use, copy, modify and distribute this software and its *
8 * documentation strictly for non-commercial purposes is hereby granted *
9 * without fee, provided that the above copyright notice appears in all *
10 * copies and that both the copyright notice and this permission notice *
11 * appear in the supporting documentation. The authors make no claims *
12 * about the suitability of this software for any purpose. It is *
13 * provided "as is" without express or implied warranty. *
14 **************************************************************************/
15
16/* $Id$ */
17
18///////////////////////////////////////////////////////////////////////
11ea46b9 19// //
1a809d19 20// (V-zero) detector version 7 as designed by the Lyon and //
21// Mexico groups and Carlos Perez Lara from Pontificia Universidad //
22// Catolica del Peru //
23// All comments should be sent to Brigitte CHEYNIS: //
24// b.cheynis@ipnl.in2p3.fr //
25// Geometry of April 2006 done with ROOT geometrical modeler //
a8b5076e 26// V0R (now V0C) sits between Z values -89.5 and -84.8 cm //
27// V0L (now V0A) sits between Z values +325.0 and +330.0 cm //
1a809d19 28// New coordinate system has been implemented in october 2003 //
11ea46b9 29// Revision of the V0A part by Lizardo Valencia in July 2008 //
1a809d19 30// //
11ea46b9 31///////////////////////////////////////////////////////////////////////
1a809d19 32
33// --- Standard libraries ---
34#include <Riostream.h>
1a809d19 35
36// --- ROOT libraries ---
37#include <TClonesArray.h>
f7a1cc68 38#include <TGeoGlobalMagField.h>
1a809d19 39#include <TMath.h>
1a809d19 40#include <TParticle.h>
f7a1cc68 41#include <TVirtualMC.h>
1a809d19 42
43#include <TGeoManager.h>
268f57b1 44#include <TGeoMatrix.h>
1a809d19 45#include <TGeoMaterial.h>
46#include <TGeoMedium.h>
1a809d19 47#include <TGeoVolume.h>
48#include "TGeoTube.h"
49#include "TGeoArb8.h"
1a809d19 50#include "TGeoCompositeShape.h"
51
52// --- AliRoot header files ---
53#include "AliRun.h"
54#include "AliMC.h"
1a809d19 55#include "AliMagF.h"
56#include "AliVZEROLoader.h"
57#include "AliVZEROdigit.h"
58#include "AliVZEROhit.h"
59#include "AliVZEROv7.h"
60#include "AliLog.h"
7b1a8873 61#include "AliTrackReference.h"
1a809d19 62
63ClassImp(AliVZEROv7)
64
65//_____________________________________________________________________________
0b2bea8b 66AliVZEROv7:: AliVZEROv7():AliVZERO(),
67 fCellId(0),
68 fTrackPosition(),
69 fTrackMomentum(),
70 fV0CHeight1(2.5),
71 fV0CHeight2(4.4),
72 fV0CHeight3(7.4),
73 fV0CHeight4(12.5),
74 fV0CRMin(4.6),
75 fV0CRBox(38.0),
76 fV0CLidThickness(0.30),
77 fV0CCellThickness(2.00),
78 fV0CBoxThickness(4.70),
79 fV0COffsetFibers(1.0),
80 fV0CLightYield(93.75),
81 fV0CLightAttenuation(0.05),
82 fV0CnMeters(15.0),
83 fV0CFibToPhot(0.3),
a32c7883 84 fV0AR0(4.2),
0b2bea8b 85 fV0AR1(7.6),
86 fV0AR2(13.8),
87 fV0AR3(22.7),
88 fV0AR4(41.3),
89 fV0AR5(43.3),
11ea46b9 90 fV0AR6(72.6),
91 fV0AR7(92.0), // Distance from origin to outtermost intersection sector7 and sector8
0b2bea8b 92 fV0ASciWd(2.5),
93 fV0APlaWd(0.5),
94 fV0APlaAl(0.06),
95 fV0AOctWd(0.75),
96 fV0AFraWd(0.2),
97 fV0AOctH1(1.0),
98 fV0AOctH2(2.0),
99 fV0ABasHt(2.0),
100 fV0AFibRd(0.1),
101 fV0APlaEx(4.4),
102 fV0APMBWd(24.6),
103 fV0APMBHt(22.0),
104 fV0APMBTh(7.1),
105 fV0APMBWdW(0.3),
106 fV0APMBHtW(1.0),
107 fV0APMBAng(30.0),
108 fV0APMBThW(0.3),
109 fV0APMTR1(2.44),
110 fV0APMTR2(2.54),
111 fV0APMTR3(2.54),
112 fV0APMTR4(2.70),
113 fV0APMTH(10.0),
114 fV0APMTB(1.0),
e279cdd5 115 fV0AFEEBWd(26.5),
116 fV0AFEEBHt(20.5),
91ae7a77 117 fV0AFEEBTh(7.5),
0b2bea8b 118 fV0AnMeters(fV0AR6*0.01),
119 fV0ALightYield(93.75),
a8b5076e 120 fV0ALightAttenuation(0.05),
0b2bea8b 121 fV0AFibToPhot(0.3),
122 fVersion(7)
1a809d19 123{
124// Standard default constructor
125}
126
127//_____________________________________________________________________________
0b2bea8b 128AliVZEROv7::AliVZEROv7(const char *name, const char *title):AliVZERO(name,title),
129 fCellId(0),
130 fTrackPosition(),
131 fTrackMomentum(),
132 fV0CHeight1(2.5),
133 fV0CHeight2(4.4),
134 fV0CHeight3(7.4),
135 fV0CHeight4(12.5),
136 fV0CRMin(4.6),
137 fV0CRBox(38.0),
138 fV0CLidThickness(0.30),
139 fV0CCellThickness(2.00),
140 fV0CBoxThickness(4.70),
141 fV0COffsetFibers(1.0),
142 fV0CLightYield(93.75),
143 fV0CLightAttenuation(0.05),
144 fV0CnMeters(15.0),
145 fV0CFibToPhot(0.3),
91ae7a77 146 fV0AR0(4.2),
0b2bea8b 147 fV0AR1(7.6),
148 fV0AR2(13.8),
149 fV0AR3(22.7),
150 fV0AR4(41.3),
151 fV0AR5(43.3),
11ea46b9 152 fV0AR6(72.6),
153 fV0AR7(92.0), // Distance from origin to outtermost intersection of sector7 and sector8
0b2bea8b 154 fV0ASciWd(2.5),
155 fV0APlaWd(0.5),
156 fV0APlaAl(0.06),
157 fV0AOctWd(0.75),
158 fV0AFraWd(0.2),
159 fV0AOctH1(1.0),
160 fV0AOctH2(2.0),
161 fV0ABasHt(2.0),
162 fV0AFibRd(0.1),
163 fV0APlaEx(4.4),
164 fV0APMBWd(24.6),
165 fV0APMBHt(22.0),
166 fV0APMBTh(7.1),
167 fV0APMBWdW(0.3),
168 fV0APMBHtW(1.0),
169 fV0APMBAng(30.0),
170 fV0APMBThW(0.3),
171 fV0APMTR1(2.44),
172 fV0APMTR2(2.54),
173 fV0APMTR3(2.54),
174 fV0APMTR4(2.70),
175 fV0APMTH(10.0),
176 fV0APMTB(1.0),
e279cdd5 177 fV0AFEEBWd(26.5),
178 fV0AFEEBHt(20.5),
91ae7a77 179 fV0AFEEBTh(7.5),
0b2bea8b 180 fV0AnMeters(fV0AR6*0.01),
181 fV0ALightYield(93.75),
182 fV0ALightAttenuation(0.05),
183 fV0AFibToPhot(0.3),
184 fVersion(7)
185
186
1a809d19 187{
188// Standard constructor for V-zero Detector version 7
189
190 AliDebug(2,"Create VZERO object ");
0b2bea8b 191
192// fVersion = 7; // version number
193
194// // V0C Parameters related to geometry: All in cm
195// fV0CHeight1 = 2.5; // height of cell 1
196// fV0CHeight2 = 4.4; // height of cell 2
197// fV0CHeight3 = 7.4; // height of cell 3
198// fV0CHeight4 = 12.5; // height of cell 4
199// fV0CRMin = 4.6; // inner radius of box
200// fV0CRBox = 38.0; // outer radius of box
201// fV0CLidThickness = 0.30; // thickness of Carbon lid
202// fV0CCellThickness = 2.00; // thickness of elementary cell
203// fV0CBoxThickness = 4.70; // thickness of V0C Box
204// fV0COffsetFibers = 1.0; // offset to output fibers
205// // V0C Parameters related to light output
206// fV0CLightYield = 93.75; // Light yield in BC408 (93.75 eV per photon)
207// fV0CLightAttenuation = 0.05; // Light attenuation in fiber (0.05 per meter)
208// fV0CnMeters = 15.0; // Number of meters of clear fibers to PM
209// fV0CFibToPhot = 0.3; // Attenuation at fiber-photocathode interface
210//
211// // V0A Parameters related to geometry: All in cm
212// fV0AR0 = 4.2; // Radius of hole
213// fV0AR1 = 7.6; // Maximun radius of 1st cell
214// fV0AR2 = 13.8; // Maximun radius of 2nd cell
215// fV0AR3 = 22.7; // Maximun radius of 3rd cell
216// fV0AR4 = 41.3; // Maximun radius of 4th cell
217// fV0AR5 = 43.3; // Radius circunscrite to innermost octagon
218// fV0AR6 = 68.0; // Radius circunscrite to outtermost octagon
219// fV0ASciWd = 2.5; // Scintillator thickness
220// fV0APlaWd = 0.5; // Plates thinckness
221// fV0APlaAl = 0.06; // Plates AlMg3 thinckness
222// fV0AOctWd = 0.75; // Innermost octagon thickness
223// fV0AOctH1 = 1.0; // Height of innermost octagon
224// fV0AOctH2 = 2.0; // Height of outtermost octagon
225// fV0AFibRd = 0.1; // Radius of Fiber
226// fV0AFraWd = 0.2; // Support Frame thickness
227// fV0APMBWd = 24.6; // Width of PM Box
228// fV0APMBHt = 22.0; // Height of PM Box
229// fV0APMBTh = 7.1; // Thickness of PM Box
230// fV0APMBWdW = 0.3; // Thickness of PM Box Side1 Wall
231// fV0APMBHtW = 1.0; // Thickness of PM Box Side2 Wall
232// fV0APMBThW = 0.3; // Thickness of PM Box Top Wall
233// fV0APMBAng = 30.0; // Angle between PM Box and Support
234// fV0APMTR1 = 2.44; // PMT Glass
235// fV0APMTR2 = 2.54; // PMT Glass
236// fV0APMTR3 = 2.54; // PMT Cover
237// fV0APMTR4 = 2.70; // PMT Cover
238// fV0APMTH = 10.0; // PMT Height
239// fV0APMTB = 1.0; // PMT Basis
240// fV0APlaEx = 4.4; // Plates Extension height
241// fV0ABasHt = 2.0; // Basis Height
242// // V0A Parameters related to light output
243// fV0ALightYield = 93.75; // Light yield in BC404
244// fV0ALightAttenuation = 0.05; // Light attenuation in WLS fiber, per meter
245// fV0AnMeters = fV0AR6*0.01; // Tentative value, in meters
246// fV0AFibToPhot = 0.3; // Attenuation at fiber-photocathode interface
1a809d19 247}
1a809d19 248
1a809d19 249//_____________________________________________________________________________
250void AliVZEROv7::CreateGeometry()
251{
252// Constructs TGeo geometry
253
254 AliDebug(2,"VZERO ConstructGeometry");
255 TGeoVolume *top = gGeoManager->GetVolume("ALIC");
256
257 ///////////////////////////////////////////////////////////////////////////
258 // Construct the geometry of V0C Detector. Brigitte CHEYNIS
259
260 const int kColorVZERO = kGreen;
261 TGeoMedium *medV0CAlu = gGeoManager->GetMedium("VZERO_V0CAlu");
262 TGeoMedium *medV0CCar = gGeoManager->GetMedium("VZERO_V0CCar");
263 TGeoMedium *medV0CSci = gGeoManager->GetMedium("VZERO_V0CSci");
264 TGeoVolume *v0RI = new TGeoVolumeAssembly("V0RI");
265 Float_t heightRight, r4Right;
266 Float_t zdet = 90.0 - 0.5 - fV0CBoxThickness/2.0;
267 heightRight = fV0CHeight1 + fV0CHeight2 + fV0CHeight3 + fV0CHeight4;
268 r4Right = fV0CRMin + heightRight + 3.0*0.2; // 3 spacings of 2mm between rings
269
270 // Creation of carbon lids (3.0 mm thick) to keep V0C box shut :
271 Float_t partube[3];
272 partube[0] = fV0CRMin;
273 partube[1] = fV0CRBox;
274 partube[2] = fV0CLidThickness/2.0;
275 TGeoTube *sV0CA = new TGeoTube("V0CA", partube[0], partube[1], partube[2]);
276 TGeoVolume *v0CA = new TGeoVolume("V0CA",sV0CA,medV0CCar);
277 TGeoTranslation *tr2 = new TGeoTranslation(0.,0., fV0CBoxThickness/2.0-partube[2]);
278 TGeoTranslation *tr3 = new TGeoTranslation(0.,0.,-fV0CBoxThickness/2.0+partube[2]);
279 v0RI->AddNode(v0CA,1,tr2);
280 v0RI->AddNode(v0CA,2,tr3);
281 v0CA->SetLineColor(kYellow);
282
283 // Creation of aluminum rings 3.0 mm thick to maintain the v0RI pieces :
284 partube[0] = fV0CRMin - 0.3;
285 partube[1] = fV0CRMin;
286 partube[2] = fV0CBoxThickness/2.0;
287 TGeoTube *sV0IR = new TGeoTube("V0IR", partube[0], partube[1], partube[2]);
288 TGeoVolume *v0IR = new TGeoVolume("V0IR",sV0IR,medV0CAlu);
289 v0RI->AddNode(v0IR,1,0);
290 v0IR->SetLineColor(kYellow);
291 partube[0] = fV0CRBox;
292 partube[1] = fV0CRBox + 0.3;
293 partube[2] = fV0CBoxThickness/2.0;
294 TGeoTube *sV0ER = new TGeoTube("V0ER", partube[0], partube[1], partube[2]);
295 TGeoVolume *v0ER = new TGeoVolume("V0ER",sV0ER,medV0CAlu);
296 v0RI->AddNode(v0ER,1,0);
297 v0ER->SetLineColor(kYellow);
298
299 // Creation of assembly V0R0 of scintillator cells within one sector
300 TGeoVolume *v0R0 = new TGeoVolumeAssembly("V0R0");
301
302 // Elementary cell of ring 1 - right part - :
303 // (cells of ring 1 will be shifted by 2.0 cm backwards to output fibers)
304 Float_t r1Right = fV0CRMin + fV0CHeight1;
305 Float_t offset = fV0CBoxThickness/2.0 - fV0CLidThickness - fV0CCellThickness/2.0;
306 Float_t partubs[5];
307 partubs[0] = fV0CRMin;
308 partubs[1] = r1Right;
309 partubs[2] = fV0CCellThickness/2.0;
310 partubs[3] = 90.0-22.5;
311 partubs[4] = 135.0-22.5;
312 TGeoTubeSeg *sV0R1 = new TGeoTubeSeg("V0R1", partubs[0], partubs[1], partubs[2],
313 partubs[3], partubs[4]);
314 TGeoVolume *v0R1 = new TGeoVolume("V0R1",sV0R1,medV0CSci);
315 TGeoTranslation *tr4 = new TGeoTranslation(0.,0.,-offset);
316 v0R0->AddNode(v0R1,1,tr4);
317 v0R1->SetLineColor(kColorVZERO);
318
319 // Elementary cell of ring 2 - right part - :
320 // (cells of ring 2 will be shifted by 1.0 cm backwards to output fibers)
321 Float_t r2Right = r1Right + fV0CHeight2;
322 partubs[0] = r1Right; // must be equal to 7.1
323 partubs[1] = r2Right; // must be equal to 11.5
324 TGeoTubeSeg *sV0R2 = new TGeoTubeSeg("V0R2", partubs[0], partubs[1], partubs[2],
325 partubs[3], partubs[4]);
326 TGeoVolume *v0R2 = new TGeoVolume("V0R2",sV0R2,medV0CSci);
327 TGeoTranslation *tr5 = new TGeoTranslation(0.0,0.2,-offset + fV0COffsetFibers);
328 v0R0->AddNode(v0R2,1,tr5);
329 v0R2->SetLineColor(kColorVZERO);
330
331 // Ring 3 - right part - :
332 r2Right = r2Right + 0.2;
333 Float_t r3Right = r2Right + fV0CHeight3;
334 partubs[0] = r2Right; // must be equal to 11.7
335 partubs[1] = r3Right; // must be equal to 19.1
336 partubs[3] = 90.0-22.5;
337 partubs[4] = 112.5-22.5;
338 TGeoTubeSeg *sV0R3 = new TGeoTubeSeg("V0R3", partubs[0], partubs[1], partubs[2],
339 partubs[3], partubs[4]);
340 TGeoVolume *v0R3 = new TGeoVolume("V0R3",sV0R3,medV0CSci);
341 TGeoTranslation *tr6 = new TGeoTranslation(0.,0.2,-offset + 2.0*fV0COffsetFibers);
342 v0R0->AddNode(v0R3,1,tr6);
343 v0R3->SetLineColor(kColorVZERO);
344 partubs[3] = 112.5-22.5;
345 partubs[4] = 135.0-22.5;
346 TGeoTubeSeg *sV0R4 = new TGeoTubeSeg("V0R4", partubs[0], partubs[1], partubs[2],
347 partubs[3], partubs[4]);
348 TGeoVolume *v0R4 = new TGeoVolume("V0R4",sV0R4,medV0CSci);
349 v0R0->AddNode(v0R4,1,tr6);
350 v0R4->SetLineColor(kColorVZERO);
351
352 // Ring 4 - right part - :
353 Float_t x = TMath::ATan(3.5/257.5) * ((180./TMath::Pi()));
354 r3Right = r3Right + 0.2 + 0.2; // + 0.2 because no shift in translation here !!
355 partubs[0] = r3Right; // must be equal to 19.5
356 partubs[1] = r4Right; // must be equal to 32.0
357 partubs[3] = 90.0-22.5+x;
358 partubs[4] = 112.5-22.5-x;
359 TGeoTubeSeg *sV0R5 = new TGeoTubeSeg("V0R5", partubs[0], partubs[1], partubs[2],
360 partubs[3], partubs[4]);
361 TGeoVolume *v0R5 = new TGeoVolume("V0R5",sV0R5,medV0CSci);
362 TGeoTranslation *tr7 = new TGeoTranslation(0.,0.0,-offset + 2.0*fV0COffsetFibers);
363 v0R0->AddNode(v0R5,1,tr7);
364 v0R5->SetLineColor(kColorVZERO);
365 partubs[3] = 112.5-22.5+x;
366 partubs[4] = 135.0-22.5-x;
367 TGeoTubeSeg *sV0R6 = new TGeoTubeSeg("V0R6", partubs[0], partubs[1], partubs[2],
368 partubs[3], partubs[4]);
369 TGeoVolume *v0R6 = new TGeoVolume("V0R6",sV0R6,medV0CSci);
370 v0R0->AddNode(v0R6,1,tr7);
371 v0R6->SetLineColor(kColorVZERO);
372 Float_t phi;
373 Float_t phiDeg= 180./4.;
374 Int_t nsecR = 1; // number of sectors in right part of V0
375 for (phi = 22.5; phi < 360.0; phi = phi + phiDeg) {
376 TGeoRotation *rot1 = new TGeoRotation("rot1", 90.0, +phi, 90., 90.+phi, 0.0, 0.0 );
377 v0RI->AddNode(v0R0,nsecR,rot1);
378 nsecR++;
379 }
380
381 ///////////////////////////////////////////////////////////////////////////
382 // Construct the geometry of V0A Detector. Carlos PEREZ, PUCP
5ff8773f 383 // Revision by Lizardo VALENCIA, UNAM Mexico in July 2008
1a809d19 384
385 const int kV0AColorSci = 5;
386 const int kV0AColorPlaIn = 3;
387 const int kV0AColorPlaOu = 41;
388 const int kV0AColorOct = 7;
389 const int kV0AColorFra = 6;
390 const int kV0AColorFib = 11;
391 const int kV0AColorPMG = 1;
392 const int kV0AColorPMA = 2;
91ae7a77 393 const int kV0AColorFibGlass = 4;
1a809d19 394 TGeoMedium *medV0ASci = gGeoManager->GetMedium("VZERO_V0ASci");
395 TGeoMedium *medV0APlaIn = gGeoManager->GetMedium("VZERO_V0APlaIn");
396 TGeoMedium *medV0APlaOu = gGeoManager->GetMedium("VZERO_V0APlaOu");
91ae7a77 397 TGeoMedium *medV0ASup = gGeoManager->GetMedium("VZERO_V0APMA");
1a809d19 398 TGeoMedium *medV0AFra = gGeoManager->GetMedium("VZERO_V0ALuc");
399 TGeoMedium *medV0AFib = gGeoManager->GetMedium("VZERO_V0AFib");
400 TGeoMedium *medV0APMGlass = gGeoManager->GetMedium("VZERO_V0APMG");
401 TGeoMedium *medV0APMAlum = gGeoManager->GetMedium("VZERO_V0APMA");
91ae7a77 402 TGeoMedium *medV0AFibGlass = gGeoManager->GetMedium("VZERO_V0AFibGlass");
1a809d19 403 double pi = TMath::Pi();
404 double sin225 = TMath::Sin(pi/8.);
405 double cos225 = TMath::Cos(pi/8.);
1a809d19 406 double sin45 = TMath::Sin(pi/4.); // lucky: Sin45=Cos45
11ea46b9 407 double cos45 = TMath::Cos(pi/4.);
5063dd34 408 double v0APts[16];
11ea46b9 409 double sin654 = TMath::Sin(1.14);
410 double cos654 = TMath::Cos(1.14);
f316b8fc 411
91ae7a77 412 //Defining the master volume for V0A
413 TGeoVolume *v0LE = new TGeoVolumeAssembly("V0LE");
414
11ea46b9 415 /// Definition sector 1
91ae7a77 416 TGeoVolume *v0ASec1 = new TGeoVolumeAssembly("V0ASec1");
a8b5076e 417
1a809d19 418 /// For boolean sustraction
91ae7a77 419 double preShapeSec1 = 0.2;
1a809d19 420 for (int i=0;i<2;i++) {
91ae7a77 421 v0APts[0+8*i] = fV0AR0-fV0AFraWd/2.-preShapeSec1; v0APts[1+8*i] = -preShapeSec1;
422 v0APts[2+8*i] = fV0AR0-fV0AFraWd/2.-preShapeSec1; v0APts[3+8*i] = fV0AFraWd/2.;
423 v0APts[4+8*i] = fV0AR4+fV0AFraWd/2.+preShapeSec1; v0APts[5+8*i] = fV0AFraWd/2.;
424 v0APts[6+8*i] = fV0AR4+fV0AFraWd/2.+preShapeSec1; v0APts[7+8*i] = -preShapeSec1;
1a809d19 425 }
91ae7a77 426 new TGeoArb8("sV0ACha1Sec1",fV0ASciWd/1.5,v0APts);
1a809d19 427 for (int i=0;i<2;i++) {
91ae7a77 428 v0APts[0+8*i] = fV0AR0*sin45-preShapeSec1;
429 v0APts[1+8*i] = (fV0AR0-fV0AFraWd)*sin45-preShapeSec1;
430 v0APts[2+8*i] = (fV0AR0-fV0AFraWd/2.)*sin45-preShapeSec1;
5063dd34 431 v0APts[3+8*i] = (fV0AR0-fV0AFraWd/2.)*sin45;
91ae7a77 432 v0APts[4+8*i] = (fV0AR4+fV0AFraWd/2.)*sin45+preShapeSec1;
433 v0APts[5+8*i] = (fV0AR4+fV0AFraWd/2.)*sin45+2.*preShapeSec1;
434 v0APts[6+8*i] = (fV0AR4+fV0AFraWd)*sin45+preShapeSec1;
435 v0APts[7+8*i] = fV0AR4*sin45+preShapeSec1;
1a809d19 436 }
91ae7a77 437 new TGeoArb8("sV0ACha2Sec1", fV0ASciWd/2.+2.*preShapeSec1, v0APts);
438 new TGeoCompositeShape("sV0ACha12Sec1","sV0ACha1Sec1+sV0ACha2Sec1");
439 new TGeoTube("sV0ANail1SciHoleSec1", 0.0, 0.4, 1.65);
440 TGeoTranslation *pos1Sec1 = new TGeoTranslation("pos1Sec1", 42.9, 0.51, 0.0);
441 pos1Sec1->RegisterYourself();
442 new TGeoTube("sV0ANail2SciHoleSec1", 0.0, 0.4, 1.65);
443 TGeoTranslation *pos2Sec1 = new TGeoTranslation("pos2Sec1", 30.73,29.98,0.0);
444 pos2Sec1->RegisterYourself();
445 new TGeoCompositeShape("sV0ANailsSciHolesSec1","sV0ANail1SciHoleSec1:pos1Sec1+sV0ANail2SciHoleSec1:pos2Sec1");
446 new TGeoCompositeShape("sV0AChaSec1","sV0ACha12Sec1+sV0ANailsSciHolesSec1");
447 new TGeoTubeSeg("sV0AFicR5Sec1", fV0AR4+fV0AFraWd/2., fV0AR4 + fV0AR0, fV0ASciWd/2.+2*preShapeSec1, 0, 45);
448 new TGeoBBox("sV0AFicFEEBSec1", fV0AFEEBWd/2., fV0AFEEBHt/2., fV0AFEEBTh/2.);
449 TGeoRotation *rot = new TGeoRotation("rot");
450 rot->RotateX(90);
451 rot->RotateZ(-90.0);
452 double FEEshiftR2Sec1 = fV0AR6 + fV0AOctH2 + fV0APlaAl;
453 TGeoCombiTrans *posFicFEEBSec1 = new TGeoCombiTrans("posFicFEEBSec1", FEEshiftR2Sec1*cos225 + 2.0, 0, 7.5, rot);
454 posFicFEEBSec1->RegisterYourself();
455 rot = new TGeoRotation("rot");
456 rot->RotateX(90);
457 rot->RotateZ(-90.0+45.0);
458 TGeoCombiTrans *posFicFEEBUpSec1 = new TGeoCombiTrans("posFicFEEBUpSec1", (FEEshiftR2Sec1*cos225 + 2.0 )*cos45, (FEEshiftR2Sec1*cos225 + 2.0 )*sin45, 7.5, rot);
459 posFicFEEBUpSec1->RegisterYourself();
460 for (int i=0;i<2;i++) {
461 v0APts[0+8*i] = fV0AOctH2/2.; v0APts[1+8*i] = fV0AFEEBHt/2. + 2.5;
462 v0APts[2+8*i] = fV0AOctH2/2.; v0APts[3+8*i] = -fV0AFEEBHt/2.- 2.5;
463 v0APts[4+8*i] = -fV0AOctH2/2.; v0APts[5+8*i] = -fV0AFEEBHt/2.- 2.5;
464 v0APts[6+8*i] = -fV0AOctH2/2.; v0APts[7+8*i] = fV0AFEEBHt/2.+ 2.5;
465 }
466 new TGeoArb8("sV0AFicOct2Sec1", (fV0ASciWd+2*fV0AOctWd)/2., v0APts);
467 TGeoTranslation *posFicOct2Sec1 = new TGeoTranslation("posFicOct2Sec1",(FEEshiftR2Sec1*cos225 + 2.0) - fV0AFEEBTh/2. - 1.0,0.0,0.0);
468 posFicOct2Sec1->RegisterYourself();
469 rot = new TGeoRotation("rot");
470 rot->RotateZ(-90.0+45.0+90.0);
471 TGeoCombiTrans *posFicOct2UpSec1 = new TGeoCombiTrans("posFicOct2UpSec1",((FEEshiftR2Sec1*cos225 + 2.0) - fV0AFEEBTh/2. - 1.0)*cos45,((FEEshiftR2Sec1*cos225 + 2.0) - fV0AFEEBTh/2. - 1.0)*sin45,0.0,rot);
472 posFicOct2UpSec1->RegisterYourself();
473
1a809d19 474 /// Frame
91ae7a77 475 TGeoVolume *v0AFraSec1 = new TGeoVolumeAssembly("V0AFraSec1");
1a809d19 476 for (int i=0;i<2;i++) {
5063dd34 477 v0APts[0+8*i] = fV0AR0-fV0AFraWd/2.; v0APts[1+8*i] = 0.;
478 v0APts[2+8*i] = fV0AR0-fV0AFraWd/2.; v0APts[3+8*i] = fV0AFraWd/2.;
479 v0APts[4+8*i] = fV0AR4+fV0AFraWd/2.; v0APts[5+8*i] = fV0AFraWd/2.;
480 v0APts[6+8*i] = fV0AR4+fV0AFraWd/2.; v0APts[7+8*i] = 0.;
1a809d19 481 }
91ae7a77 482 TGeoArb8 *sV0AFraB1Sec1 = new TGeoArb8("sV0AFraB1Sec1",fV0ASciWd/2.,v0APts);
483 TGeoVolume *v0AFraB1Sec1 = new TGeoVolume("V0AFraB1Sec1",sV0AFraB1Sec1,medV0AFra);
1a809d19 484 for (int i=0;i<2;i++) {
5063dd34 485 v0APts[0+8*i] = fV0AR0*sin45;
486 v0APts[1+8*i] = (fV0AR0-fV0AFraWd)*sin45;
487 v0APts[2+8*i] = (fV0AR0-fV0AFraWd/2.)*sin45;
488 v0APts[3+8*i] = (fV0AR0-fV0AFraWd/2.)*sin45;
489 v0APts[4+8*i] = (fV0AR4+fV0AFraWd/2.)*sin45;
490 v0APts[5+8*i] = (fV0AR4+fV0AFraWd/2.)*sin45;
491 v0APts[6+8*i] = (fV0AR4+fV0AFraWd)*sin45;
492 v0APts[7+8*i] = fV0AR4*sin45;
1a809d19 493 }
91ae7a77 494 TGeoArb8 *sV0AFraB2Sec1 = new TGeoArb8("sV0AFraB2Sec1", fV0ASciWd/2., v0APts);
495 TGeoVolume *v0AFraB2Sec1 = new TGeoVolume("V0AFraB2Sec1",sV0AFraB2Sec1,medV0AFra);
496 v0AFraB1Sec1->SetLineColor(kV0AColorFra); v0AFraB2Sec1->SetLineColor(kV0AColorFra);
497 v0AFraSec1->AddNode(v0AFraB1Sec1,1);
498 v0AFraSec1->AddNode(v0AFraB2Sec1,1);
499 new TGeoTubeSeg( "sV0AFraR1bSec1", fV0AR0-fV0AFraWd/2.,
1a809d19 500 fV0AR0+fV0AFraWd/2., fV0ASciWd/2., 0, 45);
91ae7a77 501 new TGeoTubeSeg( "sV0AFraR2bSec1", fV0AR1-fV0AFraWd/2.,
1a809d19 502 fV0AR1+fV0AFraWd/2., fV0ASciWd/2., 0, 45);
91ae7a77 503 new TGeoTubeSeg( "sV0AFraR3bSec1", fV0AR2-fV0AFraWd/2.,
1a809d19 504 fV0AR2+fV0AFraWd/2., fV0ASciWd/2., 0, 45);
91ae7a77 505 new TGeoTubeSeg( "sV0AFraR4bSec1", fV0AR3-fV0AFraWd/2.,
1a809d19 506 fV0AR3+fV0AFraWd/2., fV0ASciWd/2., 0, 45);
91ae7a77 507 new TGeoTubeSeg( "sV0AFraR5bSec1", fV0AR4-fV0AFraWd/2.,
1a809d19 508 fV0AR4+fV0AFraWd/2., fV0ASciWd/2., 0, 45);
91ae7a77 509 TGeoCompositeShape *sV0AFraR1Sec1 = new TGeoCompositeShape("sV0AFraR1Sec1","sV0AFraR1bSec1-sV0AChaSec1");
510 TGeoCompositeShape *sV0AFraR2Sec1 = new TGeoCompositeShape("sV0AFraR2Sec1","sV0AFraR2bSec1-sV0AChaSec1");
511 TGeoCompositeShape *sV0AFraR3Sec1 = new TGeoCompositeShape("sV0AFraR3Sec1","sV0AFraR3bSec1-sV0AChaSec1");
512 TGeoCompositeShape *sV0AFraR4Sec1 = new TGeoCompositeShape("sV0AFraR4Sec1","sV0AFraR4bSec1-sV0AChaSec1");
513 TGeoCompositeShape *sV0AFraR5Sec1 = new TGeoCompositeShape("sV0AFraR5Sec1","sV0AFraR5bSec1-sV0AChaSec1");
514 TGeoVolume *v0AFraR1Sec1 = new TGeoVolume("V0AFraR1Sec1",sV0AFraR1Sec1,medV0AFra);
515 TGeoVolume *v0AFraR2Sec1 = new TGeoVolume("V0AFraR2Sec1",sV0AFraR2Sec1,medV0AFra);
516 TGeoVolume *v0AFraR3Sec1 = new TGeoVolume("V0AFraR3Sec1",sV0AFraR3Sec1,medV0AFra);
517 TGeoVolume *v0AFraR4Sec1 = new TGeoVolume("V0AFraR4Sec1",sV0AFraR4Sec1,medV0AFra);
518 TGeoVolume *v0AFraR5Sec1 = new TGeoVolume("V0AFraR5Sec1",sV0AFraR5Sec1,medV0AFra);
519 v0AFraR1Sec1->SetLineColor(kV0AColorFra); v0AFraR2Sec1->SetLineColor(kV0AColorFra);
520 v0AFraR3Sec1->SetLineColor(kV0AColorFra); v0AFraR4Sec1->SetLineColor(kV0AColorFra);
521 v0AFraR5Sec1->SetLineColor(kV0AColorFra);
522 v0AFraSec1->AddNode(v0AFraR1Sec1,1);
523 v0AFraSec1->AddNode(v0AFraR2Sec1,1);
524 v0AFraSec1->AddNode(v0AFraR3Sec1,1);
525 v0AFraSec1->AddNode(v0AFraR4Sec1,1);
526 v0AFraSec1->AddNode(v0AFraR5Sec1,1);
527 v0ASec1->AddNode(v0AFraSec1,1);
a32c7883 528
1a809d19 529 /// Sensitive scintilator
91ae7a77 530 TGeoVolume *v0ASciSec1 = new TGeoVolumeAssembly("V0ASciSec1");
531 new TGeoTubeSeg( "sV0AR1bSec1", fV0AR0+fV0AFraWd/2.,
1a809d19 532 fV0AR1-fV0AFraWd/2., fV0ASciWd/2., 0, 45);
91ae7a77 533 new TGeoTubeSeg( "sV0AR2bSec1", fV0AR1+fV0AFraWd/2.,
1a809d19 534 fV0AR2-fV0AFraWd/2., fV0ASciWd/2., 0, 45);
91ae7a77 535 new TGeoTubeSeg( "sV0AR3bSec1", fV0AR2+fV0AFraWd/2.,
1a809d19 536 fV0AR3-fV0AFraWd/2., fV0ASciWd/2., 0, 45);
91ae7a77 537 new TGeoTubeSeg( "sV0AR4bSec1", fV0AR3+fV0AFraWd/2.,
1a809d19 538 fV0AR4-fV0AFraWd/2., fV0ASciWd/2., 0, 45);
91ae7a77 539 TGeoCompositeShape *sV0AR1Sec1 = new TGeoCompositeShape("sV0AR1Sec1","sV0AR1bSec1-sV0AChaSec1");
540 TGeoCompositeShape *sV0AR2Sec1 = new TGeoCompositeShape("sV0AR2Sec1","sV0AR2bSec1-sV0AChaSec1");
541 TGeoCompositeShape *sV0AR3Sec1 = new TGeoCompositeShape("sV0AR3Sec1","sV0AR3bSec1-sV0AChaSec1");
542 TGeoCompositeShape *sV0AR4Sec1 = new TGeoCompositeShape("sV0AR4Sec1","sV0AR4bSec1-sV0AChaSec1");
543 TGeoVolume *v0L1Sec1 = new TGeoVolume("V0L1Sec1",sV0AR1Sec1,medV0ASci);
544 TGeoVolume *v0L2Sec1 = new TGeoVolume("V0L2Sec1",sV0AR2Sec1,medV0ASci);
545 TGeoVolume *v0L3Sec1 = new TGeoVolume("V0L3Sec1",sV0AR3Sec1,medV0ASci);
546 TGeoVolume *v0L4Sec1 = new TGeoVolume("V0L4Sec1",sV0AR4Sec1,medV0ASci);
547 v0L1Sec1->SetLineColor(kV0AColorSci); v0L2Sec1->SetLineColor(kV0AColorSci);
548 v0L3Sec1->SetLineColor(kV0AColorSci); v0L4Sec1->SetLineColor(kV0AColorSci);
549 v0ASec1->AddNode(v0L1Sec1,1);
550 v0ASec1->AddNode(v0L2Sec1,1);
551 v0ASec1->AddNode(v0L3Sec1,1);
552 v0ASec1->AddNode(v0L4Sec1,1);
11ea46b9 553
a8b5076e 554 /// Segment of octagon
1a809d19 555 for (int i=0;i<2;i++) {
91ae7a77 556 v0APts[0+8*i] = fV0AR6-fV0AOctH2; v0APts[1+8*i] = 0.;
11ea46b9 557 v0APts[2+8*i] = (fV0AR6-fV0AOctH2)*sin45; v0APts[3+8*i] = (fV0AR6-fV0AOctH2)*sin45;
91ae7a77 558 v0APts[4+8*i] = fV0AR6*sin45; v0APts[5+8*i] = fV0AR6*sin45;
559 v0APts[6+8*i] = fV0AR6; v0APts[7+8*i] = 0.;
1a809d19 560 }
91ae7a77 561 new TGeoArb8("sV0AOct2Sec1", (fV0ASciWd+2*fV0AOctWd)/2., v0APts);
562 TGeoCompositeShape *sV0AOct2FEEBSec1 = new TGeoCompositeShape("sV0AOct2FEEBSec1","sV0AOct2Sec1-sV0AFicFEEBSec1:posFicFEEBSec1-sV0AFicFEEBSec1:posFicFEEBUpSec1-sV0AFicOct2Sec1:posFicOct2Sec1-sV0AFicOct2Sec1:posFicOct2UpSec1");
563 TGeoVolume *v0AOct2Sec1 = new TGeoVolume("V0AOct2Sec1", sV0AOct2FEEBSec1,medV0ASup);
564 v0AOct2Sec1->SetLineColor(kV0AColorOct);
565 TGeoVolume *v0ASupSec1 = new TGeoVolumeAssembly("V0ASupSec1");
566 v0ASupSec1->AddNode(v0AOct2Sec1,1);
567 v0ASec1->AddNode(v0ASupSec1,1);
1a809d19 568
11ea46b9 569 //Bunch of fibers
a8b5076e 570 v0APts[ 0] = v0APts[ 2] = -13.0;
5063dd34 571 v0APts[ 1] = v0APts[ 7] = (fV0ASciWd+fV0AOctWd)/2.-0.01;
572 v0APts[ 3] = v0APts[ 5] = (fV0ASciWd+fV0AOctWd)/2.+0.01;
a8b5076e 573 v0APts[ 4] = v0APts[ 6] = +13.0;
11ea46b9 574 v0APts[ 8] = v0APts[10] = -10.0;
5063dd34 575 v0APts[ 9] = v0APts[15] = 0.;
576 v0APts[11] = v0APts[13] = 0.25;
11ea46b9 577 v0APts[12] = v0APts[14] = +10.0;
91ae7a77 578 new TGeoArb8("sV0AFib1Sec1", 11.5, v0APts);
579 rot = new TGeoRotation("rot");
1a809d19 580 rot->RotateX(-90);
581 rot->RotateZ(-90.+22.5);
91ae7a77 582 TGeoCombiTrans *fibpos1Sec1 = new TGeoCombiTrans("fibpos1Sec1", (fV0AR6-fV0AOctH2+fV0AR5)*cos225/2. - 3.8, (fV0AR6-fV0AOctH2+fV0AR5)*sin225/2.-1.8, 0, rot);
583 fibpos1Sec1->RegisterYourself();
584 TGeoCompositeShape *sV0AFib1HoleSec1 = new TGeoCompositeShape("sV0AFib1HoleSec1","sV0AFib1Sec1:fibpos1Sec1-sV0AFicR5Sec1");
585 TGeoVolume *v0AFib1HoleSec1 = new TGeoVolume("V0AFib1HoleSec1",sV0AFib1HoleSec1,medV0AFib);
586 v0AFib1HoleSec1->SetLineColor(kV0AColorFib);
587 new TGeoArb8("sV0AFib2Sec1", 11.5, v0APts);
1a809d19 588 rot = new TGeoRotation("rot");
589 rot->RotateX(-90);
590 rot->RotateY(180);
591 rot->RotateZ(-90.+22.5);
91ae7a77 592 TGeoCombiTrans *fibpos2Sec1 = new TGeoCombiTrans("fibpos2Sec1", (fV0AR6-fV0AOctH2+fV0AR5)*cos225/2. - 3.8, (fV0AR6-fV0AOctH2+fV0AR5)*sin225/2.-1.8, 0, rot);
593 fibpos2Sec1->RegisterYourself();
594 TGeoCompositeShape *sV0AFib2HoleSec1 = new TGeoCompositeShape("sV0AFib2HoleSec1","sV0AFib2Sec1:fibpos2Sec1-sV0AFicR5Sec1");
595 TGeoVolume *v0AFib2HoleSec1 = new TGeoVolume("V0AFib2HoleSec1",sV0AFib2HoleSec1,medV0AFib);
596 v0AFib2HoleSec1->SetLineColor(kV0AColorFib);
597 TGeoVolume *v0AFibSec1 = new TGeoVolumeAssembly("V0AFibSec1");
598 v0AFibSec1->AddNode(v0AFib1HoleSec1,1);
599 v0AFibSec1->AddNode(v0AFib2HoleSec1,1);
600 v0ASec1->AddNode(v0AFibSec1,1);
11ea46b9 601
a8b5076e 602 /// Plates
91ae7a77 603 new TGeoTube("sV0ANail1PlaInHoleSec1", 0.0, 0.4, (fV0APlaWd-2*fV0APlaAl)/2.);
604 new TGeoTube("sV0ANail2PlaInHoleSec1", 0.0, 0.4, (fV0APlaWd-2*fV0APlaAl)/2.);
605 new TGeoCompositeShape("sV0ANailsPlaInHolesSec1","sV0ANail1PlaInHoleSec1:pos1Sec1+sV0ANail2PlaInHoleSec1:pos2Sec1");
606 new TGeoTube("sV0ANail1PlaOuHoleSec1", 0.0, 0.4, (fV0APlaAl)/2.);
607 new TGeoTube("sV0ANail2PlaOuHoleSec1", 0.0, 0.4, (fV0APlaAl)/2.);
608 new TGeoCompositeShape("sV0ANailsPlaOuHolesSec1","sV0ANail1PlaOuHoleSec1:pos1Sec1+sV0ANail2PlaOuHoleSec1:pos2Sec1");
1a809d19 609 for (int i=0;i<2;i++) {
5063dd34 610 v0APts[0+8*i] = fV0AR0; v0APts[1+8*i] = 0.;
611 v0APts[2+8*i] = fV0AR0*sin45; v0APts[3+8*i] = fV0AR0*sin45;
11ea46b9 612 v0APts[4+8*i] = fV0AR6 * sin45; v0APts[5+8*i] = fV0AR6*sin45;
613 v0APts[6+8*i] = fV0AR6; v0APts[7+8*i] = 0.;
1a809d19 614 }
91ae7a77 615 new TGeoArb8("sV0APlaInSec1", (fV0APlaWd-2*fV0APlaAl)/2., v0APts);
616 TGeoCompositeShape *sV0APlaInNailsHolesSec1 = new TGeoCompositeShape("sV0APlaInNailsHolesSec1","sV0APlaInSec1-sV0ANailsPlaInHolesSec1-sV0AFicFEEBSec1:posFicFEEBSec1-sV0AFicFEEBSec1:posFicFEEBUpSec1");
617 TGeoVolume *v0APlaInNailsHolesSec1 = new TGeoVolume("V0APlaInNailsHolesSec1", sV0APlaInNailsHolesSec1, medV0APlaIn);
618 new TGeoArb8("sV0APlaOuSec1", fV0APlaAl/2., v0APts);
619 TGeoCompositeShape *sV0APlaOuNailsHolesSec1 = new TGeoCompositeShape("sV0APlaOuNailsHolesSec1","sV0APlaOuSec1-sV0ANailsPlaOuHolesSec1-sV0AFicFEEBSec1:posFicFEEBSec1-sV0AFicFEEBSec1:posFicFEEBUpSec1");
620 TGeoVolume *v0APlaOuNailsHolesSec1 = new TGeoVolume("V0APlaOuNailsHolesSec1", sV0APlaOuNailsHolesSec1, medV0APlaOu);
621 v0APlaInNailsHolesSec1->SetLineColor(kV0AColorPlaIn); v0APlaOuNailsHolesSec1->SetLineColor(kV0AColorPlaOu);
622 TGeoVolume *v0APlaSec1 = new TGeoVolumeAssembly("V0APlaSec1");
623 v0APlaSec1->AddNode(v0APlaInNailsHolesSec1,1);
624 v0APlaSec1->AddNode(v0APlaOuNailsHolesSec1,1,new TGeoTranslation(0,0,(fV0APlaWd-fV0APlaAl)/2.));
625 v0APlaSec1->AddNode(v0APlaOuNailsHolesSec1,2,new TGeoTranslation(0,0,-(fV0APlaWd-fV0APlaAl)/2.));
626 v0ASec1->AddNode(v0APlaSec1,1,new TGeoTranslation(0,0,(fV0ASciWd+2*fV0AOctWd+fV0APlaWd)/2.));
627 v0ASec1->AddNode(v0APlaSec1,2,new TGeoTranslation(0,0,-(fV0ASciWd+2*fV0AOctWd+fV0APlaWd)/2.));
a8b5076e 628
629 /// Non-sensitive scintilator
91ae7a77 630 new TGeoTubeSeg("sV0AR5S2Sec1", fV0AR4+fV0AFraWd/2., fV0AR4 + fV0AR0, fV0ASciWd/2.+2*preShapeSec1, 0, 45);
631 TGeoCompositeShape *sV0AR5Sec1 = new TGeoCompositeShape("V0AR5Sec1","sV0AR5S2Sec1 - sV0AChaSec1");
632 TGeoVolume *v0AR5Sec1 = new TGeoVolume("V0AR5Sec1",sV0AR5Sec1,medV0ASci);
633 v0AR5Sec1->SetLineColor(kV0AColorSci);
634 v0ASciSec1->AddNode(v0AR5Sec1,1);
635 v0ASec1->AddNode(v0ASciSec1,1);
636
637 /// PMBox
638 TGeoVolume* v0APMSec1 = new TGeoVolumeAssembly("V0APMSec1");
639 new TGeoBBox("sV0APMB1Sec1", fV0APMBWd/2., fV0APMBHt/2., fV0APMBTh/2.);
640 new TGeoBBox("sV0APMB2Sec1", fV0APMBWd/2.-fV0APMBWdW, fV0APMBHt/2.-fV0APMBHtW, fV0APMBTh/2.-fV0APMBThW);
641 TGeoCompositeShape *sV0APMBSec1 = new TGeoCompositeShape("sV0APMBSec1","sV0APMB1Sec1-sV0APMB2Sec1");
642 TGeoVolume *v0APMBSec1 = new TGeoVolume("V0APMBSec1",sV0APMBSec1, medV0APMAlum);
643 v0APMBSec1->SetLineColor(kV0AColorPMA);
644 v0APMSec1->AddNode(v0APMBSec1,1);
645
646 /// PMTubes
647 TGeoTube *sV0APMT1Sec1 = new TGeoTube("sV0APMT1Sec1", fV0APMTR1, fV0APMTR2, fV0APMTH/2.);
648 TGeoVolume *v0APMT1Sec1 = new TGeoVolume("V0APMT1Sec1", sV0APMT1Sec1, medV0APMGlass);
649 TGeoTube *sV0APMT2Sec1 = new TGeoTube("sV0APMT2Sec1", fV0APMTR3, fV0APMTR4, fV0APMTH/2.);
650 TGeoVolume *v0APMT2Sec1 = new TGeoVolume("V0APMT2Sec1", sV0APMT2Sec1, medV0APMAlum);
651 TGeoVolume *v0APMTSec1 = new TGeoVolumeAssembly("V0APMTSec1");
652 TGeoTube *sV0APMTTSec1 = new TGeoTube("sV0APMTTSec1", 0., fV0APMTR4, fV0APMTB/2.);
653 TGeoVolume *v0APMTTSec1 = new TGeoVolume("V0APMTTSec1", sV0APMTTSec1, medV0APMAlum);
654 v0APMT1Sec1->SetLineColor(kV0AColorPMG);
655 v0APMT2Sec1->SetLineColor(kV0AColorPMA);
656 v0APMTTSec1->SetLineColor(kV0AColorPMA);
657 rot = new TGeoRotation("rot", 90, 0, 180, 0, 90, 90);
658 v0APMTSec1->AddNode(v0APMT1Sec1,1,rot);
659 v0APMTSec1->AddNode(v0APMT2Sec1,1,rot);
660 v0APMTSec1->AddNode(v0APMTTSec1,1,new TGeoCombiTrans(0,-(fV0APMTH+fV0APMTB)/2.,0,rot));
661 double autoShiftSec1 = (fV0APMBWd-2*fV0APMBWdW)/4.;
662 v0APMSec1->AddNode(v0APMTSec1, 1, new TGeoTranslation(-1.5*autoShiftSec1, 0, 0));
663 v0APMSec1->AddNode(v0APMTSec1, 2, new TGeoTranslation(-0.5*autoShiftSec1, 0, 0));
664 v0APMSec1->AddNode(v0APMTSec1, 3, new TGeoTranslation(+0.5*autoShiftSec1, 0, 0));
665 v0APMSec1->AddNode(v0APMTSec1, 4, new TGeoTranslation(+1.5*autoShiftSec1, 0, 0));
666
667 // PM
668 rot = new TGeoRotation("rot");
669 rot->RotateX(90-fV0APMBAng);
670 rot->RotateZ(-90.+22.5);
671 double cosAngPMBSec1 = TMath::Cos(fV0APMBAng*TMath::DegToRad());
672 double sinAngPMBSec1 = TMath::Sin(fV0APMBAng*TMath::DegToRad());
673 double shiftZSec1 = fV0APMBHt/2. * cosAngPMBSec1
674 - ( fV0ASciWd + 2 * fV0AOctWd + 2 * fV0APlaWd )/2. - fV0APMBTh/2. * sinAngPMBSec1;
675 double shiftRSec1 = fV0AR6 + fV0AOctH2 + fV0APlaAl;
676 v0ASec1->AddNode(v0APMSec1,1, new TGeoCombiTrans( shiftRSec1*cos225+1.07, shiftRSec1*sin225, shiftZSec1, rot));
11ea46b9 677
678 // Aluminium nails
91ae7a77 679 TGeoTube *sV0ANail1Sec1 = new TGeoTube("sV0ANail1Sec1", 0.0, 0.4, 5.09/2.);
680 TGeoVolume *v0ANail1Sec1 = new TGeoVolume("V0ANail1Sec1", sV0ANail1Sec1, medV0APMAlum);
681 v0ANail1Sec1->SetLineColor(kV0AColorPMA);// this is the color for aluminium
682 v0ASec1->AddNode(v0ANail1Sec1,1,new TGeoTranslation(42.9, 0.51, 0.0));
683 TGeoTube *sV0ANail2Sec1 = new TGeoTube("sV0ANail2Sec1", 0.0, 0.4, 5.09/2.);
684 TGeoVolume *v0ANail2Sec1 = new TGeoVolume("V0ANail2Sec1", sV0ANail2Sec1, medV0APMAlum);
685 v0ANail2Sec1->SetLineColor(kV0AColorPMA);
686 v0ASec1->AddNode(v0ANail2Sec1,1,new TGeoTranslation(30.73,29.98,0.0));
a8b5076e 687
91ae7a77 688 /// Adding sector to v0LE volume
689 for(int i=0; i<1; i++) {
aa6dd630 690 TGeoRotation *rotation = new TGeoRotation("rotation", 90., i*45., 90., 90.+i*45., 0., 0.);
91ae7a77 691 v0LE->AddNode(v0ASec1,i+1,rotation);
1a809d19 692 }
91ae7a77 693
694 //Front end electronics for sector 1
695
696 //FEEBox
697 TGeoVolume* v0AFEE = new TGeoVolumeAssembly("V0AFEE");
698 new TGeoBBox("sV0AFEEB1", fV0AFEEBWd/2., fV0AFEEBHt/2., fV0AFEEBTh/2.);
699 new TGeoBBox("sV0AFEEB2", fV0AFEEBWd/2.-fV0APMBWdW, fV0AFEEBHt/2.-fV0APMBHtW, fV0AFEEBTh/2.-fV0APMBThW);
700 TGeoCompositeShape *sV0AFEEB = new TGeoCompositeShape("sV0AFEEB","sV0AFEEB1-sV0AFEEB2");
701 TGeoVolume *v0AFEEB = new TGeoVolume("V0AFEEB",sV0AFEEB, medV0APMAlum);
702 v0AFEEB->SetLineColor(kV0AColorPMA);
703 v0AFEE->AddNode(v0AFEEB,1);
704
705 //Mother and daughter boards
706 for (int i=0;i<2;i++) {
707 v0APts[0+8*i] = -fV0APMBHtW/10.; v0APts[1+8*i] = fV0AFEEBTh/2.-fV0APMTB;
708 v0APts[2+8*i] = fV0APMBHtW/10.; v0APts[3+8*i] = fV0AFEEBTh/2.-fV0APMTB;
709 v0APts[4+8*i] = fV0APMBHtW/10.; v0APts[5+8*i] = -fV0AFEEBTh/2.+fV0APMTB;
710 v0APts[6+8*i] = -fV0APMBHtW/10.; v0APts[7+8*i] = -fV0AFEEBTh/2.+fV0APMTB;
711 }
712 TGeoArb8 *sV0AFEEDaughter = new TGeoArb8("sV0AFEEDaughter", fV0AFEEBTh/2.-fV0APMTB, v0APts);
713 TGeoVolume *v0AFEEDaughter = new TGeoVolume("V0AFEEDaughter", sV0AFEEDaughter, medV0AFibGlass);
714 v0AFEEDaughter->SetLineColor(kV0AColorFibGlass);
715 double spacing = fV0APMBHtW;
716 v0AFEE->AddNode(v0AFEEDaughter, 1, new TGeoTranslation(9.0*spacing, fV0AFEEBTh/2.+2.0*fV0APMTB, fV0APMBHtW/2.));
717 v0AFEE->AddNode(v0AFEEDaughter, 2, new TGeoTranslation(6.0*spacing, fV0AFEEBTh/2.+2.0*fV0APMTB, fV0APMBHtW/2.));
718 v0AFEE->AddNode(v0AFEEDaughter, 3, new TGeoTranslation(3.0*spacing, fV0AFEEBTh/2.+2.0*fV0APMTB, fV0APMBHtW/2.));
719 v0AFEE->AddNode(v0AFEEDaughter, 4, new TGeoTranslation(0.0*spacing, fV0AFEEBTh/2.+2.0*fV0APMTB, fV0APMBHtW/2.));
720 v0AFEE->AddNode(v0AFEEDaughter, 5, new TGeoTranslation(-3.0*spacing, fV0AFEEBTh/2.+2.0*fV0APMTB, fV0APMBHtW/2.));
721 v0AFEE->AddNode(v0AFEEDaughter, 6, new TGeoTranslation(-6.0*spacing, fV0AFEEBTh/2.+2.0*fV0APMTB, fV0APMBHtW/2.));
722 v0AFEE->AddNode(v0AFEEDaughter, 7, new TGeoTranslation(-9.0*spacing, fV0AFEEBTh/2.+2.0*fV0APMTB, fV0APMBHtW/2.));
723 v0AFEE->AddNode(v0AFEEDaughter, 8, new TGeoTranslation(-12.0*spacing, fV0AFEEBTh/2.+2.0*fV0APMTB, fV0APMBHtW/2.));
724 for (int i=0;i<2;i++) {
725 v0APts[0+8*i] = -fV0AFEEBWd/2.+fV0APMBWdW; v0APts[1+8*i] = fV0AFEEBTh+fV0APMTB;
726 v0APts[2+8*i] = fV0AFEEBWd/2.-fV0APMBWdW; v0APts[3+8*i] = fV0AFEEBTh+fV0APMTB;
727 v0APts[4+8*i] = fV0AFEEBWd/2.-fV0APMBWdW; v0APts[5+8*i] = -fV0AFEEBTh-fV0APMTB;
728 v0APts[6+8*i] = -fV0AFEEBWd/2.+fV0APMBWdW; v0APts[7+8*i] = -fV0AFEEBTh-fV0APMTB;
729 }
730 TGeoArb8 *sV0AFEEMother = new TGeoArb8("sV0AFEEMother", fV0APMBHtW/10., v0APts);
731 TGeoVolume *v0AFEEMother = new TGeoVolume("V0AFEEMother", sV0AFEEMother, medV0AFibGlass);
732 v0AFEEMother->SetLineColor(kV0AColorFibGlass);
733 v0AFEE->AddNode(v0AFEEMother, 1, new TGeoTranslation(0.0, 0.0, -fV0AFEEBTh/2.+fV0APMBThW+fV0APMBHtW));
734 for (int i=0;i<2;i++) {
735 v0APts[0+8*i] = -fV0AFEEBWd/2.+fV0APMBWdW; v0APts[1+8*i] = (fV0AFEEBTh+fV0APMTB)/2.;
736 v0APts[2+8*i] = fV0AFEEBWd/2.-fV0APMBWdW; v0APts[3+8*i] = (fV0AFEEBTh+fV0APMTB)/2.;
737 v0APts[4+8*i] = fV0AFEEBWd/2.-fV0APMBWdW; v0APts[5+8*i] = (-fV0AFEEBTh-fV0APMTB)/2.;
738 v0APts[6+8*i] = -fV0AFEEBWd/2.+fV0APMBWdW; v0APts[7+8*i] = (-fV0AFEEBTh-fV0APMTB)/2.;
739 }
740 TGeoArb8 *sV0AFEEHalfMother = new TGeoArb8("sV0AFEEHalfMother", fV0APMBHtW/10., v0APts);
741 TGeoVolume *v0AFEEHalfMother = new TGeoVolume("V0AFEEHalfMother", sV0AFEEHalfMother, medV0AFibGlass);
742 v0AFEEHalfMother->SetLineColor(kV0AColorFibGlass);
743 v0AFEE->AddNode(v0AFEEHalfMother, 1, new TGeoTranslation(0.0, -(fV0AFEEBTh+fV0APMTB)/2., -2.0*spacing));
744
745
746 //FEE
747 rot = new TGeoRotation("rot");
748 rot->RotateX(90);
749 rot->RotateZ(+90.0);
750 double FEEshiftR = fV0AR6 + fV0AOctH2 + fV0APlaAl;
751 v0LE->AddNode(v0AFEE,1, new TGeoCombiTrans( FEEshiftR*cos225+2.0, 0, 7.5, rot));
752 for (int i=0;i<2;i++) {
753 v0APts[0+8*i] = fV0AOctH2/2.; v0APts[1+8*i] = fV0AFEEBHt/2. + 2.5;
754 v0APts[2+8*i] = fV0AOctH2/2.; v0APts[3+8*i] = -fV0AFEEBHt/2.- 2.5;
755 v0APts[4+8*i] = -fV0AOctH2/2.; v0APts[5+8*i] = -fV0AFEEBHt/2.- 2.5;
756 v0APts[6+8*i] = -fV0AOctH2/2.; v0APts[7+8*i] = fV0AFEEBHt/2.+ 2.5;
757 }
758 TGeoArb8 *sV0AFEEOct2 = new TGeoArb8("sV0AFEEOct2", (fV0ASciWd+2*fV0AOctWd)/2., v0APts);
759 TGeoVolume *v0AFEEOct2 = new TGeoVolume("V0AFEEOct2",sV0AFEEOct2, medV0ASup);
760 v0AFEEOct2->SetLineColor(kV0AColorOct);
761 v0LE->AddNode(v0AFEEOct2,1, new TGeoTranslation((FEEshiftR2Sec1*cos225 + 2.0) - fV0AFEEBTh/2. - 1.0,0.0,0.0));
762
763
764 /// Definition sector 2
765 TGeoVolume *v0ASec2 = new TGeoVolumeAssembly("V0ASec2");
766
767 /// For boolean sustraction
768 double preShapeSec2 = 0.2;
769 for (int i=0;i<2;i++) {
770 v0APts[0+8*i] = fV0AR0-fV0AFraWd/2.-preShapeSec2; v0APts[1+8*i] = -preShapeSec2;
771 v0APts[2+8*i] = fV0AR0-fV0AFraWd/2.-preShapeSec2; v0APts[3+8*i] = fV0AFraWd/2.;
772 v0APts[4+8*i] = fV0AR4+fV0AFraWd/2.+preShapeSec2; v0APts[5+8*i] = fV0AFraWd/2.;
773 v0APts[6+8*i] = fV0AR4+fV0AFraWd/2.+preShapeSec2; v0APts[7+8*i] = -preShapeSec2;
774 }
775 new TGeoArb8("sV0ACha1Sec2",fV0ASciWd/1.5,v0APts);
776 for (int i=0;i<2;i++) {
777 v0APts[0+8*i] = fV0AR0*sin45-preShapeSec2;
778 v0APts[1+8*i] = (fV0AR0-fV0AFraWd)*sin45-preShapeSec2;
779 v0APts[2+8*i] = (fV0AR0-fV0AFraWd/2.)*sin45-preShapeSec2;
780 v0APts[3+8*i] = (fV0AR0-fV0AFraWd/2.)*sin45;
781 v0APts[4+8*i] = (fV0AR4+fV0AFraWd/2.)*sin45+preShapeSec2;
782 v0APts[5+8*i] = (fV0AR4+fV0AFraWd/2.)*sin45+2.*preShapeSec2;
783 v0APts[6+8*i] = (fV0AR4+fV0AFraWd)*sin45+preShapeSec2;
784 v0APts[7+8*i] = fV0AR4*sin45+preShapeSec2;
785 }
786 new TGeoArb8("sV0ACha2Sec2", fV0ASciWd/2.+2.*preShapeSec2, v0APts);
787 new TGeoCompositeShape("sV0ACha12Sec2","sV0ACha1Sec2+sV0ACha2Sec2");
788 new TGeoTube("sV0ANail1SciHoleSec2", 0.0, 0.4, 1.65);
789 TGeoTranslation *pos1Sec2 = new TGeoTranslation("pos1Sec2", 42.9, 0.51, 0.0);
790 pos1Sec2->RegisterYourself();
791 new TGeoTube("sV0ANail2SciHoleSec2", 0.0, 0.4, 1.65);
792 TGeoTranslation *pos2Sec2 = new TGeoTranslation("pos2Sec2", 30.73,29.98,0.0);
793 pos2Sec2->RegisterYourself();
794 new TGeoCompositeShape("sV0ANailsSciHolesSec2","sV0ANail1SciHoleSec2:pos1Sec2+sV0ANail2SciHoleSec2:pos2Sec2");
795 new TGeoCompositeShape("sV0AChaSec2","sV0ACha12Sec2+sV0ANailsSciHolesSec2");
796 new TGeoTubeSeg("sV0AFicR5Sec2", fV0AR4+fV0AFraWd/2., fV0AR4 + fV0AR0, fV0ASciWd/2.+2*preShapeSec2, 0, 45);
797 new TGeoBBox("sV0AFicFEEBSec2", fV0AFEEBWd/2., fV0AFEEBHt/2., fV0AFEEBTh/2.);
798 rot = new TGeoRotation("rot");
799 rot->RotateX(90);
800 rot->RotateZ(-90.0);
801 double FEEshiftR2Sec2 = fV0AR6 + fV0AOctH2 + fV0APlaAl;
802 TGeoCombiTrans *posFicFEEBSec2 = new TGeoCombiTrans("posFicFEEBSec2", FEEshiftR2Sec2*cos225 + 2.0, 0, 7.5, rot);
803 posFicFEEBSec2->RegisterYourself();
804 for (int i=0;i<2;i++) {
805 v0APts[0+8*i] = fV0AOctH2/2.; v0APts[1+8*i] = fV0AFEEBHt/2. + 2.5;
806 v0APts[2+8*i] = fV0AOctH2/2.; v0APts[3+8*i] = -fV0AFEEBHt/2.- 2.5;
807 v0APts[4+8*i] = -fV0AOctH2/2.; v0APts[5+8*i] = -fV0AFEEBHt/2.- 2.5;
808 v0APts[6+8*i] = -fV0AOctH2/2.; v0APts[7+8*i] = fV0AFEEBHt/2.+ 2.5;
809 }
810 new TGeoArb8("sV0AFicOct2Sec2", (fV0ASciWd+2*fV0AOctWd)/2., v0APts);
811 TGeoTranslation *posFicOct2Sec2 = new TGeoTranslation("posFicOct2Sec2",(FEEshiftR2Sec2*cos225 + 2.0) - fV0AFEEBTh/2. - 1.0,0.0,0.0);
812 posFicOct2Sec2->RegisterYourself();
813
814 /// Frame
815 TGeoVolume *v0AFraSec2 = new TGeoVolumeAssembly("V0AFraSec2");
816 for (int i=0;i<2;i++) {
817 v0APts[0+8*i] = fV0AR0-fV0AFraWd/2.; v0APts[1+8*i] = 0.;
818 v0APts[2+8*i] = fV0AR0-fV0AFraWd/2.; v0APts[3+8*i] = fV0AFraWd/2.;
819 v0APts[4+8*i] = fV0AR4+fV0AFraWd/2.; v0APts[5+8*i] = fV0AFraWd/2.;
820 v0APts[6+8*i] = fV0AR4+fV0AFraWd/2.; v0APts[7+8*i] = 0.;
821 }
822 TGeoArb8 *sV0AFraB1Sec2 = new TGeoArb8("sV0AFraB1Sec2",fV0ASciWd/2.,v0APts);
823 TGeoVolume *v0AFraB1Sec2 = new TGeoVolume("V0AFraB1Sec2",sV0AFraB1Sec2,medV0AFra);
824 for (int i=0;i<2;i++) {
825 v0APts[0+8*i] = fV0AR0*sin45;
826 v0APts[1+8*i] = (fV0AR0-fV0AFraWd)*sin45;
827 v0APts[2+8*i] = (fV0AR0-fV0AFraWd/2.)*sin45;
828 v0APts[3+8*i] = (fV0AR0-fV0AFraWd/2.)*sin45;
829 v0APts[4+8*i] = (fV0AR4+fV0AFraWd/2.)*sin45;
830 v0APts[5+8*i] = (fV0AR4+fV0AFraWd/2.)*sin45;
831 v0APts[6+8*i] = (fV0AR4+fV0AFraWd)*sin45;
832 v0APts[7+8*i] = fV0AR4*sin45;
833 }
834 TGeoArb8 *sV0AFraB2Sec2 = new TGeoArb8("sV0AFraB2Sec2", fV0ASciWd/2., v0APts);
835 TGeoVolume *v0AFraB2Sec2 = new TGeoVolume("V0AFraB2Sec2",sV0AFraB2Sec2,medV0AFra);
836 v0AFraB1Sec2->SetLineColor(kV0AColorFra); v0AFraB2Sec2->SetLineColor(kV0AColorFra);
837 v0AFraSec2->AddNode(v0AFraB1Sec2,1);
838 v0AFraSec2->AddNode(v0AFraB2Sec2,1);
839 new TGeoTubeSeg( "sV0AFraR1bSec2", fV0AR0-fV0AFraWd/2.,
840 fV0AR0+fV0AFraWd/2., fV0ASciWd/2., 0, 45);
841 new TGeoTubeSeg( "sV0AFraR2bSec2", fV0AR1-fV0AFraWd/2.,
842 fV0AR1+fV0AFraWd/2., fV0ASciWd/2., 0, 45);
843 new TGeoTubeSeg( "sV0AFraR3bSec2", fV0AR2-fV0AFraWd/2.,
844 fV0AR2+fV0AFraWd/2., fV0ASciWd/2., 0, 45);
845 new TGeoTubeSeg( "sV0AFraR4bSec2", fV0AR3-fV0AFraWd/2.,
846 fV0AR3+fV0AFraWd/2., fV0ASciWd/2., 0, 45);
847 new TGeoTubeSeg( "sV0AFraR5bSec2", fV0AR4-fV0AFraWd/2.,
848 fV0AR4+fV0AFraWd/2., fV0ASciWd/2., 0, 45);
849 TGeoCompositeShape *sV0AFraR1Sec2 = new TGeoCompositeShape("sV0AFraR1Sec2","sV0AFraR1bSec2-sV0AChaSec2");
850 TGeoCompositeShape *sV0AFraR2Sec2 = new TGeoCompositeShape("sV0AFraR2Sec2","sV0AFraR2bSec2-sV0AChaSec2");
851 TGeoCompositeShape *sV0AFraR3Sec2 = new TGeoCompositeShape("sV0AFraR3Sec2","sV0AFraR3bSec2-sV0AChaSec2");
852 TGeoCompositeShape *sV0AFraR4Sec2 = new TGeoCompositeShape("sV0AFraR4Sec2","sV0AFraR4bSec2-sV0AChaSec2");
853 TGeoCompositeShape *sV0AFraR5Sec2 = new TGeoCompositeShape("sV0AFraR5Sec2","sV0AFraR5bSec2-sV0AChaSec2");
854 TGeoVolume *v0AFraR1Sec2 = new TGeoVolume("V0AFraR1Sec2",sV0AFraR1Sec2,medV0AFra);
855 TGeoVolume *v0AFraR2Sec2 = new TGeoVolume("V0AFraR2Sec2",sV0AFraR2Sec2,medV0AFra);
856 TGeoVolume *v0AFraR3Sec2 = new TGeoVolume("V0AFraR3Sec2",sV0AFraR3Sec2,medV0AFra);
857 TGeoVolume *v0AFraR4Sec2 = new TGeoVolume("V0AFraR4Sec2",sV0AFraR4Sec2,medV0AFra);
858 TGeoVolume *v0AFraR5Sec2 = new TGeoVolume("V0AFraR5Sec2",sV0AFraR5Sec2,medV0AFra);
859 v0AFraR1Sec2->SetLineColor(kV0AColorFra); v0AFraR2Sec2->SetLineColor(kV0AColorFra);
860 v0AFraR3Sec2->SetLineColor(kV0AColorFra); v0AFraR4Sec2->SetLineColor(kV0AColorFra);
861 v0AFraR5Sec2->SetLineColor(kV0AColorFra);
862 v0AFraSec2->AddNode(v0AFraR1Sec2,1);
863 v0AFraSec2->AddNode(v0AFraR2Sec2,1);
864 v0AFraSec2->AddNode(v0AFraR3Sec2,1);
865 v0AFraSec2->AddNode(v0AFraR4Sec2,1);
866 v0AFraSec2->AddNode(v0AFraR5Sec2,1);
867 v0ASec2->AddNode(v0AFraSec2,1);
868
869 /// Sensitive scintilator
870 TGeoVolume *v0ASciSec2 = new TGeoVolumeAssembly("V0ASciSec2");
871 new TGeoTubeSeg( "sV0AR1bSec2", fV0AR0+fV0AFraWd/2.,
872 fV0AR1-fV0AFraWd/2., fV0ASciWd/2., 0, 45);
873 new TGeoTubeSeg( "sV0AR2bSec2", fV0AR1+fV0AFraWd/2.,
874 fV0AR2-fV0AFraWd/2., fV0ASciWd/2., 0, 45);
875 new TGeoTubeSeg( "sV0AR3bSec2", fV0AR2+fV0AFraWd/2.,
876 fV0AR3-fV0AFraWd/2., fV0ASciWd/2., 0, 45);
877 new TGeoTubeSeg( "sV0AR4bSec2", fV0AR3+fV0AFraWd/2.,
878 fV0AR4-fV0AFraWd/2., fV0ASciWd/2., 0, 45);
879 TGeoCompositeShape *sV0AR1Sec2 = new TGeoCompositeShape("sV0AR1Sec2","sV0AR1bSec2-sV0AChaSec2");
880 TGeoCompositeShape *sV0AR2Sec2 = new TGeoCompositeShape("sV0AR2Sec2","sV0AR2bSec2-sV0AChaSec2");
881 TGeoCompositeShape *sV0AR3Sec2 = new TGeoCompositeShape("sV0AR3Sec2","sV0AR3bSec2-sV0AChaSec2");
882 TGeoCompositeShape *sV0AR4Sec2 = new TGeoCompositeShape("sV0AR4Sec2","sV0AR4bSec2-sV0AChaSec2");
883 TGeoVolume *v0L1Sec2 = new TGeoVolume("V0L1Sec2",sV0AR1Sec2,medV0ASci);
884 TGeoVolume *v0L2Sec2 = new TGeoVolume("V0L2Sec2",sV0AR2Sec2,medV0ASci);
885 TGeoVolume *v0L3Sec2 = new TGeoVolume("V0L3Sec2",sV0AR3Sec2,medV0ASci);
886 TGeoVolume *v0L4Sec2 = new TGeoVolume("V0L4Sec2",sV0AR4Sec2,medV0ASci);
887 v0L1Sec2->SetLineColor(kV0AColorSci); v0L2Sec2->SetLineColor(kV0AColorSci);
888 v0L3Sec2->SetLineColor(kV0AColorSci); v0L4Sec2->SetLineColor(kV0AColorSci);
889 v0ASec2->AddNode(v0L1Sec2,1);
890 v0ASec2->AddNode(v0L2Sec2,1);
891 v0ASec2->AddNode(v0L3Sec2,1);
892 v0ASec2->AddNode(v0L4Sec2,1);
893
894 /// Segment of octagon
895 for (int i=0;i<2;i++) {
896 v0APts[0+8*i] = fV0AR6-fV0AOctH2; v0APts[1+8*i] = 0.;
897 v0APts[2+8*i] = (fV0AR6-fV0AOctH2)*sin45; v0APts[3+8*i] = (fV0AR6-fV0AOctH2)*sin45;
898 v0APts[4+8*i] = fV0AR6*sin45; v0APts[5+8*i] = fV0AR6*sin45;
899 v0APts[6+8*i] = fV0AR6; v0APts[7+8*i] = 0.;
900 }
901 new TGeoArb8("sV0AOct2Sec2", (fV0ASciWd+2*fV0AOctWd)/2., v0APts);
902 TGeoCompositeShape *sV0AOct2FEEBSec2 = new TGeoCompositeShape("sV0AOct2FEEBSec2","sV0AOct2Sec2-sV0AFicFEEBSec2:posFicFEEBSec2-sV0AFicOct2Sec2:posFicOct2Sec2");
903 TGeoVolume *v0AOct2Sec2 = new TGeoVolume("V0AOct2Sec2", sV0AOct2FEEBSec2,medV0ASup);
904 v0AOct2Sec2->SetLineColor(kV0AColorOct);
905 TGeoVolume *v0ASupSec2 = new TGeoVolumeAssembly("V0ASupSec2");
906 v0ASupSec2->AddNode(v0AOct2Sec2,1);
907 v0ASec2->AddNode(v0ASupSec2,1);
908
909 //Bunch of fibers
910 v0APts[ 0] = v0APts[ 2] = -13.0;
911 v0APts[ 1] = v0APts[ 7] = (fV0ASciWd+fV0AOctWd)/2.-0.01;
912 v0APts[ 3] = v0APts[ 5] = (fV0ASciWd+fV0AOctWd)/2.+0.01;
913 v0APts[ 4] = v0APts[ 6] = +13.0;
914 v0APts[ 8] = v0APts[10] = -10.0;
915 v0APts[ 9] = v0APts[15] = 0.;
916 v0APts[11] = v0APts[13] = 0.25;
917 v0APts[12] = v0APts[14] = +10.0;
918 new TGeoArb8("sV0AFib1Sec2", 11.5, v0APts);
919 rot = new TGeoRotation("rot");
920 rot->RotateX(-90);
921 rot->RotateZ(-90.+22.5);
922 TGeoCombiTrans *fibpos1Sec2 = new TGeoCombiTrans("fibpos1Sec2", (fV0AR6-fV0AOctH2+fV0AR5)*cos225/2. - 3.8, (fV0AR6-fV0AOctH2+fV0AR5)*sin225/2.-1.8, 0, rot);
923 fibpos1Sec2->RegisterYourself();
924 TGeoCompositeShape *sV0AFib1HoleSec2 = new TGeoCompositeShape("sV0AFib1HoleSec2","sV0AFib1Sec2:fibpos1Sec2-sV0AFicR5Sec2");
925 TGeoVolume *v0AFib1HoleSec2 = new TGeoVolume("V0AFib1HoleSec2",sV0AFib1HoleSec2,medV0AFib);
926 v0AFib1HoleSec2->SetLineColor(kV0AColorFib);
927 new TGeoArb8("sV0AFib2Sec2", 11.5, v0APts);
928 rot = new TGeoRotation("rot");
929 rot->RotateX(-90);
930 rot->RotateY(180);
931 rot->RotateZ(-90.+22.5);
932 TGeoCombiTrans *fibpos2Sec2 = new TGeoCombiTrans("fibpos2Sec2", (fV0AR6-fV0AOctH2+fV0AR5)*cos225/2. - 3.8, (fV0AR6-fV0AOctH2+fV0AR5)*sin225/2.-1.8, 0, rot);
933 fibpos2Sec2->RegisterYourself();
934 TGeoCompositeShape *sV0AFib2HoleSec2 = new TGeoCompositeShape("sV0AFib2HoleSec2","sV0AFib2Sec2:fibpos2Sec2-sV0AFicR5Sec2");
935 TGeoVolume *v0AFib2HoleSec2 = new TGeoVolume("V0AFib2HoleSec2",sV0AFib2HoleSec2,medV0AFib);
936 v0AFib2HoleSec2->SetLineColor(kV0AColorFib);
937 TGeoVolume *v0AFibSec2 = new TGeoVolumeAssembly("V0AFibSec2");
938 v0AFibSec2->AddNode(v0AFib1HoleSec2,1);
939 v0AFibSec2->AddNode(v0AFib2HoleSec2,1);
940 v0ASec2->AddNode(v0AFibSec2,1);
941
942 /// Plates
943 new TGeoTube("sV0ANail1PlaInHoleSec2", 0.0, 0.4, (fV0APlaWd-2*fV0APlaAl)/2.);
944 new TGeoTube("sV0ANail2PlaInHoleSec2", 0.0, 0.4, (fV0APlaWd-2*fV0APlaAl)/2.);
945 new TGeoCompositeShape("sV0ANailsPlaInHolesSec2","sV0ANail1PlaInHoleSec2:pos1Sec2+sV0ANail2PlaInHoleSec2:pos2Sec2");
946 new TGeoTube("sV0ANail1PlaOuHoleSec2", 0.0, 0.4, (fV0APlaAl)/2.);
947 new TGeoTube("sV0ANail2PlaOuHoleSec2", 0.0, 0.4, (fV0APlaAl)/2.);
948 new TGeoCompositeShape("sV0ANailsPlaOuHolesSec2","sV0ANail1PlaOuHoleSec2:pos1Sec2+sV0ANail2PlaOuHoleSec2:pos2Sec2");
949 for (int i=0;i<2;i++) {
950 v0APts[0+8*i] = fV0AR0; v0APts[1+8*i] = 0.;
951 v0APts[2+8*i] = fV0AR0*sin45; v0APts[3+8*i] = fV0AR0*sin45;
952 v0APts[4+8*i] = fV0AR6 * sin45; v0APts[5+8*i] = fV0AR6*sin45;
953 v0APts[6+8*i] = fV0AR6; v0APts[7+8*i] = 0.;
954 }
955 new TGeoArb8("sV0APlaInSec2", (fV0APlaWd-2*fV0APlaAl)/2., v0APts);
956 TGeoCompositeShape *sV0APlaInNailsHolesSec2 = new TGeoCompositeShape("sV0APlaInNailsHolesSec2","sV0APlaInSec2-sV0ANailsPlaInHolesSec2-sV0AFicFEEBSec2:posFicFEEBSec2");
957 TGeoVolume *v0APlaInNailsHolesSec2 = new TGeoVolume("V0APlaInNailsHolesSec2", sV0APlaInNailsHolesSec2, medV0APlaIn);
958 new TGeoArb8("sV0APlaOuSec2", fV0APlaAl/2., v0APts);
959 TGeoCompositeShape *sV0APlaOuNailsHolesSec2 = new TGeoCompositeShape("sV0APlaOuNailsHolesSec2","sV0APlaOuSec2-sV0ANailsPlaOuHolesSec2-sV0AFicFEEBSec2:posFicFEEBSec2");
960 TGeoVolume *v0APlaOuNailsHolesSec2 = new TGeoVolume("V0APlaOuNailsHolesSec2", sV0APlaOuNailsHolesSec2, medV0APlaOu);
961 v0APlaInNailsHolesSec2->SetLineColor(kV0AColorPlaIn); v0APlaOuNailsHolesSec2->SetLineColor(kV0AColorPlaOu);
962 TGeoVolume *v0APlaSec2 = new TGeoVolumeAssembly("V0APlaSec2");
963 v0APlaSec2->AddNode(v0APlaInNailsHolesSec2,1);
964 v0APlaSec2->AddNode(v0APlaOuNailsHolesSec2,1,new TGeoTranslation(0,0,(fV0APlaWd-fV0APlaAl)/2.));
965 v0APlaSec2->AddNode(v0APlaOuNailsHolesSec2,2,new TGeoTranslation(0,0,-(fV0APlaWd-fV0APlaAl)/2.));
966 v0ASec2->AddNode(v0APlaSec2,1,new TGeoTranslation(0,0,(fV0ASciWd+2*fV0AOctWd+fV0APlaWd)/2.));
967 v0ASec2->AddNode(v0APlaSec2,2,new TGeoTranslation(0,0,-(fV0ASciWd+2*fV0AOctWd+fV0APlaWd)/2.));
968
969 /// Non-sensitive scintilator
970 new TGeoTubeSeg("sV0AR5S2Sec2", fV0AR4+fV0AFraWd/2., fV0AR4 + fV0AR0, fV0ASciWd/2.+2*preShapeSec2, 0, 45);
971 TGeoCompositeShape *sV0AR5Sec2 = new TGeoCompositeShape("V0AR5Sec2","sV0AR5S2Sec2 - sV0AChaSec2");
972 TGeoVolume *v0AR5Sec2 = new TGeoVolume("V0AR5Sec2",sV0AR5Sec2,medV0ASci);
973 v0AR5Sec2->SetLineColor(kV0AColorSci);
974 v0ASciSec2->AddNode(v0AR5Sec2,1);
975 v0ASec2->AddNode(v0ASciSec2,1);
976
977 /// PMBox
978 TGeoVolume* v0APMSec2 = new TGeoVolumeAssembly("V0APMSec2");
979 new TGeoBBox("sV0APMB1Sec2", fV0APMBWd/2., fV0APMBHt/2., fV0APMBTh/2.);
980 new TGeoBBox("sV0APMB2Sec2", fV0APMBWd/2.-fV0APMBWdW, fV0APMBHt/2.-fV0APMBHtW, fV0APMBTh/2.-fV0APMBThW);
981 TGeoCompositeShape *sV0APMBSec2 = new TGeoCompositeShape("sV0APMBSec2","sV0APMB1Sec2-sV0APMB2Sec2");
982 TGeoVolume *v0APMBSec2 = new TGeoVolume("V0APMBSec2",sV0APMBSec2, medV0APMAlum);
983 v0APMBSec2->SetLineColor(kV0AColorPMA);
984 v0APMSec2->AddNode(v0APMBSec2,1);
985
986 /// PMTubes
987 TGeoTube *sV0APMT1Sec2 = new TGeoTube("sV0APMT1Sec2", fV0APMTR1, fV0APMTR2, fV0APMTH/2.);
988 TGeoVolume *v0APMT1Sec2 = new TGeoVolume("V0APMT1Sec2", sV0APMT1Sec2, medV0APMGlass);
989 TGeoTube *sV0APMT2Sec2 = new TGeoTube("sV0APMT2Sec2", fV0APMTR3, fV0APMTR4, fV0APMTH/2.);
990 TGeoVolume *v0APMT2Sec2 = new TGeoVolume("V0APMT2Sec2", sV0APMT2Sec2, medV0APMAlum);
991 TGeoVolume *v0APMTSec2 = new TGeoVolumeAssembly("V0APMTSec2");
992 TGeoTube *sV0APMTTSec2 = new TGeoTube("sV0APMTTSec2", 0., fV0APMTR4, fV0APMTB/2.);
993 TGeoVolume *v0APMTTSec2 = new TGeoVolume("V0APMTTSec2", sV0APMTTSec2, medV0APMAlum);
994 v0APMT1Sec2->SetLineColor(kV0AColorPMG);
995 v0APMT2Sec2->SetLineColor(kV0AColorPMA);
996 v0APMTTSec2->SetLineColor(kV0AColorPMA);
997 rot = new TGeoRotation("rot", 90, 0, 180, 0, 90, 90);
998 v0APMTSec2->AddNode(v0APMT1Sec2,1,rot);
999 v0APMTSec2->AddNode(v0APMT2Sec2,1,rot);
1000 v0APMTSec2->AddNode(v0APMTTSec2,1,new TGeoCombiTrans(0,-(fV0APMTH+fV0APMTB)/2.,0,rot));
1001 double autoShiftSec2 = (fV0APMBWd-2*fV0APMBWdW)/4.;
1002 v0APMSec2->AddNode(v0APMTSec2, 1, new TGeoTranslation(-1.5*autoShiftSec2, 0, 0));
1003 v0APMSec2->AddNode(v0APMTSec2, 2, new TGeoTranslation(-0.5*autoShiftSec2, 0, 0));
1004 v0APMSec2->AddNode(v0APMTSec2, 3, new TGeoTranslation(+0.5*autoShiftSec2, 0, 0));
1005 v0APMSec2->AddNode(v0APMTSec2, 4, new TGeoTranslation(+1.5*autoShiftSec2, 0, 0));
1006
1007 // PM
1008 rot = new TGeoRotation("rot");
1009 rot->RotateX(90-fV0APMBAng);
1010 rot->RotateZ(-90.+22.5);
1011 double cosAngPMBSec2 = TMath::Cos(fV0APMBAng*TMath::DegToRad());
1012 double sinAngPMBSec2 = TMath::Sin(fV0APMBAng*TMath::DegToRad());
1013 double shiftZSec2 = fV0APMBHt/2. * cosAngPMBSec2
1014 - ( fV0ASciWd + 2 * fV0AOctWd + 2 * fV0APlaWd )/2. - fV0APMBTh/2. * sinAngPMBSec2;
1015 double shiftRSec2 = fV0AR6 + fV0AOctH2 + fV0APlaAl;
1016 v0ASec2->AddNode(v0APMSec2,1, new TGeoCombiTrans( shiftRSec2*cos225+1.07, shiftRSec2*sin225, shiftZSec2, rot));
1017
1018 // Aluminium nails
1019 TGeoTube *sV0ANail1Sec2 = new TGeoTube("sV0ANail1Sec2", 0.0, 0.4, 5.09/2.);
1020 TGeoVolume *v0ANail1Sec2 = new TGeoVolume("V0ANail1Sec2", sV0ANail1Sec2, medV0APMAlum);
1021 v0ANail1Sec2->SetLineColor(kV0AColorPMA);// this is the color for aluminium
1022 v0ASec2->AddNode(v0ANail1Sec2,1,new TGeoTranslation(42.9, 0.51, 0.0));
1023 TGeoTube *sV0ANail2Sec2 = new TGeoTube("sV0ANail2Sec2", 0.0, 0.4, 5.09/2.);
1024 TGeoVolume *v0ANail2Sec2 = new TGeoVolume("V0ANail2Sec2", sV0ANail2Sec2, medV0APMAlum);
1025 v0ANail2Sec2->SetLineColor(kV0AColorPMA);
1026 v0ASec2->AddNode(v0ANail2Sec2,1,new TGeoTranslation(30.73,29.98,0.0));
1027
1028 /// Adding sector to v0LE volume
1029 for(int i=1; i<2; i++) {
1030 TGeoRotation *rotation = new TGeoRotation("rotation", 90., i*45., 90., 90.+i*45., 0., 0.);
1031 v0LE->AddNode(v0ASec2,i+1,rotation);
1032 }
1033
1034 //FEEBox
1035 TGeoVolume* v0AFEE2 = new TGeoVolumeAssembly("V0AFEE2");
1036 v0AFEE2->AddNode(v0AFEEB,1);
1037
1038 //Mother and daughter boards
1039 v0AFEE2->AddNode(v0AFEEDaughter, 1, new TGeoTranslation(9.0*spacing, fV0AFEEBTh/2.+2.0*fV0APMTB, fV0APMBHtW/2.));
1040 v0AFEE2->AddNode(v0AFEEDaughter, 2, new TGeoTranslation(6.0*spacing, fV0AFEEBTh/2.+2.0*fV0APMTB, fV0APMBHtW/2.));
1041 v0AFEE2->AddNode(v0AFEEDaughter, 3, new TGeoTranslation(3.0*spacing, fV0AFEEBTh/2.+2.0*fV0APMTB, fV0APMBHtW/2.));
1042 v0AFEE2->AddNode(v0AFEEDaughter, 4, new TGeoTranslation(0.0*spacing, fV0AFEEBTh/2.+2.0*fV0APMTB, fV0APMBHtW/2.));
1043 v0AFEE2->AddNode(v0AFEEDaughter, 5, new TGeoTranslation(-3.0*spacing, fV0AFEEBTh/2.+2.0*fV0APMTB, fV0APMBHtW/2.));
1044 v0AFEE2->AddNode(v0AFEEDaughter, 6, new TGeoTranslation(-6.0*spacing, fV0AFEEBTh/2.+2.0*fV0APMTB, fV0APMBHtW/2.));
1045 v0AFEE2->AddNode(v0AFEEDaughter, 7, new TGeoTranslation(-9.0*spacing, fV0AFEEBTh/2.+2.0*fV0APMTB, fV0APMBHtW/2.));
1046 v0AFEE2->AddNode(v0AFEEDaughter, 8, new TGeoTranslation(-12.0*spacing, fV0AFEEBTh/2.+2.0*fV0APMTB, fV0APMBHtW/2.));
1047 v0AFEE2->AddNode(v0AFEEMother, 1, new TGeoTranslation(0.0, 0.0, -fV0AFEEBTh/2.+fV0APMBThW+fV0APMBHtW));
1048 v0AFEE2->AddNode(v0AFEEHalfMother, 1, new TGeoTranslation(0.0, -(fV0AFEEBTh+fV0APMTB)/2., -2.0*spacing));
1049
1050 //FEE
1051 rot = new TGeoRotation("rot");
1052 rot->RotateX(90);
1053 rot->RotateZ(+90.0-45.0+90);
1054 v0LE->AddNode(v0AFEE2,1, new TGeoCombiTrans( (FEEshiftR2Sec1*cos225 + 2.0)*cos45, (FEEshiftR2Sec1*cos225 + 2.0)*sin45, 7.5, rot));
1055 rot = new TGeoRotation("rot");
1056 rot->RotateZ(-90.0+45.0+90.0);
1057 v0LE->AddNode(v0AFEEOct2,2, new TGeoCombiTrans(((FEEshiftR2Sec1*cos225 + 2.0) - fV0AFEEBTh/2. - 1.0)*cos45,((FEEshiftR2Sec1*cos225 + 2.0) - fV0AFEEBTh/2. - 1.0)*sin45,0.0,rot));
1058
11ea46b9 1059
1060 //Upper supports
1061 for (int i=0;i<2;i++){
a8b5076e 1062 v0APts[0+8*i] = 0.0; v0APts[1+8*i] = 45.5;
1063 v0APts[2+8*i] = 0.0; v0APts[3+8*i] = 70.4;
11ea46b9 1064 v0APts[4+8*i] = 4.0; v0APts[5+8*i] = 68.9;
1065 v0APts[6+8*i] = 4.0; v0APts[7+8*i] = 45.5;
1066 }
a8b5076e 1067 TGeoArb8 *sV0ASuppur = new TGeoArb8("sV0ASuppur", 1.65, v0APts);
11ea46b9 1068 TGeoVolume *v0ASuppur = new TGeoVolume("V0ASuppur", sV0ASuppur, medV0ASup);
1069 v0ASuppur->SetLineColor(kV0AColorOct);
1070 v0LE->AddNode(v0ASuppur,1);
1071 for (int i=0;i<2;i++){
a32c7883 1072 v0APts[0+8*i] = -0.0; v0APts[1+8*i] = 70.4;
1073 v0APts[2+8*i] = -0.0; v0APts[3+8*i] = 45.5;
1074 v0APts[4+8*i] = -4.0; v0APts[5+8*i] = 45.5;
1075 v0APts[6+8*i] = -4.0; v0APts[7+8*i] = 68.9;
11ea46b9 1076 }
a8b5076e 1077 TGeoArb8 *sV0ASuppul = new TGeoArb8("sV0ASuppul", 1.65, v0APts);
11ea46b9 1078 TGeoVolume *v0ASuppul = new TGeoVolume("V0ASuppul", sV0ASuppul, medV0ASup);
1079 v0ASuppul->SetLineColor(kV0AColorOct);
1080 v0LE->AddNode(v0ASuppul,1);
e279cdd5 1081
91ae7a77 1082 /// Definition sector 3
1083 TGeoVolume *v0ASec3 = new TGeoVolumeAssembly("V0ASec3");
1084
1085 /// For boolean sustraction
1086 double preShapeSec3 = 0.2;
1087 for (int i=0;i<2;i++) {
1088 v0APts[0+8*i] = fV0AR0-fV0AFraWd/2.-preShapeSec3; v0APts[1+8*i] = -preShapeSec3;
1089 v0APts[2+8*i] = fV0AR0-fV0AFraWd/2.-preShapeSec3; v0APts[3+8*i] = fV0AFraWd/2.;
1090 v0APts[4+8*i] = fV0AR4+fV0AFraWd/2.+preShapeSec3; v0APts[5+8*i] = fV0AFraWd/2.;
1091 v0APts[6+8*i] = fV0AR4+fV0AFraWd/2.+preShapeSec3; v0APts[7+8*i] = -preShapeSec3;
1092 }
1093 new TGeoArb8("sV0ACha1Sec3",fV0ASciWd/1.5,v0APts);
1094 for (int i=0;i<2;i++) {
1095 v0APts[0+8*i] = fV0AR0*sin45-preShapeSec3;
1096 v0APts[1+8*i] = (fV0AR0-fV0AFraWd)*sin45-preShapeSec3;
1097 v0APts[2+8*i] = (fV0AR0-fV0AFraWd/2.)*sin45-preShapeSec3;
1098 v0APts[3+8*i] = (fV0AR0-fV0AFraWd/2.)*sin45;
1099 v0APts[4+8*i] = (fV0AR4+fV0AFraWd/2.)*sin45+preShapeSec3;
1100 v0APts[5+8*i] = (fV0AR4+fV0AFraWd/2.)*sin45+2.*preShapeSec3;
1101 v0APts[6+8*i] = (fV0AR4+fV0AFraWd)*sin45+preShapeSec3;
1102 v0APts[7+8*i] = fV0AR4*sin45+preShapeSec3;
1103 }
1104 new TGeoArb8("sV0ACha2Sec3", fV0ASciWd/2.+2.*preShapeSec3, v0APts);
1105 new TGeoCompositeShape("sV0ACha12Sec3","sV0ACha1Sec3+sV0ACha2Sec3");
1106 new TGeoTube("sV0ANail1SciHoleSec3", 0.0, 0.4, 1.65);
1107 TGeoTranslation *pos1Sec3 = new TGeoTranslation("pos1Sec3", 42.9, 0.51, 0.0);
1108 pos1Sec3->RegisterYourself();
1109 new TGeoTube("sV0ANail2SciHoleSec3", 0.0, 0.4, 1.65);
1110 TGeoTranslation *pos2Sec3 = new TGeoTranslation("pos2Sec3", 30.73,29.98,0.0);
1111 pos2Sec3->RegisterYourself();
1112 new TGeoCompositeShape("sV0ANailsSciHolesSec3","sV0ANail1SciHoleSec3:pos1Sec3+sV0ANail2SciHoleSec3:pos2Sec3");
1113 new TGeoCompositeShape("sV0AChaSec3","sV0ACha12Sec3+sV0ANailsSciHolesSec3");
1114 new TGeoTubeSeg("sV0AFicR5Sec3", fV0AR4+fV0AFraWd/2., fV0AR4 + fV0AR0, fV0ASciWd/2.+2*preShapeSec3, 0, 45);
1115 new TGeoBBox("sV0AFicFEEBSec3", fV0AFEEBWd/2., fV0AFEEBHt/2., fV0AFEEBTh/2.);
1116 double FEEshiftR2Sec3 = fV0AR6 + fV0AOctH2 + fV0APlaAl;
1117 rot = new TGeoRotation("rot");
1118 rot->RotateX(90);
1119 rot->RotateZ(-90.0+45.0);
1120 TGeoCombiTrans *posFicFEEBSec3 = new TGeoCombiTrans("posFicFEEBSec3", (FEEshiftR2Sec3*cos225 + 2.0 )*cos45, (FEEshiftR2Sec3*cos225 + 2.0 )*sin45, 7.5, rot);
1121 posFicFEEBSec3->RegisterYourself();
1122 for (int i=0;i<2;i++) {
1123 v0APts[0+8*i] = fV0AOctH2/2.; v0APts[1+8*i] = fV0AFEEBHt/2. + 2.5;
1124 v0APts[2+8*i] = fV0AOctH2/2.; v0APts[3+8*i] = -fV0AFEEBHt/2.- 2.5;
1125 v0APts[4+8*i] = -fV0AOctH2/2.; v0APts[5+8*i] = -fV0AFEEBHt/2.- 2.5;
1126 v0APts[6+8*i] = -fV0AOctH2/2.; v0APts[7+8*i] = fV0AFEEBHt/2.+ 2.5;
1127 }
1128 new TGeoArb8("sV0AFicOct2Sec3", (fV0ASciWd+2*fV0AOctWd)/2., v0APts);
1129 rot = new TGeoRotation("rot");
1130 rot->RotateZ(-90.0+45.0+90.0);
1131 TGeoCombiTrans *posFicOct2UpSec3 = new TGeoCombiTrans("posFicOct2UpSec3",((FEEshiftR2Sec3*cos225 + 2.0) - fV0AFEEBTh/2. - 1.0)*cos45,((FEEshiftR2Sec3*cos225 + 2.0) - fV0AFEEBTh/2. - 1.0)*sin45,0.0,rot);
1132 posFicOct2UpSec3->RegisterYourself();
e279cdd5 1133
91ae7a77 1134 /// Frame
1135 TGeoVolume *v0AFraSec3 = new TGeoVolumeAssembly("V0AFraSec3");
1136 for (int i=0;i<2;i++) {
1137 v0APts[0+8*i] = fV0AR0-fV0AFraWd/2.; v0APts[1+8*i] = 0.;
1138 v0APts[2+8*i] = fV0AR0-fV0AFraWd/2.; v0APts[3+8*i] = fV0AFraWd/2.;
1139 v0APts[4+8*i] = fV0AR4+fV0AFraWd/2.; v0APts[5+8*i] = fV0AFraWd/2.;
1140 v0APts[6+8*i] = fV0AR4+fV0AFraWd/2.; v0APts[7+8*i] = 0.;
1141 }
1142 TGeoArb8 *sV0AFraB1Sec3 = new TGeoArb8("sV0AFraB1Sec3",fV0ASciWd/2.,v0APts);
1143 TGeoVolume *v0AFraB1Sec3 = new TGeoVolume("V0AFraB1Sec3",sV0AFraB1Sec3,medV0AFra);
1144 for (int i=0;i<2;i++) {
1145 v0APts[0+8*i] = fV0AR0*sin45;
1146 v0APts[1+8*i] = (fV0AR0-fV0AFraWd)*sin45;
1147 v0APts[2+8*i] = (fV0AR0-fV0AFraWd/2.)*sin45;
1148 v0APts[3+8*i] = (fV0AR0-fV0AFraWd/2.)*sin45;
1149 v0APts[4+8*i] = (fV0AR4+fV0AFraWd/2.)*sin45;
1150 v0APts[5+8*i] = (fV0AR4+fV0AFraWd/2.)*sin45;
1151 v0APts[6+8*i] = (fV0AR4+fV0AFraWd)*sin45;
1152 v0APts[7+8*i] = fV0AR4*sin45;
1153 }
1154 TGeoArb8 *sV0AFraB2Sec3 = new TGeoArb8("sV0AFraB2Sec3", fV0ASciWd/2., v0APts);
1155 TGeoVolume *v0AFraB2Sec3 = new TGeoVolume("V0AFraB2Sec3",sV0AFraB2Sec3,medV0AFra);
1156 v0AFraB1Sec3->SetLineColor(kV0AColorFra); v0AFraB2Sec3->SetLineColor(kV0AColorFra);
1157 v0AFraSec3->AddNode(v0AFraB1Sec3,1);
1158 v0AFraSec3->AddNode(v0AFraB2Sec3,1);
1159 new TGeoTubeSeg( "sV0AFraR1bSec3", fV0AR0-fV0AFraWd/2.,
1160 fV0AR0+fV0AFraWd/2., fV0ASciWd/2., 0, 45);
1161 new TGeoTubeSeg( "sV0AFraR2bSec3", fV0AR1-fV0AFraWd/2.,
1162 fV0AR1+fV0AFraWd/2., fV0ASciWd/2., 0, 45);
1163 new TGeoTubeSeg( "sV0AFraR3bSec3", fV0AR2-fV0AFraWd/2.,
1164 fV0AR2+fV0AFraWd/2., fV0ASciWd/2., 0, 45);
1165 new TGeoTubeSeg( "sV0AFraR4bSec3", fV0AR3-fV0AFraWd/2.,
1166 fV0AR3+fV0AFraWd/2., fV0ASciWd/2., 0, 45);
1167 new TGeoTubeSeg( "sV0AFraR5bSec3", fV0AR4-fV0AFraWd/2.,
1168 fV0AR4+fV0AFraWd/2., fV0ASciWd/2., 0, 45);
1169 TGeoCompositeShape *sV0AFraR1Sec3 = new TGeoCompositeShape("sV0AFraR1Sec3","sV0AFraR1bSec3-sV0AChaSec3");
1170 TGeoCompositeShape *sV0AFraR2Sec3 = new TGeoCompositeShape("sV0AFraR2Sec3","sV0AFraR2bSec3-sV0AChaSec3");
1171 TGeoCompositeShape *sV0AFraR3Sec3 = new TGeoCompositeShape("sV0AFraR3Sec3","sV0AFraR3bSec3-sV0AChaSec3");
1172 TGeoCompositeShape *sV0AFraR4Sec3 = new TGeoCompositeShape("sV0AFraR4Sec3","sV0AFraR4bSec3-sV0AChaSec3");
1173 TGeoCompositeShape *sV0AFraR5Sec3 = new TGeoCompositeShape("sV0AFraR5Sec3","sV0AFraR5bSec3-sV0AChaSec3");
1174 TGeoVolume *v0AFraR1Sec3 = new TGeoVolume("V0AFraR1Sec3",sV0AFraR1Sec3,medV0AFra);
1175 TGeoVolume *v0AFraR2Sec3 = new TGeoVolume("V0AFraR2Sec3",sV0AFraR2Sec3,medV0AFra);
1176 TGeoVolume *v0AFraR3Sec3 = new TGeoVolume("V0AFraR3Sec3",sV0AFraR3Sec3,medV0AFra);
1177 TGeoVolume *v0AFraR4Sec3 = new TGeoVolume("V0AFraR4Sec3",sV0AFraR4Sec3,medV0AFra);
1178 TGeoVolume *v0AFraR5Sec3 = new TGeoVolume("V0AFraR5Sec3",sV0AFraR5Sec3,medV0AFra);
1179 v0AFraR1Sec3->SetLineColor(kV0AColorFra); v0AFraR2Sec3->SetLineColor(kV0AColorFra);
1180 v0AFraR3Sec3->SetLineColor(kV0AColorFra); v0AFraR4Sec3->SetLineColor(kV0AColorFra);
1181 v0AFraR5Sec3->SetLineColor(kV0AColorFra);
1182 v0AFraSec3->AddNode(v0AFraR1Sec3,1);
1183 v0AFraSec3->AddNode(v0AFraR2Sec3,1);
1184 v0AFraSec3->AddNode(v0AFraR3Sec3,1);
1185 v0AFraSec3->AddNode(v0AFraR4Sec3,1);
1186 v0AFraSec3->AddNode(v0AFraR5Sec3,1);
1187 v0ASec3->AddNode(v0AFraSec3,1);
1188
1189 /// Sensitive scintilator
1190 TGeoVolume *v0ASciSec3 = new TGeoVolumeAssembly("V0ASciSec3");
1191 new TGeoTubeSeg( "sV0AR1bSec3", fV0AR0+fV0AFraWd/2.,
1192 fV0AR1-fV0AFraWd/2., fV0ASciWd/2., 0, 45);
1193 new TGeoTubeSeg( "sV0AR2bSec3", fV0AR1+fV0AFraWd/2.,
1194 fV0AR2-fV0AFraWd/2., fV0ASciWd/2., 0, 45);
1195 new TGeoTubeSeg( "sV0AR3bSec3", fV0AR2+fV0AFraWd/2.,
1196 fV0AR3-fV0AFraWd/2., fV0ASciWd/2., 0, 45);
1197 new TGeoTubeSeg( "sV0AR4bSec3", fV0AR3+fV0AFraWd/2.,
1198 fV0AR4-fV0AFraWd/2., fV0ASciWd/2., 0, 45);
1199 TGeoCompositeShape *sV0AR1Sec3 = new TGeoCompositeShape("sV0AR1Sec3","sV0AR1bSec3-sV0AChaSec3");
1200 TGeoCompositeShape *sV0AR2Sec3 = new TGeoCompositeShape("sV0AR2Sec3","sV0AR2bSec3-sV0AChaSec3");
1201 TGeoCompositeShape *sV0AR3Sec3 = new TGeoCompositeShape("sV0AR3Sec3","sV0AR3bSec3-sV0AChaSec3");
1202 TGeoCompositeShape *sV0AR4Sec3 = new TGeoCompositeShape("sV0AR4Sec3","sV0AR4bSec3-sV0AChaSec3");
1203 TGeoVolume *v0L1Sec3 = new TGeoVolume("V0L1Sec3",sV0AR1Sec3,medV0ASci);
1204 TGeoVolume *v0L2Sec3 = new TGeoVolume("V0L2Sec3",sV0AR2Sec3,medV0ASci);
1205 TGeoVolume *v0L3Sec3 = new TGeoVolume("V0L3Sec3",sV0AR3Sec3,medV0ASci);
1206 TGeoVolume *v0L4Sec3 = new TGeoVolume("V0L4Sec3",sV0AR4Sec3,medV0ASci);
1207 v0L1Sec3->SetLineColor(kV0AColorSci); v0L2Sec3->SetLineColor(kV0AColorSci);
1208 v0L3Sec3->SetLineColor(kV0AColorSci); v0L4Sec3->SetLineColor(kV0AColorSci);
1209 v0ASec3->AddNode(v0L1Sec3,1);
1210 v0ASec3->AddNode(v0L2Sec3,1);
1211 v0ASec3->AddNode(v0L3Sec3,1);
1212 v0ASec3->AddNode(v0L4Sec3,1);
1213
1214 /// Segment of octagon
1215 for (int i=0;i<2;i++) {
1216 v0APts[0+8*i] = fV0AR6-fV0AOctH2; v0APts[1+8*i] = 0.;
1217 v0APts[2+8*i] = (fV0AR6-fV0AOctH2)*sin45; v0APts[3+8*i] = (fV0AR6-fV0AOctH2)*sin45;
1218 v0APts[4+8*i] = fV0AR6*sin45; v0APts[5+8*i] = fV0AR6*sin45;
1219 v0APts[6+8*i] = fV0AR6; v0APts[7+8*i] = 0.;
1220 }
1221 new TGeoArb8("sV0AOct2Sec3", (fV0ASciWd+2*fV0AOctWd)/2., v0APts);
1222 TGeoCompositeShape *sV0AOct2FEEBSec3 = new TGeoCompositeShape("sV0AOct2FEEBSec3","sV0AOct2Sec3-sV0AFicOct2Sec3:posFicOct2UpSec3-sV0AFicFEEBSec3:posFicFEEBSec3");
1223 TGeoVolume *v0AOct2Sec3 = new TGeoVolume("V0AOct2Sec3", sV0AOct2FEEBSec3,medV0ASup);
1224 v0AOct2Sec3->SetLineColor(kV0AColorOct);
1225 TGeoVolume *v0ASupSec3 = new TGeoVolumeAssembly("V0ASupSec3");
1226 v0ASupSec3->AddNode(v0AOct2Sec3,1);
1227 v0ASec3->AddNode(v0ASupSec3,1);
1228
1229 //Bunch of fibers
1230 v0APts[ 0] = v0APts[ 2] = -13.0;
1231 v0APts[ 1] = v0APts[ 7] = (fV0ASciWd+fV0AOctWd)/2.-0.01;
1232 v0APts[ 3] = v0APts[ 5] = (fV0ASciWd+fV0AOctWd)/2.+0.01;
1233 v0APts[ 4] = v0APts[ 6] = +13.0;
1234 v0APts[ 8] = v0APts[10] = -10.0;
1235 v0APts[ 9] = v0APts[15] = 0.;
1236 v0APts[11] = v0APts[13] = 0.25;
1237 v0APts[12] = v0APts[14] = +10.0;
1238 new TGeoArb8("sV0AFib1Sec3", 11.5, v0APts);
1239 rot = new TGeoRotation("rot");
1240 rot->RotateX(-90);
1241 rot->RotateZ(-90.+22.5);
1242 TGeoCombiTrans *fibpos1Sec3 = new TGeoCombiTrans("fibpos1Sec3", (fV0AR6-fV0AOctH2+fV0AR5)*cos225/2. - 3.8, (fV0AR6-fV0AOctH2+fV0AR5)*sin225/2.-1.8, 0, rot);
1243 fibpos1Sec3->RegisterYourself();
1244 TGeoCompositeShape *sV0AFib1HoleSec3 = new TGeoCompositeShape("sV0AFib1HoleSec3","sV0AFib1Sec3:fibpos1Sec3-sV0AFicR5Sec3");
1245 TGeoVolume *v0AFib1HoleSec3 = new TGeoVolume("V0AFib1HoleSec3",sV0AFib1HoleSec3,medV0AFib);
1246 v0AFib1HoleSec3->SetLineColor(kV0AColorFib);
1247 new TGeoArb8("sV0AFib2Sec3", 11.5, v0APts);
1248 rot = new TGeoRotation("rot");
1249 rot->RotateX(-90);
1250 rot->RotateY(180);
1251 rot->RotateZ(-90.+22.5);
1252 TGeoCombiTrans *fibpos2Sec3 = new TGeoCombiTrans("fibpos2Sec3", (fV0AR6-fV0AOctH2+fV0AR5)*cos225/2. - 3.8, (fV0AR6-fV0AOctH2+fV0AR5)*sin225/2.-1.8, 0, rot);
1253 fibpos2Sec3->RegisterYourself();
1254 TGeoCompositeShape *sV0AFib2HoleSec3 = new TGeoCompositeShape("sV0AFib2HoleSec3","sV0AFib2Sec3:fibpos2Sec3-sV0AFicR5Sec3");
1255 TGeoVolume *v0AFib2HoleSec3 = new TGeoVolume("V0AFib2HoleSec3",sV0AFib2HoleSec3,medV0AFib);
1256 v0AFib2HoleSec3->SetLineColor(kV0AColorFib);
1257 TGeoVolume *v0AFibSec3 = new TGeoVolumeAssembly("V0AFibSec3");
1258 v0AFibSec3->AddNode(v0AFib1HoleSec3,1);
1259 v0AFibSec3->AddNode(v0AFib2HoleSec3,1);
1260 v0ASec3->AddNode(v0AFibSec3,1);
1261
1262 /// Plates
1263 new TGeoTube("sV0ANail1PlaInHoleSec3", 0.0, 0.4, (fV0APlaWd-2*fV0APlaAl)/2.);
1264 new TGeoTube("sV0ANail2PlaInHoleSec3", 0.0, 0.4, (fV0APlaWd-2*fV0APlaAl)/2.);
1265 new TGeoCompositeShape("sV0ANailsPlaInHolesSec3","sV0ANail1PlaInHoleSec3:pos1Sec3+sV0ANail2PlaInHoleSec3:pos2Sec3");
1266 new TGeoTube("sV0ANail1PlaOuHoleSec3", 0.0, 0.4, (fV0APlaAl)/2.);
1267 new TGeoTube("sV0ANail2PlaOuHoleSec3", 0.0, 0.4, (fV0APlaAl)/2.);
1268 new TGeoCompositeShape("sV0ANailsPlaOuHolesSec3","sV0ANail1PlaOuHoleSec3:pos1Sec3+sV0ANail2PlaOuHoleSec3:pos2Sec3");
1269 for (int i=0;i<2;i++) {
1270 v0APts[0+8*i] = fV0AR0; v0APts[1+8*i] = 0.;
1271 v0APts[2+8*i] = fV0AR0*sin45; v0APts[3+8*i] = fV0AR0*sin45;
1272 v0APts[4+8*i] = fV0AR6 * sin45; v0APts[5+8*i] = fV0AR6*sin45;
1273 v0APts[6+8*i] = fV0AR6; v0APts[7+8*i] = 0.;
1274 }
1275 new TGeoArb8("sV0APlaInSec3", (fV0APlaWd-2*fV0APlaAl)/2., v0APts);
1276 TGeoCompositeShape *sV0APlaInNailsHolesSec3 = new TGeoCompositeShape("sV0APlaInNailsHolesSec3","sV0APlaInSec3-sV0ANailsPlaInHolesSec3-sV0AFicFEEBSec3:posFicFEEBSec3");
1277 TGeoVolume *v0APlaInNailsHolesSec3 = new TGeoVolume("V0APlaInNailsHolesSec3", sV0APlaInNailsHolesSec3, medV0APlaIn);
1278 new TGeoArb8("sV0APlaOuSec3", fV0APlaAl/2., v0APts);
1279 TGeoCompositeShape *sV0APlaOuNailsHolesSec3 = new TGeoCompositeShape("sV0APlaOuNailsHolesSec3","sV0APlaOuSec3-sV0ANailsPlaOuHolesSec3-sV0AFicFEEBSec3:posFicFEEBSec3");
1280 TGeoVolume *v0APlaOuNailsHolesSec3 = new TGeoVolume("V0APlaOuNailsHolesSec3", sV0APlaOuNailsHolesSec3, medV0APlaOu);
1281 v0APlaInNailsHolesSec3->SetLineColor(kV0AColorPlaIn); v0APlaOuNailsHolesSec3->SetLineColor(kV0AColorPlaOu);
1282 TGeoVolume *v0APlaSec3 = new TGeoVolumeAssembly("V0APlaSec3");
1283 v0APlaSec3->AddNode(v0APlaInNailsHolesSec3,1);
1284 v0APlaSec3->AddNode(v0APlaOuNailsHolesSec3,1,new TGeoTranslation(0,0,(fV0APlaWd-fV0APlaAl)/2.));
1285 v0APlaSec3->AddNode(v0APlaOuNailsHolesSec3,2,new TGeoTranslation(0,0,-(fV0APlaWd-fV0APlaAl)/2.));
1286 v0ASec3->AddNode(v0APlaSec3,1,new TGeoTranslation(0,0,(fV0ASciWd+2*fV0AOctWd+fV0APlaWd)/2.));
1287 v0ASec3->AddNode(v0APlaSec3,2,new TGeoTranslation(0,0,-(fV0ASciWd+2*fV0AOctWd+fV0APlaWd)/2.));
1288
1289 /// Non-sensitive scintilator
1290 new TGeoTubeSeg("sV0AR5S2Sec3", fV0AR4+fV0AFraWd/2., fV0AR4 + fV0AR0, fV0ASciWd/2.+2*preShapeSec3, 0, 45);
1291 TGeoCompositeShape *sV0AR5Sec3 = new TGeoCompositeShape("V0AR5Sec3","sV0AR5S2Sec3 - sV0AChaSec3");
1292 TGeoVolume *v0AR5Sec3 = new TGeoVolume("V0AR5Sec3",sV0AR5Sec3,medV0ASci);
1293 v0AR5Sec3->SetLineColor(kV0AColorSci);
1294 v0ASciSec3->AddNode(v0AR5Sec3,1);
1295 v0ASec3->AddNode(v0ASciSec3,1);
1296
1297 /// PMBox
1298 TGeoVolume* v0APMSec3 = new TGeoVolumeAssembly("V0APMSec3");
1299 new TGeoBBox("sV0APMB1Sec3", fV0APMBWd/2., fV0APMBHt/2., fV0APMBTh/2.);
1300 new TGeoBBox("sV0APMB2Sec3", fV0APMBWd/2.-fV0APMBWdW, fV0APMBHt/2.-fV0APMBHtW, fV0APMBTh/2.-fV0APMBThW);
1301 TGeoCompositeShape *sV0APMBSec3 = new TGeoCompositeShape("sV0APMBSec3","sV0APMB1Sec3-sV0APMB2Sec3");
1302 TGeoVolume *v0APMBSec3 = new TGeoVolume("V0APMBSec3",sV0APMBSec3, medV0APMAlum);
1303 v0APMBSec3->SetLineColor(kV0AColorPMA);
1304 v0APMSec3->AddNode(v0APMBSec3,1);
e279cdd5 1305
1306 /// PMTubes
91ae7a77 1307 TGeoTube *sV0APMT1Sec3 = new TGeoTube("sV0APMT1Sec3", fV0APMTR1, fV0APMTR2, fV0APMTH/2.);
1308 TGeoVolume *v0APMT1Sec3 = new TGeoVolume("V0APMT1Sec3", sV0APMT1Sec3, medV0APMGlass);
1309 TGeoTube *sV0APMT2Sec3 = new TGeoTube("sV0APMT2Sec3", fV0APMTR3, fV0APMTR4, fV0APMTH/2.);
1310 TGeoVolume *v0APMT2Sec3 = new TGeoVolume("V0APMT2Sec3", sV0APMT2Sec3, medV0APMAlum);
1311 TGeoVolume *v0APMTSec3 = new TGeoVolumeAssembly("V0APMTSec3");
1312 TGeoTube *sV0APMTTSec3 = new TGeoTube("sV0APMTTSec3", 0., fV0APMTR4, fV0APMTB/2.);
1313 TGeoVolume *v0APMTTSec3 = new TGeoVolume("V0APMTTSec3", sV0APMTTSec3, medV0APMAlum);
1314 v0APMT1Sec3->SetLineColor(kV0AColorPMG);
1315 v0APMT2Sec3->SetLineColor(kV0AColorPMA);
1316 v0APMTTSec3->SetLineColor(kV0AColorPMA);
e279cdd5 1317 rot = new TGeoRotation("rot", 90, 0, 180, 0, 90, 90);
91ae7a77 1318 v0APMTSec3->AddNode(v0APMT1Sec3,1,rot);
1319 v0APMTSec3->AddNode(v0APMT2Sec3,1,rot);
1320 v0APMTSec3->AddNode(v0APMTTSec3,1,new TGeoCombiTrans(0,-(fV0APMTH+fV0APMTB)/2.,0,rot));
1321 double autoShiftSec3 = (fV0APMBWd-2*fV0APMBWdW)/4.;
1322 v0APMSec3->AddNode(v0APMTSec3, 1, new TGeoTranslation(-1.5*autoShiftSec3, 0, 0));
1323 v0APMSec3->AddNode(v0APMTSec3, 2, new TGeoTranslation(-0.5*autoShiftSec3, 0, 0));
1324 v0APMSec3->AddNode(v0APMTSec3, 3, new TGeoTranslation(+0.5*autoShiftSec3, 0, 0));
1325 v0APMSec3->AddNode(v0APMTSec3, 4, new TGeoTranslation(+1.5*autoShiftSec3, 0, 0));
1326
1327 // PM
e279cdd5 1328 rot = new TGeoRotation("rot");
1329 rot->RotateX(90-fV0APMBAng);
1330 rot->RotateZ(-90.+22.5);
91ae7a77 1331 double cosAngPMBSec3 = TMath::Cos(fV0APMBAng*TMath::DegToRad());
1332 double sinAngPMBSec3 = TMath::Sin(fV0APMBAng*TMath::DegToRad());
1333 double shiftZSec3 = fV0APMBHt/2. * cosAngPMBSec3
1334 - ( fV0ASciWd + 2 * fV0AOctWd + 2 * fV0APlaWd )/2. - fV0APMBTh/2. * sinAngPMBSec3;
1335 double shiftRSec3 = fV0AR6 + fV0AOctH2 + fV0APlaAl;
1336 v0ASec3->AddNode(v0APMSec3,1, new TGeoCombiTrans( shiftRSec3*cos225+1.07, shiftRSec3*sin225, shiftZSec3, rot));
1337
1338 // Aluminium nails
1339 TGeoTube *sV0ANail1Sec3 = new TGeoTube("sV0ANail1Sec3", 0.0, 0.4, 5.09/2.);
1340 TGeoVolume *v0ANail1Sec3 = new TGeoVolume("V0ANail1Sec3", sV0ANail1Sec3, medV0APMAlum);
1341 v0ANail1Sec3->SetLineColor(kV0AColorPMA);// this is the color for aluminium
1342 v0ASec3->AddNode(v0ANail1Sec3,1,new TGeoTranslation(42.9, 0.51, 0.0));
1343 TGeoTube *sV0ANail2Sec3 = new TGeoTube("sV0ANail2Sec3", 0.0, 0.4, 5.09/2.);
1344 TGeoVolume *v0ANail2Sec3 = new TGeoVolume("V0ANail2Sec3", sV0ANail2Sec3, medV0APMAlum);
1345 v0ANail2Sec3->SetLineColor(kV0AColorPMA);
1346 v0ASec3->AddNode(v0ANail2Sec3,1,new TGeoTranslation(30.73,29.98,0.0));
1347
1348 /// Adding sector to v0LE volume
1349 for(int i=2; i<3; i++) {
1350 TGeoRotation *rotation = new TGeoRotation("rotation", 90., i*45., 90., 90.+i*45., 0., 0.);
1351 v0LE->AddNode(v0ASec3,i+1,rotation);
1352 }
e279cdd5 1353
1354 //FEEBox
91ae7a77 1355 TGeoVolume* v0AFEE3 = new TGeoVolumeAssembly("V0AFEE3");
1356 v0AFEE3->AddNode(v0AFEEB,1);
1357
1358 //Mother and daughter boards
1359 v0AFEE3->AddNode(v0AFEEDaughter, 1, new TGeoTranslation(9.0*spacing, fV0AFEEBTh/2.+2.0*fV0APMTB, fV0APMBHtW/2.));
1360 v0AFEE3->AddNode(v0AFEEDaughter, 2, new TGeoTranslation(6.0*spacing, fV0AFEEBTh/2.+2.0*fV0APMTB, fV0APMBHtW/2.));
1361 v0AFEE3->AddNode(v0AFEEDaughter, 3, new TGeoTranslation(3.0*spacing, fV0AFEEBTh/2.+2.0*fV0APMTB, fV0APMBHtW/2.));
1362 v0AFEE3->AddNode(v0AFEEDaughter, 4, new TGeoTranslation(0.0*spacing, fV0AFEEBTh/2.+2.0*fV0APMTB, fV0APMBHtW/2.));
1363 v0AFEE3->AddNode(v0AFEEDaughter, 5, new TGeoTranslation(-3.0*spacing, fV0AFEEBTh/2.+2.0*fV0APMTB, fV0APMBHtW/2.));
1364 v0AFEE3->AddNode(v0AFEEDaughter, 6, new TGeoTranslation(-6.0*spacing, fV0AFEEBTh/2.+2.0*fV0APMTB, fV0APMBHtW/2.));
1365 v0AFEE3->AddNode(v0AFEEDaughter, 7, new TGeoTranslation(-9.0*spacing, fV0AFEEBTh/2.+2.0*fV0APMTB, fV0APMBHtW/2.));
1366 v0AFEE3->AddNode(v0AFEEDaughter, 8, new TGeoTranslation(-12.0*spacing, fV0AFEEBTh/2.+2.0*fV0APMTB, fV0APMBHtW/2.));
1367 v0AFEE3->AddNode(v0AFEEMother, 1, new TGeoTranslation(0.0, 0.0, -fV0AFEEBTh/2.+fV0APMBThW+fV0APMBHtW));
1368 v0AFEE3->AddNode(v0AFEEHalfMother, 1, new TGeoTranslation(0.0, -(fV0AFEEBTh+fV0APMTB)/2., -2.0*spacing));
e279cdd5 1369
1370 //FEE
1371 rot = new TGeoRotation("rot");
1372 rot->RotateX(90);
91ae7a77 1373 rot->RotateZ(-90.0+45.0-90);
1374 v0LE->AddNode(v0AFEE3,1, new TGeoCombiTrans( -(FEEshiftR2Sec1*cos225 + 2.0)*cos45, (FEEshiftR2Sec1*cos225 + 2.0)*sin45, 7.5, rot) );
e279cdd5 1375 rot = new TGeoRotation("rot");
91ae7a77 1376 rot->RotateZ(+90.0-45.0-90.0);
1377 v0LE->AddNode(v0AFEEOct2,3, new TGeoCombiTrans(-((FEEshiftR2Sec1*cos225 + 2.0) - fV0AFEEBTh/2. - 1.0)*cos45,((FEEshiftR2Sec1*cos225 + 2.0) - fV0AFEEBTh/2. - 1.0)*sin45,0.0,rot));
e279cdd5 1378
1379
91ae7a77 1380 /// Definition sector 4
1381 TGeoVolume *v0ASec4 = new TGeoVolumeAssembly("V0ASec4");
1382
1383 /// For boolean sustraction
1384 double preShapeSec4 = 0.2;
1385 for (int i=0;i<2;i++) {
1386 v0APts[0+8*i] = fV0AR0-fV0AFraWd/2.-preShapeSec4; v0APts[1+8*i] = -preShapeSec4;
1387 v0APts[2+8*i] = fV0AR0-fV0AFraWd/2.-preShapeSec4; v0APts[3+8*i] = fV0AFraWd/2.;
1388 v0APts[4+8*i] = fV0AR4+fV0AFraWd/2.+preShapeSec4; v0APts[5+8*i] = fV0AFraWd/2.;
1389 v0APts[6+8*i] = fV0AR4+fV0AFraWd/2.+preShapeSec4; v0APts[7+8*i] = -preShapeSec4;
1390 }
1391 new TGeoArb8("sV0ACha1Sec4",fV0ASciWd/1.5,v0APts);
1392 for (int i=0;i<2;i++) {
1393 v0APts[0+8*i] = fV0AR0*sin45-preShapeSec4;
1394 v0APts[1+8*i] = (fV0AR0-fV0AFraWd)*sin45-preShapeSec4;
1395 v0APts[2+8*i] = (fV0AR0-fV0AFraWd/2.)*sin45-preShapeSec4;
1396 v0APts[3+8*i] = (fV0AR0-fV0AFraWd/2.)*sin45;
1397 v0APts[4+8*i] = (fV0AR4+fV0AFraWd/2.)*sin45+preShapeSec4;
1398 v0APts[5+8*i] = (fV0AR4+fV0AFraWd/2.)*sin45+2.*preShapeSec4;
1399 v0APts[6+8*i] = (fV0AR4+fV0AFraWd)*sin45+preShapeSec4;
1400 v0APts[7+8*i] = fV0AR4*sin45+preShapeSec4;
1401 }
1402 new TGeoArb8("sV0ACha2Sec4", fV0ASciWd/2.+2.*preShapeSec4, v0APts);
1403 new TGeoCompositeShape("sV0ACha12Sec4","sV0ACha1Sec4+sV0ACha2Sec4");
1404 new TGeoTube("sV0ANail1SciHoleSec4", 0.0, 0.4, 1.65);
1405 TGeoTranslation *pos1Sec4 = new TGeoTranslation("pos1Sec4", 42.9, 0.51, 0.0);
1406 pos1Sec4->RegisterYourself();
1407 new TGeoTube("sV0ANail2SciHoleSec4", 0.0, 0.4, 1.65);
1408 TGeoTranslation *pos2Sec4 = new TGeoTranslation("pos2Sec4", 30.73,29.98,0.0);
1409 pos2Sec4->RegisterYourself();
1410 new TGeoCompositeShape("sV0ANailsSciHolesSec4","sV0ANail1SciHoleSec4:pos1Sec4+sV0ANail2SciHoleSec4:pos2Sec4");
1411 new TGeoCompositeShape("sV0AChaSec4","sV0ACha12Sec4+sV0ANailsSciHolesSec4");
1412 new TGeoTubeSeg("sV0AFicR5Sec4", fV0AR4+fV0AFraWd/2., fV0AR4 + fV0AR0, fV0ASciWd/2.+2*preShapeSec4, 0, 45);
1413 new TGeoBBox("sV0AFicFEEBSec4", fV0AFEEBWd/2., fV0AFEEBHt/2., fV0AFEEBTh/2.);
e279cdd5 1414 rot = new TGeoRotation("rot");
1415 rot->RotateX(90);
91ae7a77 1416 rot->RotateZ(-90.0);
1417 double FEEshiftR2Sec4 = fV0AR6 + fV0AOctH2 + fV0APlaAl;
1418 TGeoCombiTrans *posFicFEEBSec4 = new TGeoCombiTrans("posFicFEEBSec4", FEEshiftR2Sec4*cos225 + 2.0, 0, 7.5, rot);
1419 posFicFEEBSec4->RegisterYourself();
e279cdd5 1420 rot = new TGeoRotation("rot");
91ae7a77 1421 rot->RotateX(90);
1422 rot->RotateZ(-90.0+45.0);
1423 TGeoCombiTrans *posFicFEEBUpSec4 = new TGeoCombiTrans("posFicFEEBUpSec4", (FEEshiftR2Sec4*cos225 + 2.0 )*cos45, (FEEshiftR2Sec4*cos225 + 2.0 )*sin45, 7.5, rot);
1424 posFicFEEBUpSec4->RegisterYourself();
1425 for (int i=0;i<2;i++) {
1426 v0APts[0+8*i] = fV0AOctH2/2.; v0APts[1+8*i] = fV0AFEEBHt/2. + 2.5;
1427 v0APts[2+8*i] = fV0AOctH2/2.; v0APts[3+8*i] = -fV0AFEEBHt/2.- 2.5;
1428 v0APts[4+8*i] = -fV0AOctH2/2.; v0APts[5+8*i] = -fV0AFEEBHt/2.- 2.5;
1429 v0APts[6+8*i] = -fV0AOctH2/2.; v0APts[7+8*i] = fV0AFEEBHt/2.+ 2.5;
1430 }
1431 new TGeoArb8("sV0AFicOct2Sec4", (fV0ASciWd+2*fV0AOctWd)/2., v0APts);
1432 TGeoTranslation *posFicOct2Sec4 = new TGeoTranslation("posFicOct2Sec4",(FEEshiftR2Sec4*cos225 + 2.0) - fV0AFEEBTh/2. - 1.0,0.0,0.0);
1433 posFicOct2Sec4->RegisterYourself();
1434 rot = new TGeoRotation("rot");
1435 rot->RotateZ(-90.0+45.0+90.0);
1436 TGeoCombiTrans *posFicOct2UpSec4 = new TGeoCombiTrans("posFicOct2UpSec4",((FEEshiftR2Sec4*cos225 + 2.0) - fV0AFEEBTh/2. - 1.0)*cos45,((FEEshiftR2Sec4*cos225 + 2.0) - fV0AFEEBTh/2. - 1.0)*sin45,0.0,rot);
1437 posFicOct2UpSec4->RegisterYourself();
e279cdd5 1438
91ae7a77 1439 /// Frame
1440 TGeoVolume *v0AFraSec4 = new TGeoVolumeAssembly("V0AFraSec4");
1441 for (int i=0;i<2;i++) {
1442 v0APts[0+8*i] = fV0AR0-fV0AFraWd/2.; v0APts[1+8*i] = 0.;
1443 v0APts[2+8*i] = fV0AR0-fV0AFraWd/2.; v0APts[3+8*i] = fV0AFraWd/2.;
1444 v0APts[4+8*i] = fV0AR4+fV0AFraWd/2.; v0APts[5+8*i] = fV0AFraWd/2.;
1445 v0APts[6+8*i] = fV0AR4+fV0AFraWd/2.; v0APts[7+8*i] = 0.;
1446 }
1447 TGeoArb8 *sV0AFraB1Sec4 = new TGeoArb8("sV0AFraB1Sec4",fV0ASciWd/2.,v0APts);
1448 TGeoVolume *v0AFraB1Sec4 = new TGeoVolume("V0AFraB1Sec4",sV0AFraB1Sec4,medV0AFra);
1449 for (int i=0;i<2;i++) {
1450 v0APts[0+8*i] = fV0AR0*sin45;
1451 v0APts[1+8*i] = (fV0AR0-fV0AFraWd)*sin45;
1452 v0APts[2+8*i] = (fV0AR0-fV0AFraWd/2.)*sin45;
1453 v0APts[3+8*i] = (fV0AR0-fV0AFraWd/2.)*sin45;
1454 v0APts[4+8*i] = (fV0AR4+fV0AFraWd/2.)*sin45;
1455 v0APts[5+8*i] = (fV0AR4+fV0AFraWd/2.)*sin45;
1456 v0APts[6+8*i] = (fV0AR4+fV0AFraWd)*sin45;
1457 v0APts[7+8*i] = fV0AR4*sin45;
1458 }
1459 TGeoArb8 *sV0AFraB2Sec4 = new TGeoArb8("sV0AFraB2Sec4", fV0ASciWd/2., v0APts);
1460 TGeoVolume *v0AFraB2Sec4 = new TGeoVolume("V0AFraB2Sec4",sV0AFraB2Sec4,medV0AFra);
1461 v0AFraB1Sec4->SetLineColor(kV0AColorFra); v0AFraB2Sec4->SetLineColor(kV0AColorFra);
1462 v0AFraSec4->AddNode(v0AFraB1Sec4,1);
1463 v0AFraSec4->AddNode(v0AFraB2Sec4,1);
1464 new TGeoTubeSeg( "sV0AFraR1bSec4", fV0AR0-fV0AFraWd/2.,
1465 fV0AR0+fV0AFraWd/2., fV0ASciWd/2., 0, 45);
1466 new TGeoTubeSeg( "sV0AFraR2bSec4", fV0AR1-fV0AFraWd/2.,
1467 fV0AR1+fV0AFraWd/2., fV0ASciWd/2., 0, 45);
1468 new TGeoTubeSeg( "sV0AFraR3bSec4", fV0AR2-fV0AFraWd/2.,
1469 fV0AR2+fV0AFraWd/2., fV0ASciWd/2., 0, 45);
1470 new TGeoTubeSeg( "sV0AFraR4bSec4", fV0AR3-fV0AFraWd/2.,
1471 fV0AR3+fV0AFraWd/2., fV0ASciWd/2., 0, 45);
1472 new TGeoTubeSeg( "sV0AFraR5bSec4", fV0AR4-fV0AFraWd/2.,
1473 fV0AR4+fV0AFraWd/2., fV0ASciWd/2., 0, 45);
1474 TGeoCompositeShape *sV0AFraR1Sec4 = new TGeoCompositeShape("sV0AFraR1Sec4","sV0AFraR1bSec4-sV0AChaSec4");
1475 TGeoCompositeShape *sV0AFraR2Sec4 = new TGeoCompositeShape("sV0AFraR2Sec4","sV0AFraR2bSec4-sV0AChaSec4");
1476 TGeoCompositeShape *sV0AFraR3Sec4 = new TGeoCompositeShape("sV0AFraR3Sec4","sV0AFraR3bSec4-sV0AChaSec4");
1477 TGeoCompositeShape *sV0AFraR4Sec4 = new TGeoCompositeShape("sV0AFraR4Sec4","sV0AFraR4bSec4-sV0AChaSec4");
1478 TGeoCompositeShape *sV0AFraR5Sec4 = new TGeoCompositeShape("sV0AFraR5Sec4","sV0AFraR5bSec4-sV0AChaSec4");
1479 TGeoVolume *v0AFraR1Sec4 = new TGeoVolume("V0AFraR1Sec4",sV0AFraR1Sec4,medV0AFra);
1480 TGeoVolume *v0AFraR2Sec4 = new TGeoVolume("V0AFraR2Sec4",sV0AFraR2Sec4,medV0AFra);
1481 TGeoVolume *v0AFraR3Sec4 = new TGeoVolume("V0AFraR3Sec4",sV0AFraR3Sec4,medV0AFra);
1482 TGeoVolume *v0AFraR4Sec4 = new TGeoVolume("V0AFraR4Sec4",sV0AFraR4Sec4,medV0AFra);
1483 TGeoVolume *v0AFraR5Sec4 = new TGeoVolume("V0AFraR5Sec4",sV0AFraR5Sec4,medV0AFra);
1484 v0AFraR1Sec4->SetLineColor(kV0AColorFra); v0AFraR2Sec4->SetLineColor(kV0AColorFra);
1485 v0AFraR3Sec4->SetLineColor(kV0AColorFra); v0AFraR4Sec4->SetLineColor(kV0AColorFra);
1486 v0AFraR5Sec4->SetLineColor(kV0AColorFra);
1487 v0AFraSec4->AddNode(v0AFraR1Sec4,1);
1488 v0AFraSec4->AddNode(v0AFraR2Sec4,1);
1489 v0AFraSec4->AddNode(v0AFraR3Sec4,1);
1490 v0AFraSec4->AddNode(v0AFraR4Sec4,1);
1491 v0AFraSec4->AddNode(v0AFraR5Sec4,1);
1492 v0ASec4->AddNode(v0AFraSec4,1);
1493
1494 /// Sensitive scintilator
1495 TGeoVolume *v0ASciSec4 = new TGeoVolumeAssembly("V0ASciSec4");
1496 new TGeoTubeSeg( "sV0AR1bSec4", fV0AR0+fV0AFraWd/2.,
1497 fV0AR1-fV0AFraWd/2., fV0ASciWd/2., 0, 45);
1498 new TGeoTubeSeg( "sV0AR2bSec4", fV0AR1+fV0AFraWd/2.,
1499 fV0AR2-fV0AFraWd/2., fV0ASciWd/2., 0, 45);
1500 new TGeoTubeSeg( "sV0AR3bSec4", fV0AR2+fV0AFraWd/2.,
1501 fV0AR3-fV0AFraWd/2., fV0ASciWd/2., 0, 45);
1502 new TGeoTubeSeg( "sV0AR4bSec4", fV0AR3+fV0AFraWd/2.,
1503 fV0AR4-fV0AFraWd/2., fV0ASciWd/2., 0, 45);
1504 TGeoCompositeShape *sV0AR1Sec4 = new TGeoCompositeShape("sV0AR1Sec4","sV0AR1bSec4-sV0AChaSec4");
1505 TGeoCompositeShape *sV0AR2Sec4 = new TGeoCompositeShape("sV0AR2Sec4","sV0AR2bSec4-sV0AChaSec4");
1506 TGeoCompositeShape *sV0AR3Sec4 = new TGeoCompositeShape("sV0AR3Sec4","sV0AR3bSec4-sV0AChaSec4");
1507 TGeoCompositeShape *sV0AR4Sec4 = new TGeoCompositeShape("sV0AR4Sec4","sV0AR4bSec4-sV0AChaSec4");
1508 TGeoVolume *v0L1Sec4 = new TGeoVolume("V0L1Sec4",sV0AR1Sec4,medV0ASci);
1509 TGeoVolume *v0L2Sec4 = new TGeoVolume("V0L2Sec4",sV0AR2Sec4,medV0ASci);
1510 TGeoVolume *v0L3Sec4 = new TGeoVolume("V0L3Sec4",sV0AR3Sec4,medV0ASci);
1511 TGeoVolume *v0L4Sec4 = new TGeoVolume("V0L4Sec4",sV0AR4Sec4,medV0ASci);
1512 v0L1Sec4->SetLineColor(kV0AColorSci); v0L2Sec4->SetLineColor(kV0AColorSci);
1513 v0L3Sec4->SetLineColor(kV0AColorSci); v0L4Sec4->SetLineColor(kV0AColorSci);
1514 v0ASec4->AddNode(v0L1Sec4,1);
1515 v0ASec4->AddNode(v0L2Sec4,1);
1516 v0ASec4->AddNode(v0L3Sec4,1);
1517 v0ASec4->AddNode(v0L4Sec4,1);
1518
1519 /// Segment of octagon
1520 for (int i=0;i<2;i++) {
1521 v0APts[0+8*i] = fV0AR6-fV0AOctH2; v0APts[1+8*i] = 0.;
1522 v0APts[2+8*i] = (fV0AR6-fV0AOctH2)*sin45; v0APts[3+8*i] = (fV0AR6-fV0AOctH2)*sin45;
1523 v0APts[4+8*i] = fV0AR6*sin45; v0APts[5+8*i] = fV0AR6*sin45;
1524 v0APts[6+8*i] = fV0AR6; v0APts[7+8*i] = 0.;
1525 }
1526 new TGeoArb8("sV0AOct2Sec4", (fV0ASciWd+2*fV0AOctWd)/2., v0APts);
1527 TGeoCompositeShape *sV0AOct2FEEBSec4 = new TGeoCompositeShape("sV0AOct2FEEBSec4","sV0AOct2Sec4-sV0AFicFEEBSec4:posFicFEEBSec4-sV0AFicFEEBSec4:posFicFEEBUpSec4-sV0AFicOct2Sec4:posFicOct2Sec4-sV0AFicOct2Sec4:posFicOct2UpSec4");
1528 TGeoVolume *v0AOct2Sec4 = new TGeoVolume("V0AOct2Sec4", sV0AOct2FEEBSec4,medV0ASup);
1529 v0AOct2Sec4->SetLineColor(kV0AColorOct);
1530 TGeoVolume *v0ASupSec4 = new TGeoVolumeAssembly("V0ASupSec4");
1531 v0ASupSec4->AddNode(v0AOct2Sec4,1);
1532 v0ASec4->AddNode(v0ASupSec4,1);
e279cdd5 1533
91ae7a77 1534 //Bunch of fibers
1535 v0APts[ 0] = v0APts[ 2] = -13.0;
1536 v0APts[ 1] = v0APts[ 7] = (fV0ASciWd+fV0AOctWd)/2.-0.01;
1537 v0APts[ 3] = v0APts[ 5] = (fV0ASciWd+fV0AOctWd)/2.+0.01;
1538 v0APts[ 4] = v0APts[ 6] = +13.0;
1539 v0APts[ 8] = v0APts[10] = -10.0;
1540 v0APts[ 9] = v0APts[15] = 0.;
1541 v0APts[11] = v0APts[13] = 0.25;
1542 v0APts[12] = v0APts[14] = +10.0;
1543 new TGeoArb8("sV0AFib1Sec4", 11.5, v0APts);
e279cdd5 1544 rot = new TGeoRotation("rot");
91ae7a77 1545 rot->RotateX(-90);
1546 rot->RotateZ(-90.+22.5);
1547 TGeoCombiTrans *fibpos1Sec4 = new TGeoCombiTrans("fibpos1Sec4", (fV0AR6-fV0AOctH2+fV0AR5)*cos225/2. - 3.8, (fV0AR6-fV0AOctH2+fV0AR5)*sin225/2.-1.8, 0, rot);
1548 fibpos1Sec4->RegisterYourself();
1549 TGeoCompositeShape *sV0AFib1HoleSec4 = new TGeoCompositeShape("sV0AFib1HoleSec4","sV0AFib1Sec4:fibpos1Sec4-sV0AFicR5Sec4");
1550 TGeoVolume *v0AFib1HoleSec4 = new TGeoVolume("V0AFib1HoleSec4",sV0AFib1HoleSec4,medV0AFib);
1551 v0AFib1HoleSec4->SetLineColor(kV0AColorFib);
1552 new TGeoArb8("sV0AFib2Sec4", 11.5, v0APts);
1553 rot = new TGeoRotation("rot");
1554 rot->RotateX(-90);
1555 rot->RotateY(180);
1556 rot->RotateZ(-90.+22.5);
1557 TGeoCombiTrans *fibpos2Sec4 = new TGeoCombiTrans("fibpos2Sec4", (fV0AR6-fV0AOctH2+fV0AR5)*cos225/2. - 3.8, (fV0AR6-fV0AOctH2+fV0AR5)*sin225/2.-1.8, 0, rot);
1558 fibpos2Sec4->RegisterYourself();
1559 TGeoCompositeShape *sV0AFib2HoleSec4 = new TGeoCompositeShape("sV0AFib2HoleSec4","sV0AFib2Sec4:fibpos2Sec4-sV0AFicR5Sec4");
1560 TGeoVolume *v0AFib2HoleSec4 = new TGeoVolume("V0AFib2HoleSec4",sV0AFib2HoleSec4,medV0AFib);
1561 v0AFib2HoleSec4->SetLineColor(kV0AColorFib);
1562 TGeoVolume *v0AFibSec4 = new TGeoVolumeAssembly("V0AFibSec4");
1563 v0AFibSec4->AddNode(v0AFib1HoleSec4,1);
1564 v0AFibSec4->AddNode(v0AFib2HoleSec4,1);
1565 v0ASec4->AddNode(v0AFibSec4,1);
1566
1567 /// Plates
1568 new TGeoTube("sV0ANail1PlaInHoleSec4", 0.0, 0.4, (fV0APlaWd-2*fV0APlaAl)/2.);
1569 new TGeoTube("sV0ANail2PlaInHoleSec4", 0.0, 0.4, (fV0APlaWd-2*fV0APlaAl)/2.);
1570 new TGeoCompositeShape("sV0ANailsPlaInHolesSec4","sV0ANail1PlaInHoleSec4:pos1Sec4+sV0ANail2PlaInHoleSec4:pos2Sec4");
1571 new TGeoTube("sV0ANail1PlaOuHoleSec4", 0.0, 0.4, (fV0APlaAl)/2.);
1572 new TGeoTube("sV0ANail2PlaOuHoleSec4", 0.0, 0.4, (fV0APlaAl)/2.);
1573 new TGeoCompositeShape("sV0ANailsPlaOuHolesSec4","sV0ANail1PlaOuHoleSec4:pos1Sec4+sV0ANail2PlaOuHoleSec4:pos2Sec4");
1574 for (int i=0;i<2;i++) {
1575 v0APts[0+8*i] = fV0AR0; v0APts[1+8*i] = 0.;
1576 v0APts[2+8*i] = fV0AR0*sin45; v0APts[3+8*i] = fV0AR0*sin45;
1577 v0APts[4+8*i] = fV0AR6 * sin45; v0APts[5+8*i] = fV0AR6*sin45;
1578 v0APts[6+8*i] = fV0AR6; v0APts[7+8*i] = 0.;
1579 }
1580 new TGeoArb8("sV0APlaInSec4", (fV0APlaWd-2*fV0APlaAl)/2., v0APts);
1581 TGeoCompositeShape *sV0APlaInNailsHolesSec4 = new TGeoCompositeShape("sV0APlaInNailsHolesSec4","sV0APlaInSec4-sV0ANailsPlaInHolesSec4-sV0AFicFEEBSec4:posFicFEEBSec4-sV0AFicFEEBSec4:posFicFEEBUpSec4");
1582 TGeoVolume *v0APlaInNailsHolesSec4 = new TGeoVolume("V0APlaInNailsHolesSec4", sV0APlaInNailsHolesSec4, medV0APlaIn);
1583 new TGeoArb8("sV0APlaOuSec4", fV0APlaAl/2., v0APts);
1584 TGeoCompositeShape *sV0APlaOuNailsHolesSec4 = new TGeoCompositeShape("sV0APlaOuNailsHolesSec4","sV0APlaOuSec4-sV0ANailsPlaOuHolesSec4-sV0AFicFEEBSec4:posFicFEEBSec4-sV0AFicFEEBSec4:posFicFEEBUpSec4");
1585 TGeoVolume *v0APlaOuNailsHolesSec4 = new TGeoVolume("V0APlaOuNailsHolesSec4", sV0APlaOuNailsHolesSec4, medV0APlaOu);
1586 v0APlaInNailsHolesSec4->SetLineColor(kV0AColorPlaIn); v0APlaOuNailsHolesSec4->SetLineColor(kV0AColorPlaOu);
1587 TGeoVolume *v0APlaSec4 = new TGeoVolumeAssembly("V0APlaSec4");
1588 v0APlaSec4->AddNode(v0APlaInNailsHolesSec4,1);
1589 v0APlaSec4->AddNode(v0APlaOuNailsHolesSec4,1,new TGeoTranslation(0,0,(fV0APlaWd-fV0APlaAl)/2.));
1590 v0APlaSec4->AddNode(v0APlaOuNailsHolesSec4,2,new TGeoTranslation(0,0,-(fV0APlaWd-fV0APlaAl)/2.));
1591 v0ASec4->AddNode(v0APlaSec4,1,new TGeoTranslation(0,0,(fV0ASciWd+2*fV0AOctWd+fV0APlaWd)/2.));
1592 v0ASec4->AddNode(v0APlaSec4,2,new TGeoTranslation(0,0,-(fV0ASciWd+2*fV0AOctWd+fV0APlaWd)/2.));
1593
1594 /// Non-sensitive scintilator
1595 new TGeoTubeSeg("sV0AR5S2Sec4", fV0AR4+fV0AFraWd/2., fV0AR4 + fV0AR0, fV0ASciWd/2.+2*preShapeSec4, 0, 45);
1596 TGeoCompositeShape *sV0AR5Sec4 = new TGeoCompositeShape("V0AR5Sec4","sV0AR5S2Sec4 - sV0AChaSec4");
1597 TGeoVolume *v0AR5Sec4 = new TGeoVolume("V0AR5Sec4",sV0AR5Sec4,medV0ASci);
1598 v0AR5Sec4->SetLineColor(kV0AColorSci);
1599 v0ASciSec4->AddNode(v0AR5Sec4,1);
1600 v0ASec4->AddNode(v0ASciSec4,1);
1601
1602 /// PMBox
1603 TGeoVolume* v0APMSec4 = new TGeoVolumeAssembly("V0APMSec4");
1604 new TGeoBBox("sV0APMB1Sec4", fV0APMBWd/2., fV0APMBHt/2., fV0APMBTh/2.);
1605 new TGeoBBox("sV0APMB2Sec4", fV0APMBWd/2.-fV0APMBWdW, fV0APMBHt/2.-fV0APMBHtW, fV0APMBTh/2.-fV0APMBThW);
1606 TGeoCompositeShape *sV0APMBSec4 = new TGeoCompositeShape("sV0APMBSec4","sV0APMB1Sec4-sV0APMB2Sec4");
1607 TGeoVolume *v0APMBSec4 = new TGeoVolume("V0APMBSec4",sV0APMBSec4, medV0APMAlum);
1608 v0APMBSec4->SetLineColor(kV0AColorPMA);
1609 v0APMSec4->AddNode(v0APMBSec4,1);
e279cdd5 1610
1611 /// PMTubes
91ae7a77 1612 TGeoTube *sV0APMT1Sec4 = new TGeoTube("sV0APMT1Sec4", fV0APMTR1, fV0APMTR2, fV0APMTH/2.);
1613 TGeoVolume *v0APMT1Sec4 = new TGeoVolume("V0APMT1Sec4", sV0APMT1Sec4, medV0APMGlass);
1614 TGeoTube *sV0APMT2Sec4 = new TGeoTube("sV0APMT2Sec4", fV0APMTR3, fV0APMTR4, fV0APMTH/2.);
1615 TGeoVolume *v0APMT2Sec4 = new TGeoVolume("V0APMT2Sec4", sV0APMT2Sec4, medV0APMAlum);
1616 TGeoVolume *v0APMTSec4 = new TGeoVolumeAssembly("V0APMTSec4");
1617 TGeoTube *sV0APMTTSec4 = new TGeoTube("sV0APMTTSec4", 0., fV0APMTR4, fV0APMTB/2.);
1618 TGeoVolume *v0APMTTSec4 = new TGeoVolume("V0APMTTSec4", sV0APMTTSec4, medV0APMAlum);
1619 v0APMT1Sec4->SetLineColor(kV0AColorPMG);
1620 v0APMT2Sec4->SetLineColor(kV0AColorPMA);
1621 v0APMTTSec4->SetLineColor(kV0AColorPMA);
e279cdd5 1622 rot = new TGeoRotation("rot", 90, 0, 180, 0, 90, 90);
91ae7a77 1623 v0APMTSec4->AddNode(v0APMT1Sec4,1,rot);
1624 v0APMTSec4->AddNode(v0APMT2Sec4,1,rot);
1625 v0APMTSec4->AddNode(v0APMTTSec4,1,new TGeoCombiTrans(0,-(fV0APMTH+fV0APMTB)/2.,0,rot));
1626 double autoShiftSec4 = (fV0APMBWd-2*fV0APMBWdW)/4.;
1627 v0APMSec4->AddNode(v0APMTSec4, 1, new TGeoTranslation(-1.5*autoShiftSec4, 0, 0));
1628 v0APMSec4->AddNode(v0APMTSec4, 2, new TGeoTranslation(-0.5*autoShiftSec4, 0, 0));
1629 v0APMSec4->AddNode(v0APMTSec4, 3, new TGeoTranslation(+0.5*autoShiftSec4, 0, 0));
1630 v0APMSec4->AddNode(v0APMTSec4, 4, new TGeoTranslation(+1.5*autoShiftSec4, 0, 0));
1631
1632 // PM
e279cdd5 1633 rot = new TGeoRotation("rot");
1634 rot->RotateX(90-fV0APMBAng);
91ae7a77 1635 rot->RotateZ(-90.+22.5);
1636 double cosAngPMBSec4 = TMath::Cos(fV0APMBAng*TMath::DegToRad());
1637 double sinAngPMBSec4 = TMath::Sin(fV0APMBAng*TMath::DegToRad());
1638 double shiftZSec4 = fV0APMBHt/2. * cosAngPMBSec4
1639 - ( fV0ASciWd + 2 * fV0AOctWd + 2 * fV0APlaWd )/2. - fV0APMBTh/2. * sinAngPMBSec4;
1640 double shiftRSec4 = fV0AR6 + fV0AOctH2 + fV0APlaAl;
1641 v0ASec4->AddNode(v0APMSec4,1, new TGeoCombiTrans( shiftRSec4*cos225+1.07, shiftRSec4*sin225, shiftZSec4, rot));
1642
1643 // Aluminium nails
1644 TGeoTube *sV0ANail1Sec4 = new TGeoTube("sV0ANail1Sec4", 0.0, 0.4, 5.09/2.);
1645 TGeoVolume *v0ANail1Sec4 = new TGeoVolume("V0ANail1Sec4", sV0ANail1Sec4, medV0APMAlum);
1646 v0ANail1Sec4->SetLineColor(kV0AColorPMA);// this is the color for aluminium
1647 v0ASec4->AddNode(v0ANail1Sec4,1,new TGeoTranslation(42.9, 0.51, 0.0));
1648 TGeoTube *sV0ANail2Sec4 = new TGeoTube("sV0ANail2Sec4", 0.0, 0.4, 5.09/2.);
1649 TGeoVolume *v0ANail2Sec4 = new TGeoVolume("V0ANail2Sec4", sV0ANail2Sec4, medV0APMAlum);
1650 v0ANail2Sec4->SetLineColor(kV0AColorPMA);
1651 v0ASec4->AddNode(v0ANail2Sec4,1,new TGeoTranslation(30.73,29.98,0.0));
1652
1653 /// Adding sector to v0LE volume
1654 for(int i=3; i<4; i++) {
1655 TGeoRotation *rotation = new TGeoRotation("rotation", 90., i*45., 90., 90.+i*45., 0., 0.);
1656 v0LE->AddNode(v0ASec4,i+1,rotation);
1657 }
e279cdd5 1658
1659 //FEEBox
91ae7a77 1660 TGeoVolume* v0AFEE4 = new TGeoVolumeAssembly("V0AFEE4");
e279cdd5 1661 v0AFEE4->AddNode(v0AFEEB,1);
1662
91ae7a77 1663 //Mother and daughter boards
1664 v0AFEE4->AddNode(v0AFEEDaughter, 1, new TGeoTranslation(9.0*spacing, fV0AFEEBTh/2.+2.0*fV0APMTB, fV0APMBHtW/2.));
1665 v0AFEE4->AddNode(v0AFEEDaughter, 2, new TGeoTranslation(6.0*spacing, fV0AFEEBTh/2.+2.0*fV0APMTB, fV0APMBHtW/2.));
1666 v0AFEE4->AddNode(v0AFEEDaughter, 3, new TGeoTranslation(3.0*spacing, fV0AFEEBTh/2.+2.0*fV0APMTB, fV0APMBHtW/2.));
1667 v0AFEE4->AddNode(v0AFEEDaughter, 4, new TGeoTranslation(0.0*spacing, fV0AFEEBTh/2.+2.0*fV0APMTB, fV0APMBHtW/2.));
1668 v0AFEE4->AddNode(v0AFEEDaughter, 5, new TGeoTranslation(-3.0*spacing, fV0AFEEBTh/2.+2.0*fV0APMTB, fV0APMBHtW/2.));
1669 v0AFEE4->AddNode(v0AFEEDaughter, 6, new TGeoTranslation(-6.0*spacing, fV0AFEEBTh/2.+2.0*fV0APMTB, fV0APMBHtW/2.));
1670 v0AFEE4->AddNode(v0AFEEDaughter, 7, new TGeoTranslation(-9.0*spacing, fV0AFEEBTh/2.+2.0*fV0APMTB, fV0APMBHtW/2.));
1671 v0AFEE4->AddNode(v0AFEEDaughter, 8, new TGeoTranslation(-12.0*spacing, fV0AFEEBTh/2.+2.0*fV0APMTB, fV0APMBHtW/2.));
1672 v0AFEE4->AddNode(v0AFEEMother, 1, new TGeoTranslation(0.0, 0.0, -fV0AFEEBTh/2.+fV0APMBThW+fV0APMBHtW));
1673 v0AFEE4->AddNode(v0AFEEHalfMother, 1, new TGeoTranslation(0.0, -(fV0AFEEBTh+fV0APMTB)/2., -2.0*spacing));
1674
e279cdd5 1675 //FEE
1676 rot = new TGeoRotation("rot");
1677 rot->RotateX(90);
91ae7a77 1678 rot->RotateZ(-90.0);
1679 v0LE->AddNode(v0AFEE4,1, new TGeoCombiTrans( -FEEshiftR2Sec1*cos225-2.0, 0, 7.5, rot));
1680 v0LE->AddNode(v0AFEEOct2,4, new TGeoTranslation(-1.0*((FEEshiftR2Sec1*cos225 + 2.0) - fV0AFEEBTh/2. - 1.0),0.0,0.0));
e279cdd5 1681
11ea46b9 1682
a8b5076e 1683 //Definition of sector 5
1684 TGeoVolume *v0ASec5 = new TGeoVolumeAssembly("V0ASec5");
11ea46b9 1685
a8b5076e 1686 /// For boolean sustraction
11ea46b9 1687 double preShape5 = 0.2;
1688 for (int i=0;i<2;i++) {
a32c7883 1689 v0APts[0+8*i] = -fV0AR0+fV0AFraWd/2.; v0APts[1+8*i] = fV0AFraWd/2.;
1690 v0APts[2+8*i] = -fV0AR0+fV0AFraWd/2.; v0APts[3+8*i] = -2*preShape5;
1691 v0APts[4+8*i] = -fV0AR4-fV0AFraWd/2.-preShape5; v0APts[5+8*i] = -2*preShape5;
1692 v0APts[6+8*i] = -fV0AR4-fV0AFraWd/2.-preShape5; v0APts[7+8*i] = fV0AFraWd/2.;
11ea46b9 1693 }
1694 new TGeoArb8("sV0ACha15",fV0ASciWd/1.5,v0APts);
1695 for (int i=0;i<2;i++) {
91ae7a77 1696 v0APts[0+8*i] = -fV0AR0*cos45+preShape5;
1697 v0APts[1+8*i] = -(fV0AR0-fV0AFraWd)*sin45+preShape5;
1698 v0APts[2+8*i] = -(fV0AR0-fV0AFraWd/2.)*cos45+preShape5;
a8b5076e 1699 v0APts[3+8*i] = -(fV0AR0-fV0AFraWd/2.)*sin45;
91ae7a77 1700 v0APts[4+8*i] = -(fV0AR4+fV0AFraWd/2.)*cos45-preShape5;
1701 v0APts[5+8*i] = -(fV0AR4+fV0AFraWd/2.)*sin45-2.*preShape5;
1702 v0APts[6+8*i] = -(fV0AR4+fV0AFraWd)*cos45-preShape5;
1703 v0APts[7+8*i] = -fV0AR4*sin45-preShape5;
11ea46b9 1704 }
1705 new TGeoArb8("sV0ACha25", fV0ASciWd/2.+2.*preShape5, v0APts);
1706 new TGeoCompositeShape("sV0ACha125","sV0ACha15+sV0ACha25");
1707 new TGeoTube("sV0ANail15Hole", 0.0, 0.4, 1.65);
1708 TGeoTranslation *pos15 = new TGeoTranslation("pos15", -42.9, -0.51, 0.0);
1709 pos15->RegisterYourself();
1710 new TGeoTube("sV0ANail25Hole", 0.0, 0.4, 1.65);
a8b5076e 1711 TGeoTranslation *pos25 = new TGeoTranslation("pos25",-30.8,-30.04,0.0);
11ea46b9 1712 pos25->RegisterYourself();
a8b5076e 1713 TGeoTranslation *pos35 = new TGeoTranslation("pos35",-30.05,-30.79,0.0);
11ea46b9 1714 pos35->RegisterYourself();
a8b5076e 1715 new TGeoCompositeShape("sV0ANailsHoles5","sV0ANail15Hole:pos15+sV0ANail25Hole:pos25");
11ea46b9 1716 new TGeoCompositeShape("sV0ACha5","sV0ACha125+sV0ANailsHoles5");
91ae7a77 1717 new TGeoTubeSeg("sV0AFicR55", fV0AR4+fV0AFraWd/2., fV0AR4 + fV0AR0, fV0ASciWd/2. +2*preShape5, 180.0, 225.0);
a8b5076e 1718 new TGeoTube("sV0ANail1PlaInHole5", 0.0, 0.4, (fV0APlaWd-2*fV0APlaAl)/2.);
1719 new TGeoTube("sV0ANail2PlaInHole5", 0.0, 0.4, (fV0APlaWd-2*fV0APlaAl)/2.);
1720 new TGeoTube("sV0ANail3PlaInHole5", 0.0, 0.4, (fV0APlaWd-2*fV0APlaAl)/2.);
1721 new TGeoCompositeShape("sV0ANailsPlaInHoles5","sV0ANail1PlaInHole5:pos15+sV0ANail2PlaInHole5:pos25+sV0ANail3PlaInHole5:pos35");
1722 new TGeoTube("sV0ANail1PlaOuHole5", 0.0, 0.4, (fV0APlaAl)/2.);
1723 new TGeoTube("sV0ANail2PlaOuHole5", 0.0, 0.4, (fV0APlaAl)/2.);
1724 new TGeoTube("sV0ANail3PlaOuHole5", 0.0, 0.4, (fV0APlaAl)/2.);
1725 new TGeoCompositeShape("sV0ANailsPlaOuHoles5","sV0ANail1PlaOuHole5:pos15+sV0ANail2PlaOuHole5:pos25+sV0ANail3PlaOuHole5:pos35");
91ae7a77 1726 rot = new TGeoRotation("rot");
1727 rot->RotateX(90);
1728 rot->RotateZ(-90.0);
1729 TGeoCombiTrans *posFicFEEBSec5 = new TGeoCombiTrans("posFicFEEBSec5", -FEEshiftR2Sec1*cos225 - 2.0, 0, 7.5, rot);
1730 posFicFEEBSec5->RegisterYourself();
1731 TGeoTranslation *posFicOct2Sec5 = new TGeoTranslation("posFicOct2Sec5",-1.0*((FEEshiftR2Sec1*cos225 + 2.0) - fV0AFEEBTh/2. - 1.0),0.0,0.0);
1732 posFicOct2Sec5->RegisterYourself();
11ea46b9 1733
1734 /// Frame
1735 TGeoVolume *v0AFra5 = new TGeoVolumeAssembly("V0AFra5");
a32c7883 1736 for (int i=0;i<2;i++) {
a8b5076e 1737 v0APts[0+8*i] = -fV0AR0+fV0AFraWd/2.; v0APts[1+8*i] = 0.0;
a32c7883 1738 v0APts[2+8*i] = -fV0AR0+fV0AFraWd/2.; v0APts[3+8*i] = -fV0AFraWd/8.;
1739 v0APts[4+8*i] = -fV0AR4-fV0AFraWd/2.; v0APts[5+8*i] = -fV0AFraWd/8.;
a8b5076e 1740 v0APts[6+8*i] = -fV0AR4-fV0AFraWd/2.; v0APts[7+8*i] = 0.0;
1741 }
11ea46b9 1742 TGeoArb8 *sV0AFraB15 = new TGeoArb8("sV0AFraB15",fV0ASciWd/2.,v0APts);
1743 TGeoVolume *v0AFraB15 = new TGeoVolume("V0AFraB15",sV0AFraB15,medV0AFra);
1744 for (int i=0;i<2;i++) {
a8b5076e 1745 v0APts[0+8*i] = -fV0AR0*cos45;
1746 v0APts[1+8*i] = -(fV0AR0-fV0AFraWd)*sin45;
1747 v0APts[2+8*i] = -(fV0AR0-fV0AFraWd/2.)*cos45;
1748 v0APts[3+8*i] = -(fV0AR0-fV0AFraWd/2.)*sin45;
1749 v0APts[4+8*i] = -(fV0AR4+fV0AFraWd/2.)*cos45;
1750 v0APts[5+8*i] = -(fV0AR4+fV0AFraWd/2.)*sin45;
1751 v0APts[6+8*i] = -(fV0AR4+fV0AFraWd)*cos45;
1752 v0APts[7+8*i] = -fV0AR4*sin45;
11ea46b9 1753 }
1754 TGeoArb8 *sV0AFraB25 = new TGeoArb8("sV0AFraB25", fV0ASciWd/2., v0APts);
1755 TGeoVolume *v0AFraB25 = new TGeoVolume("V0AFraB25",sV0AFraB25,medV0AFra);
1756 v0AFraB15->SetLineColor(kV0AColorFra); v0AFraB25->SetLineColor(kV0AColorFra);
1757 v0AFra5->AddNode(v0AFraB15,1);
1758 v0AFra5->AddNode(v0AFraB25,1); // Prefer 2 GeoObjects insted of 3 GeoMovements
1759 new TGeoTubeSeg( "sV0AFraR1b5", fV0AR0-fV0AFraWd/2.,
a8b5076e 1760 fV0AR0+fV0AFraWd/2., fV0ASciWd/2., 180.0, 225.0);
11ea46b9 1761 new TGeoTubeSeg( "sV0AFraR2b5", fV0AR1-fV0AFraWd/2.,
a8b5076e 1762 fV0AR1+fV0AFraWd/2., fV0ASciWd/2., 180.0, 225.0);
11ea46b9 1763 new TGeoTubeSeg( "sV0AFraR3b5", fV0AR2-fV0AFraWd/2.,
a8b5076e 1764 fV0AR2+fV0AFraWd/2., fV0ASciWd/2., 180.0, 225.0);
11ea46b9 1765 new TGeoTubeSeg( "sV0AFraR4b5", fV0AR3-fV0AFraWd/2.,
a8b5076e 1766 fV0AR3+fV0AFraWd/2., fV0ASciWd/2., 180.0, 225.0);
11ea46b9 1767 new TGeoTubeSeg( "sV0AFraR5b5", fV0AR4-fV0AFraWd/2.,
a8b5076e 1768 fV0AR4+fV0AFraWd/2., fV0ASciWd/2., 180.0, 225.0);
11ea46b9 1769 TGeoCompositeShape *sV0AFraR15 = new TGeoCompositeShape("sV0AFraR15","sV0AFraR1b5-sV0ACha5");
1770 TGeoCompositeShape *sV0AFraR25 = new TGeoCompositeShape("sV0AFraR25","sV0AFraR2b5-sV0ACha5");
1771 TGeoCompositeShape *sV0AFraR35 = new TGeoCompositeShape("sV0AFraR35","sV0AFraR3b5-sV0ACha5");
1772 TGeoCompositeShape *sV0AFraR45 = new TGeoCompositeShape("sV0AFraR45","sV0AFraR4b5-sV0ACha5");
1773 TGeoCompositeShape *sV0AFraR55 = new TGeoCompositeShape("sV0AFraR55","sV0AFraR5b5-sV0ACha5");
1774 TGeoVolume *v0AFraR15 = new TGeoVolume("V0AFraR15",sV0AFraR15,medV0AFra);
1775 TGeoVolume *v0AFraR25 = new TGeoVolume("V0AFraR25",sV0AFraR25,medV0AFra);
1776 TGeoVolume *v0AFraR35 = new TGeoVolume("V0AFraR35",sV0AFraR35,medV0AFra);
1777 TGeoVolume *v0AFraR45 = new TGeoVolume("V0AFraR45",sV0AFraR45,medV0AFra);
1778 TGeoVolume *v0AFraR55 = new TGeoVolume("V0AFraR55",sV0AFraR55,medV0AFra);
1779 v0AFraR15->SetLineColor(kV0AColorFra); v0AFraR25->SetLineColor(kV0AColorFra);
1780 v0AFraR35->SetLineColor(kV0AColorFra); v0AFraR45->SetLineColor(kV0AColorFra);
1781 v0AFraR55->SetLineColor(kV0AColorFra);
1782 v0AFra5->AddNode(v0AFraR15,1);
1783 v0AFra5->AddNode(v0AFraR25,1);
1784 v0AFra5->AddNode(v0AFraR35,1);
1785 v0AFra5->AddNode(v0AFraR45,1);
1786 v0AFra5->AddNode(v0AFraR55,1);
1787 v0ASec5->AddNode(v0AFra5,1);
1788
1789 /// Sensitive scintilator
1790 TGeoVolume *v0ASci5 = new TGeoVolumeAssembly("V0ASci5");
1791 new TGeoTubeSeg( "sV0AR1b5", fV0AR0+fV0AFraWd/2.,
a8b5076e 1792 fV0AR1-fV0AFraWd/2., fV0ASciWd/2., 180.0, 225.0);
11ea46b9 1793 new TGeoTubeSeg( "sV0AR2b5", fV0AR1+fV0AFraWd/2.,
a8b5076e 1794 fV0AR2-fV0AFraWd/2., fV0ASciWd/2., 180.0, 225.0);
11ea46b9 1795 new TGeoTubeSeg( "sV0AR3b5", fV0AR2+fV0AFraWd/2.,
a8b5076e 1796 fV0AR3-fV0AFraWd/2., fV0ASciWd/2., 180.0, 225.0);
11ea46b9 1797 new TGeoTubeSeg( "sV0AR4b5", fV0AR3+fV0AFraWd/2.,
a8b5076e 1798 fV0AR4-fV0AFraWd/2., fV0ASciWd/2., 180.0, 225.0);
11ea46b9 1799 TGeoCompositeShape *sV0AR15 = new TGeoCompositeShape("sV0AR15","sV0AR1b5-sV0ACha5");
1800 TGeoCompositeShape *sV0AR25 = new TGeoCompositeShape("sV0AR25","sV0AR2b5-sV0ACha5");
1801 TGeoCompositeShape *sV0AR35 = new TGeoCompositeShape("sV0AR35","sV0AR3b5-sV0ACha5");
1802 TGeoCompositeShape *sV0AR45 = new TGeoCompositeShape("sV0AR45","sV0AR4b5-sV0ACha5");
1803 TGeoVolume *v0L15 = new TGeoVolume("V0L15",sV0AR15,medV0ASci);
1804 TGeoVolume *v0L25 = new TGeoVolume("V0L25",sV0AR25,medV0ASci);
1805 TGeoVolume *v0L35 = new TGeoVolume("V0L35",sV0AR35,medV0ASci);
1806 TGeoVolume *v0L45 = new TGeoVolume("V0L45",sV0AR45,medV0ASci);
1807 v0L15->SetLineColor(kV0AColorSci); v0L25->SetLineColor(kV0AColorSci);
1808 v0L35->SetLineColor(kV0AColorSci); v0L45->SetLineColor(kV0AColorSci);
1809 v0ASci5->AddNode(v0L15,1);
1810 v0ASci5->AddNode(v0L25,1);
1811 v0ASci5->AddNode(v0L35,1);
1812 v0ASci5->AddNode(v0L45,1);
1813
a8b5076e 1814 /// Segment of octagon
1815 for (int i=0;i<2;i++) {
11ea46b9 1816 v0APts[0+8*i] = -fV0AR6+fV0AOctH2; v0APts[1+8*i] = 0.;
1817 v0APts[2+8*i] = -(fV0AR7-fV0AOctH2)*cos654; v0APts[3+8*i] = -(fV0AR7-fV0AOctH2)*sin654;
1818 v0APts[4+8*i] = -fV0AR7*cos654; v0APts[5+8*i] = -fV0AR7*sin654;
1819 v0APts[6+8*i] = -fV0AR6; v0APts[7+8*i] = 0.;
1820 }
91ae7a77 1821 new TGeoArb8("sV0AOct25", (fV0ASciWd+2*fV0AOctWd)/2., v0APts);
1822 TGeoCompositeShape *sV0AOct2FEEB5 = new TGeoCompositeShape("sV0AOct2FEEB5","sV0AOct25-sV0AFicFEEBSec1:posFicFEEBSec5-sV0AFicOct2Sec1:posFicOct2Sec5");
1823 TGeoVolume *v0AOct25 = new TGeoVolume("V0AOct25", sV0AOct2FEEB5,medV0ASup);
11ea46b9 1824 v0AOct25->SetLineColor(kV0AColorOct);
a8b5076e 1825 TGeoVolume *v0ASup5 = new TGeoVolumeAssembly("V0ASup5");
11ea46b9 1826 v0ASup5->AddNode(v0AOct25,1);
1827 v0ASec5->AddNode(v0ASup5,1);
1828
1829 //Bunch of fibers
1830 v0APts[ 0] = v0APts[ 2] = -14.0;
1831 v0APts[ 1] = v0APts[ 7] = (fV0ASciWd+fV0AOctWd)/2.-0.01;
1832 v0APts[ 3] = v0APts[ 5] = (fV0ASciWd+fV0AOctWd)/2.+0.01;
1833 v0APts[ 4] = v0APts[ 6] = +14.0;
1834 v0APts[ 8] = v0APts[10] = -10.0;
1835 v0APts[ 9] = v0APts[15] = 0.;
1836 v0APts[11] = v0APts[13] = 0.25;
1837 v0APts[12] = v0APts[14] = +10.0;
a8b5076e 1838 new TGeoArb8("sV0AFib15", 11.8, v0APts);
11ea46b9 1839 rot = new TGeoRotation("rot");
1840 rot->RotateX(-90);
1841 rot->RotateZ(90+22.5);
a8b5076e 1842 TGeoCombiTrans *fib15pos = new TGeoCombiTrans("fib15pos", -(fV0AR6-fV0AOctH2+fV0AR5)*cos225/2. +
1843 3.3, -(fV0AR6-fV0AOctH2+fV0AR5)*sin225/2. + 1.5, 0, rot);
1844 fib15pos->RegisterYourself();
1845 TGeoCompositeShape *sV0AFib15Hole = new TGeoCompositeShape("sV0AFib15Hole", "sV0AFib15:fib15pos-sV0AFicR55");
1846 TGeoVolume *v0AFib15Hole = new TGeoVolume("V0AFib15",sV0AFib15Hole,medV0AFib);
1847 v0AFib15Hole->SetLineColor(kV0AColorFib);
1848 new TGeoArb8("sV0AFib25", 11.8, v0APts);
11ea46b9 1849 rot = new TGeoRotation("rot");
1850 rot->RotateX(-90);
1851 rot->RotateY(180);
1852 rot->RotateZ(90+22.5);
a8b5076e 1853 TGeoCombiTrans *fib25pos = new TGeoCombiTrans("fib25pos", -(fV0AR6-fV0AOctH2+fV0AR5)*cos225/2. +
1854 3.3, -(fV0AR6-fV0AOctH2+fV0AR5)*sin225/2. + 1.5, 0, rot);
1855 fib25pos->RegisterYourself();
1856 TGeoCompositeShape *sV0AFib25Hole = new TGeoCompositeShape("sV0AFib25Hole","sV0AFib25:fib25pos-sV0AFicR55");
1857 TGeoVolume *v0AFib25Hole = new TGeoVolume("V0AFib25Hole",sV0AFib25Hole,medV0AFib);
1858 v0AFib25Hole->SetLineColor(kV0AColorFib);
1859 TGeoVolume *v0AFib5 = new TGeoVolumeAssembly("V0AFib5");
1860 v0AFib5->AddNode(v0AFib15Hole,1);
1861 v0AFib5->AddNode(v0AFib25Hole,1);
1862 v0ASec5->AddNode(v0AFib5,1);
1863
1864 /// Non-sensitive scintilator
91ae7a77 1865 new TGeoTubeSeg("sV0AR5S25", fV0AR4+fV0AFraWd/2., fV0AR4 + fV0AR0, fV0ASciWd/2.+2*preShape5, 180.0, 225.0);
a8b5076e 1866 TGeoCompositeShape *sV0AR55 = new TGeoCompositeShape("V0AR55","sV0AR5S25 - sV0ACha5");
1867 TGeoVolume *v0AR55 = new TGeoVolume("V0AR55",sV0AR55,medV0ASci);
1868 v0AR55->SetLineColor(kV0AColorSci);
1869 v0ASci5->AddNode(v0AR55,1);
1870 v0ASec5->AddNode(v0ASci5,1);
11ea46b9 1871
a8b5076e 1872 /// Plates
11ea46b9 1873 for (int i=0;i<2;i++) {
1874 v0APts[0+8*i] = -fV0AR0; v0APts[1+8*i] = 0.;
1875 v0APts[2+8*i] = -fV0AR0*cos654; v0APts[3+8*i] = -fV0AR0*sin654;
1876 v0APts[4+8*i] = -fV0AR7*cos654; v0APts[5+8*i] = -fV0AR7*sin654;
1877 v0APts[6+8*i] = -fV0AR6; v0APts[7+8*i] = 0.;
1878 }
1879 new TGeoArb8("sV0APlaIn5", (fV0APlaWd-2*fV0APlaAl)/2., v0APts);
91ae7a77 1880 TGeoCompositeShape *sV0APlaInNailsHoles5 = new TGeoCompositeShape("sV0APlaInNailsHoles5","sV0APlaIn5-sV0ANailsPlaInHoles5-sV0AFicFEEBSec1:posFicFEEBSec5");
11ea46b9 1881 TGeoVolume *v0APlaInNailsHoles5 = new TGeoVolume("V0APlaInNailsHoles5", sV0APlaInNailsHoles5, medV0APlaIn);
1882 new TGeoArb8("sV0APlaOu5", fV0APlaAl/2., v0APts);
91ae7a77 1883 TGeoCompositeShape *sV0APlaOuNailsHoles5 = new TGeoCompositeShape("sV0APlaOuNailsHoles5","sV0APlaOu5-sV0ANailsPlaOuHoles5-sV0AFicFEEBSec1:posFicFEEBSec5");
11ea46b9 1884 TGeoVolume *v0APlaOuNailsHoles5 = new TGeoVolume("V0APlaOuNailsHoles5", sV0APlaOuNailsHoles5, medV0APlaOu);
1885 v0APlaInNailsHoles5->SetLineColor(kV0AColorPlaIn); v0APlaOuNailsHoles5->SetLineColor(kV0AColorPlaOu);
1886 TGeoVolume *v0APla5 = new TGeoVolumeAssembly("V0APla5");
1887 v0APla5->AddNode(v0APlaInNailsHoles5,1);
1888 v0APla5->AddNode(v0APlaOuNailsHoles5,1,new TGeoTranslation(0,0,(fV0APlaWd-fV0APlaAl)/2.));
1889 v0APla5->AddNode(v0APlaOuNailsHoles5,2,new TGeoTranslation(0,0,-(fV0APlaWd-fV0APlaAl)/2.));
1890 v0ASec5->AddNode(v0APla5,1,new TGeoTranslation(0,0,(fV0ASciWd+2*fV0AOctWd+fV0APlaWd)/2.));
1891 v0ASec5->AddNode(v0APla5,2,new TGeoTranslation(0,0,-(fV0ASciWd+2*fV0AOctWd+fV0APlaWd)/2.));
1892
a8b5076e 1893 /// PMBox
11ea46b9 1894 TGeoVolume* v0APM5 = new TGeoVolumeAssembly("V0APM5");
1895 new TGeoBBox("sV0APMB15", fV0APMBWd/2., fV0APMBHt/2., fV0APMBTh/2.);
1896 new TGeoBBox("sV0APMB25", fV0APMBWd/2.-fV0APMBWdW, fV0APMBHt/2.-fV0APMBHtW, fV0APMBTh/2.-fV0APMBThW);
1897 TGeoCompositeShape *sV0APMB5 = new TGeoCompositeShape("sV0APMB5","sV0APMB15-sV0APMB25");
1898 TGeoVolume *v0APMB5 = new TGeoVolume("V0APMB5",sV0APMB5, medV0APMAlum);
1899 v0APMB5->SetLineColor(kV0AColorPMA);
1900 v0APM5->AddNode(v0APMB5,1);
1901
a8b5076e 1902 /// PMTubes
11ea46b9 1903 TGeoTube *sV0APMT15 = new TGeoTube("sV0APMT15", fV0APMTR1, fV0APMTR2, fV0APMTH/2.);
1904 TGeoVolume *v0APMT15 = new TGeoVolume("V0APMT15", sV0APMT15, medV0APMGlass);
1905 TGeoTube *sV0APMT25 = new TGeoTube("sV0APMT25", fV0APMTR3, fV0APMTR4, fV0APMTH/2.);
1906 TGeoVolume *v0APMT25 = new TGeoVolume("V0APMT25", sV0APMT25, medV0APMAlum);
1907 TGeoVolume *v0APMT5 = new TGeoVolumeAssembly("V0APMT5");
1908 TGeoTube *sV0APMTT5 = new TGeoTube("sV0APMTT5", 0., fV0APMTR4, fV0APMTB/2.);
2ca4471e 1909 TGeoVolume *v0APMTT5 = new TGeoVolume("V0APMTT5", sV0APMTT5, medV0APMAlum);
11ea46b9 1910 v0APMT5->SetLineColor(kV0AColorPMG);
1911 v0APMT25->SetLineColor(kV0AColorPMA);
1912 v0APMTT5->SetLineColor(kV0AColorPMA);
1913 rot = new TGeoRotation("rot", 90, 0, 180, 0, 90, 90);
1914 v0APMT5->AddNode(v0APMT15,1,rot);
1915 v0APMT5->AddNode(v0APMT25,1,rot);
1916 v0APMT5->AddNode(v0APMTT5,1,new TGeoCombiTrans(0,(fV0APMTH+fV0APMTB)/2.,0,rot));
1917 double autoShift5 = (fV0APMBWd-2*fV0APMBWdW)/4.;
1918 v0APM5->AddNode(v0APMT5, 1, new TGeoTranslation(-1.5*autoShift5, 0, 0));
1919 v0APM5->AddNode(v0APMT5, 2, new TGeoTranslation(-0.5*autoShift5, 0, 0));
1920 v0APM5->AddNode(v0APMT5, 3, new TGeoTranslation(+0.5*autoShift5, 0, 0));
1921 v0APM5->AddNode(v0APMT5, 4, new TGeoTranslation(+1.5*autoShift5, 0, 0));
1922
a8b5076e 1923 /// PM
11ea46b9 1924 rot = new TGeoRotation("rot");
1925 rot->RotateX(-90+30);
1926 rot->RotateY(0);
1927 rot->RotateZ(-65-3);
1928 double cosAngPMB5 = TMath::Cos(fV0APMBAng*TMath::DegToRad());
1929 double sinAngPMB5 = TMath::Sin(fV0APMBAng*TMath::DegToRad());
1930 double shiftZ5 = fV0APMBHt/2. * cosAngPMB5
1931 - ( fV0ASciWd + 2 * fV0AOctWd + 2 * fV0APlaWd )/2. - fV0APMBTh/2. * sinAngPMB5;
1932 double shiftR5 = fV0AR6 + fV0AOctH2 + fV0APlaAl;
1933 v0ASec5->AddNode(v0APM5,1, new TGeoCombiTrans( -shiftR5*cos225-1.3, -shiftR5*sin225, shiftZ5, rot));
1934
a8b5076e 1935 // Aluminium nails
1936 TGeoTube *sV0ANail51 = new TGeoTube("sV0ANail51", 0.0, 0.4, 5.09/2.);
1937 TGeoVolume *v0ANail51 = new TGeoVolume("V0ANail51", sV0ANail51, medV0APMAlum);
1938 v0ANail51->SetLineColor(kV0AColorPMA);// this is the color for aluminium
1939 v0ASec5->AddNode(v0ANail51,1,new TGeoTranslation(-42.9,-0.51,0.0));
1940 TGeoTube *sV0ANail52 = new TGeoTube("sV0ANail52", 0.0, 0.4, 5.09/2.);
1941 TGeoVolume *v0ANail52 = new TGeoVolume("V0ANail52", sV0ANail52, medV0APMAlum);
1942 v0ANail52->SetLineColor(kV0AColorPMA);
1943 v0ASec5->AddNode(v0ANail52,1,new TGeoTranslation(-30.8,-30.04,0.0));
1944
1945 // Adding sector to v0LE volume
1946 v0LE->AddNode(v0ASec5, 1);
11ea46b9 1947
1948
a8b5076e 1949 //Definition of sector 6
11ea46b9 1950 TGeoVolume *v0ASec6 = new TGeoVolumeAssembly("V0ASec6");
1951
1952 /// For boolean sustraction
1953 double preShape6 = 0.2;
1954 for (int i=0;i<2;i++) {
1955 v0APts[0+8*i] = -preShape6; v0APts[1+8*i] = -fV0AR0+fV0AFraWd/2.-preShape6;
a32c7883 1956 v0APts[2+8*i] = 0.0; v0APts[3+8*i] = -fV0AR0+fV0AFraWd/2.-preShape6;
1957 v0APts[4+8*i] = 0.0; v0APts[5+8*i] = -fV0AR4-fV0AFraWd/2.+preShape6;
11ea46b9 1958 v0APts[6+8*i] = -preShape6; v0APts[7+8*i] = -fV0AR4-fV0AFraWd/2.+preShape6;
1959 }
1960 new TGeoArb8("sV0ACha16",fV0ASciWd/1.5,v0APts);
1961 for (int i=0;i<2;i++) {
91ae7a77 1962 v0APts[0+8*i] = -fV0AR0*cos45+preShape6;
1963 v0APts[1+8*i] = -(fV0AR0-fV0AFraWd)*sin45+preShape6;
1964 v0APts[2+8*i] = -(fV0AR0-fV0AFraWd/2.)*cos45+preShape6;
a8b5076e 1965 v0APts[3+8*i] = -(fV0AR0-fV0AFraWd/2.)*sin45;
91ae7a77 1966 v0APts[4+8*i] = -(fV0AR4+fV0AFraWd/2.)*cos45-preShape6;
1967 v0APts[5+8*i] = -(fV0AR4+fV0AFraWd/2.)*sin45-preShape6;
1968 v0APts[6+8*i] = -(fV0AR4+fV0AFraWd)*cos45-preShape6;
1969 v0APts[7+8*i] = -fV0AR4*sin45-preShape6;
11ea46b9 1970 }
91ae7a77 1971 new TGeoArb8("sV0ACha26", fV0ASciWd/2.+2.*preShape6, v0APts);
11ea46b9 1972 new TGeoCompositeShape("sV0ACha126","sV0ACha16+sV0ACha26");
1973 new TGeoTube("sV0ANail16Hole", 0.0, 0.4, 1.65);
1974 TGeoTranslation *pos16 = new TGeoTranslation("pos16",-0.51,-42.9,0.0);
1975 pos16->RegisterYourself();
a8b5076e 1976 new TGeoTube("sV0ANail26Hole", 0.0, 0.4, 1.65);
1977 TGeoTranslation *pos26 = new TGeoTranslation("pos26",-30.05,-30.79,0.0);
1978 pos26->RegisterYourself();
1979 new TGeoCompositeShape("sV0ANailsHoles6","sV0ANail16Hole:pos16+sV0ANail26Hole:pos26");
1980 new TGeoCompositeShape("sV0ACha6","sV0ACha126+sV0ANailsHoles6");
91ae7a77 1981 new TGeoTubeSeg("sV0AFicR56", fV0AR4+fV0AFraWd/2., fV0AR4 + fV0AR0, fV0ASciWd/2.+2*preShape6, 225, 270.0);
a8b5076e 1982 new TGeoTube("sV0ANail1PlaInHole6", 0.0, 0.4, (fV0APlaWd-2*fV0APlaAl)/2.);
1983 new TGeoTube("sV0ANail1PlaOuHole6", 0.0, 0.4, (fV0APlaAl)/2.);
1984
11ea46b9 1985 /// Frame
1986 TGeoVolume *v0AFra6 = new TGeoVolumeAssembly("V0AFra6");
1987 for (int i=0;i<2;i++) {
a32c7883 1988 v0APts[0+8*i] = -fV0AFraWd/2.; v0APts[1+8*i] = -fV0AR0-fV0AFraWd/2.;
1989 v0APts[2+8*i] = 0.; v0APts[3+8*i] = -fV0AR0-fV0AFraWd/2.;
1990 v0APts[4+8*i] = 0.; v0APts[5+8*i] = -fV0AR4+fV0AFraWd/2.;
1991 v0APts[6+8*i] = -fV0AFraWd/2.; v0APts[7+8*i] = -fV0AR4+fV0AFraWd/2.;
11ea46b9 1992 }
1993 TGeoArb8 *sV0AFraB16 = new TGeoArb8("sV0AFraB16",fV0ASciWd/2.,v0APts);
1994 TGeoVolume *v0AFraB16 = new TGeoVolume("V0AFraB16",sV0AFraB16,medV0AFra);
1995 for (int i=0;i<2;i++) {
a32c7883 1996 v0APts[0+8*i] = -(fV0AR0+fV0AFraWd/2.)*cos45;
1997 v0APts[1+8*i] = -(fV0AR0+fV0AFraWd/2.)*sin45;
1998 v0APts[2+8*i] = -fV0AR0*cos45;
1999 v0APts[3+8*i] = -(fV0AR0+fV0AFraWd)*sin45;
2000 v0APts[4+8*i] = -(fV0AR4-fV0AFraWd/6.)*cos45;
2001 v0APts[5+8*i] = -fV0AR4*sin45;
a8b5076e 2002 v0APts[6+8*i] = -(fV0AR4-fV0AFraWd)*cos45;
a32c7883 2003 v0APts[7+8*i] = -(fV0AR4-fV0AFraWd/2.)*sin45;
11ea46b9 2004 }
2005 TGeoArb8 *sV0AFraB26 = new TGeoArb8("sV0AFraB26", fV0ASciWd/2., v0APts);
2006 TGeoVolume *v0AFraB26 = new TGeoVolume("V0AFraB26",sV0AFraB26,medV0AFra);
2007 v0AFraB16->SetLineColor(kV0AColorFra); v0AFraB26->SetLineColor(kV0AColorFra);
2008 v0AFra6->AddNode(v0AFraB16,1);
2009 v0AFra6->AddNode(v0AFraB26,1); // Prefer 2 GeoObjects insted of 3 GeoMovements
2010 new TGeoTubeSeg( "sV0AFraR1b6", fV0AR0-fV0AFraWd/2.,
a8b5076e 2011 fV0AR0+fV0AFraWd/2., fV0ASciWd/2., 225.0, 270.0);
11ea46b9 2012 new TGeoTubeSeg( "sV0AFraR2b6", fV0AR1-fV0AFraWd/2.,
a8b5076e 2013 fV0AR1+fV0AFraWd/2., fV0ASciWd/2., 225.0, 270.0);
11ea46b9 2014 new TGeoTubeSeg( "sV0AFraR3b6", fV0AR2-fV0AFraWd/2.,
a8b5076e 2015 fV0AR2+fV0AFraWd/2., fV0ASciWd/2., 225.0, 270.0);
11ea46b9 2016 new TGeoTubeSeg( "sV0AFraR4b6", fV0AR3-fV0AFraWd/2.,
a8b5076e 2017 fV0AR3+fV0AFraWd/2., fV0ASciWd/2., 225.0, 270.0);
11ea46b9 2018 new TGeoTubeSeg( "sV0AFraR5b6", fV0AR4-fV0AFraWd/2.,
a8b5076e 2019 fV0AR4+fV0AFraWd/2., fV0ASciWd/2., 225.0, 270.0);
11ea46b9 2020 TGeoCompositeShape *sV0AFraR16 = new TGeoCompositeShape("sV0AFraR16","sV0AFraR1b6-sV0ACha6");
2021 TGeoCompositeShape *sV0AFraR26 = new TGeoCompositeShape("sV0AFraR26","sV0AFraR2b6-sV0ACha6");
2022 TGeoCompositeShape *sV0AFraR36 = new TGeoCompositeShape("sV0AFraR36","sV0AFraR3b6-sV0ACha6");
2023 TGeoCompositeShape *sV0AFraR46 = new TGeoCompositeShape("sV0AFraR46","sV0AFraR4b6-sV0ACha6");
2024 TGeoCompositeShape *sV0AFraR56 = new TGeoCompositeShape("sV0AFraR56","sV0AFraR5b6-sV0ACha6");
2025 TGeoVolume *v0AFraR16 = new TGeoVolume("V0AFraR16",sV0AFraR16,medV0AFra);
2026 TGeoVolume *v0AFraR26 = new TGeoVolume("V0AFraR26",sV0AFraR26,medV0AFra);
2027 TGeoVolume *v0AFraR36 = new TGeoVolume("V0AFraR36",sV0AFraR36,medV0AFra);
2028 TGeoVolume *v0AFraR46 = new TGeoVolume("V0AFraR46",sV0AFraR46,medV0AFra);
2029 TGeoVolume *v0AFraR56 = new TGeoVolume("V0AFraR56",sV0AFraR56,medV0AFra);
2030 v0AFraR16->SetLineColor(kV0AColorFra); v0AFraR26->SetLineColor(kV0AColorFra);
2031 v0AFraR36->SetLineColor(kV0AColorFra); v0AFraR46->SetLineColor(kV0AColorFra);
2032 v0AFraR56->SetLineColor(kV0AColorFra);
2033 v0AFra6->AddNode(v0AFraR16,1);
2034 v0AFra6->AddNode(v0AFraR26,1);
2035 v0AFra6->AddNode(v0AFraR36,1);
2036 v0AFra6->AddNode(v0AFraR46,1);
2037 v0AFra6->AddNode(v0AFraR56,1);
2038 v0ASec6->AddNode(v0AFra6,1);
2039
2040 /// Sensitive scintilator
2041 TGeoVolume *v0ASci6 = new TGeoVolumeAssembly("V0ASci6");
2042 new TGeoTubeSeg( "sV0AR1b6", fV0AR0+fV0AFraWd/2.,
a8b5076e 2043 fV0AR1-fV0AFraWd/2., fV0ASciWd/2., 225.0, 270.0);
11ea46b9 2044 new TGeoTubeSeg( "sV0AR2b6", fV0AR1+fV0AFraWd/2.,
a8b5076e 2045 fV0AR2-fV0AFraWd/2., fV0ASciWd/2., 225.0, 270.0);
11ea46b9 2046 new TGeoTubeSeg( "sV0AR3b6", fV0AR2+fV0AFraWd/2.,
a8b5076e 2047 fV0AR3-fV0AFraWd/2., fV0ASciWd/2., 225.0, 270.0);
11ea46b9 2048 new TGeoTubeSeg( "sV0AR4b6", fV0AR3+fV0AFraWd/2.,
a8b5076e 2049 fV0AR4-fV0AFraWd/2., fV0ASciWd/2., 225.0, 270.0);
11ea46b9 2050 TGeoCompositeShape *sV0AR16 = new TGeoCompositeShape("sV0AR16","sV0AR1b6-sV0ACha6");
2051 TGeoCompositeShape *sV0AR26 = new TGeoCompositeShape("sV0AR26","sV0AR2b6-sV0ACha6");
2052 TGeoCompositeShape *sV0AR36 = new TGeoCompositeShape("sV0AR36","sV0AR3b6-sV0ACha6");
2053 TGeoCompositeShape *sV0AR46 = new TGeoCompositeShape("sV0AR46","sV0AR4b6-sV0ACha6");
2054 TGeoVolume *v0L16 = new TGeoVolume("V0L16",sV0AR16,medV0ASci);
2055 TGeoVolume *v0L26 = new TGeoVolume("V0L26",sV0AR26,medV0ASci);
2056 TGeoVolume *v0L36 = new TGeoVolume("V0L36",sV0AR36,medV0ASci);
2057 TGeoVolume *v0L46 = new TGeoVolume("V0L46",sV0AR46,medV0ASci);
2058 v0L16->SetLineColor(kV0AColorSci); v0L26->SetLineColor(kV0AColorSci);
2059 v0L36->SetLineColor(kV0AColorSci); v0L46->SetLineColor(kV0AColorSci);
2060 v0ASci6->AddNode(v0L16,1);
2061 v0ASci6->AddNode(v0L26,1);
2062 v0ASci6->AddNode(v0L36,1);
2063 v0ASci6->AddNode(v0L46,1);
a8b5076e 2064
2065 // Bunch of fibers
2066 for (int i=0;i<2;i++) {
2067 v0APts[0+8*i] = -10.0; v0APts[1+8*i] = 13.1;
2068 v0APts[2+8*i] = 10.0; v0APts[3+8*i] = 13.1;
2069 v0APts[4+8*i] = 8.0; v0APts[5+8*i] = -29.0;
2070 v0APts[6+8*i] = -12.0; v0APts[7+8*i] = -12.0;
2071 }
2072 new TGeoArb8("sV0AFib16", 0.01, v0APts);
2073 rot = new TGeoRotation("rot");
2074 rot->RotateX(2.0);
2075 rot->RotateY(180.0);
2076 rot->RotateZ(90+22.5);
2077 TGeoCombiTrans *fib16pos = new TGeoCombiTrans("fib16pos", -40.0 + 3.3, -50.0 + 1.5, 0.5, rot);
2078 fib16pos->RegisterYourself();
2079 TGeoCompositeShape *sV0AFib16Hole = new TGeoCompositeShape("sV0AFib16Hole", "sV0AFib16:fib16pos-sV0AFicR56");
2080 TGeoVolume *v0AFib16Hole = new TGeoVolume("V0AFib16Hole",sV0AFib16Hole,medV0AFib);
2081 v0AFib16Hole->SetLineColor(kV0AColorFib);
2082 new TGeoArb8("sV0AFib26", 0.01, v0APts);
2083 rot = new TGeoRotation("rot");
2084 rot->RotateX(-2.0);
2085 rot->RotateY(180.0);
2086 rot->RotateZ(90+22.5);
2087 TGeoCombiTrans *fib26pos = new TGeoCombiTrans("fib26pos", -40.0 + 3.3, -50.0 + 1.5, -0.5, rot);
2088 fib26pos->RegisterYourself();
2089 TGeoCompositeShape *sV0AFib26Hole = new TGeoCompositeShape("sV0AFib26Hole", "sV0AFib26:fib26pos-sV0AFicR56");
2090 TGeoVolume *v0AFib26Hole = new TGeoVolume("V0AFib26Hole",sV0AFib26Hole,medV0AFib);
2091 v0AFib26Hole->SetLineColor(kV0AColorFib);
2092 TGeoVolume *v0AFib6 = new TGeoVolumeAssembly("V0AFib6");
2093 v0AFib6->AddNode(v0AFib16Hole,1);
2094 v0AFib6->AddNode(v0AFib26Hole,1);
2095 v0ASec6->AddNode(v0AFib6,1);
11ea46b9 2096
2097 /// Non-sensitive scintilator
91ae7a77 2098 new TGeoTubeSeg("sV0AR5S26", fV0AR4+fV0AFraWd/2., fV0AR4 + fV0AR0, fV0ASciWd/2.+2*preShape6, 225.0, 270.0);
11ea46b9 2099 TGeoCompositeShape *sV0AR56 = new TGeoCompositeShape("V0AR56","sV0AR5S26 - sV0ACha6");
2100 TGeoVolume *v0AR56 = new TGeoVolume("V0AR56",sV0AR56,medV0ASci);
2101 v0AR56->SetLineColor(kV0AColorSci);
2102 v0ASci6->AddNode(v0AR56,1);
2103 v0ASec6->AddNode(v0ASci6,1);
2104
a8b5076e 2105 /// Segment of octagon
11ea46b9 2106 for (int i=0;i<2;i++) {
2107 v0APts[0+8*i] = 0.; v0APts[1+8*i] = -(fV0AR7-fV0AOctH2)*sin654;
2108 v0APts[2+8*i] = 0.; v0APts[3+8*i] = -fV0AR7*sin654;
2109 v0APts[4+8*i] = -fV0AR7*cos654; v0APts[5+8*i] = -fV0AR7*sin654;
2110 v0APts[6+8*i] = -(fV0AR7-fV0AOctH2)*cos654; v0APts[7+8*i] = -(fV0AR7-fV0AOctH2)*sin654;
2111 }
2112 TGeoArb8 *sV0AOct26 = new TGeoArb8("sV0AOct26", (fV0ASciWd+2*fV0AOctWd)/2., v0APts);
2113 TGeoVolume *v0AOct26 = new TGeoVolume("V0AOct26", sV0AOct26,medV0ASup);
2114 v0AOct26->SetLineColor(kV0AColorOct);
a8b5076e 2115 TGeoVolume *v0ASup6 = new TGeoVolumeAssembly("V0ASup6");
11ea46b9 2116 v0ASup6->AddNode(v0AOct26,1);
2117 v0ASec6->AddNode(v0ASup6,1);
2118
11ea46b9 2119 /// Plates
11ea46b9 2120 for (int i=0;i<2;i++) {
2121 v0APts[0+8*i] = 0.; v0APts[1+8*i] = -fV0AR0;
2122 v0APts[2+8*i] = 0.; v0APts[3+8*i] = -fV0AR7*sin654;
2123 v0APts[4+8*i] = -fV0AR7*cos654; v0APts[5+8*i] = -fV0AR7*sin654;
2124 v0APts[6+8*i] = -fV0AR0*cos654; v0APts[7+8*i] = -fV0AR0*sin654;
2125 }
2126 new TGeoArb8("sV0APlaIn6", (fV0APlaWd-2*fV0APlaAl)/2., v0APts);
2127 TGeoCompositeShape *sV0APlaInNailsHoles6 = new TGeoCompositeShape("sV0APlaInNailsHoles6","sV0APlaIn6-sV0ANail1PlaInHole6:pos16");
2128 TGeoVolume *v0APlaInNailsHoles6 = new TGeoVolume("V0APlaInNailsHoles6", sV0APlaInNailsHoles6, medV0APlaIn);
2129 new TGeoArb8("sV0APlaOu6", fV0APlaAl/2., v0APts);
2130 TGeoCompositeShape *sV0APlaOuNailsHoles6 = new TGeoCompositeShape("sV0APlaOuNailsHoles6","sV0APlaOu6-sV0ANail1PlaOuHole6:pos16");
2131 TGeoVolume *v0APlaOuNailsHoles6 = new TGeoVolume("V0APlaOuNailsHoles6", sV0APlaOuNailsHoles6, medV0APlaOu);
2132 v0APlaInNailsHoles6->SetLineColor(kV0AColorPlaIn); v0APlaOuNailsHoles6->SetLineColor(kV0AColorPlaOu);
2133 TGeoVolume *v0APla6 = new TGeoVolumeAssembly("V0APla6");
2134 v0APla6->AddNode(v0APlaInNailsHoles6,1);
2135 v0APla6->AddNode(v0APlaOuNailsHoles6,1,new TGeoTranslation(0,0,(fV0APlaWd-fV0APlaAl)/2.));
2136 v0APla6->AddNode(v0APlaOuNailsHoles6,2,new TGeoTranslation(0,0,-(fV0APlaWd-fV0APlaAl)/2.));
2137 v0ASec6->AddNode(v0APla6,1,new TGeoTranslation(0,0,(fV0ASciWd+2*fV0AOctWd+fV0APlaWd)/2.));
2138 v0ASec6->AddNode(v0APla6,2,new TGeoTranslation(0,0,-(fV0ASciWd+2*fV0AOctWd+fV0APlaWd)/2.));
2139
a8b5076e 2140 /// PMBox
2141 TGeoVolume* v0APM6 = new TGeoVolumeAssembly("V0APM6");
2142 new TGeoBBox("sV0APMB16", fV0APMBWd/2., fV0APMBHt/2., fV0APMBTh/2.);
2143 new TGeoBBox("sV0APMB26", fV0APMBWd/2.-fV0APMBWdW, fV0APMBHt/2.-fV0APMBHtW, fV0APMBTh/2.-fV0APMBThW);
2144 TGeoCompositeShape *sV0APMB6 = new TGeoCompositeShape("sV0APMB6","sV0APMB16-sV0APMB26");
2145 TGeoVolume *v0APMB6 = new TGeoVolume("V0APMB6",sV0APMB6, medV0APMAlum);
2146 v0APMB6->SetLineColor(kV0AColorPMA);
2147 v0APM6->AddNode(v0APMB6,1);
2148
2149 /// PMTubes
2150 TGeoTube *sV0APMT16 = new TGeoTube("sV0APMT16", fV0APMTR1, fV0APMTR2, fV0APMTH/2.);
2151 TGeoVolume *v0APMT16 = new TGeoVolume("V0APMT16", sV0APMT16, medV0APMGlass);
2152 TGeoTube *sV0APMT26 = new TGeoTube("sV0APMT26", fV0APMTR3, fV0APMTR4, fV0APMTH/2.);
2153 TGeoVolume *v0APMT26 = new TGeoVolume("V0APMT26", sV0APMT26, medV0APMAlum);
2154 TGeoVolume *v0APMT6 = new TGeoVolumeAssembly("V0APMT6");
2155 TGeoTube *sV0APMTT6 = new TGeoTube("sV0APMTT6", 0., fV0APMTR4, fV0APMTB/2.);
2156 TGeoVolume *v0APMTT6 = new TGeoVolume("V0APMTT6", sV0APMTT6, medV0APMAlum);
2157 v0APMT6->SetLineColor(kV0AColorPMG);
2158 v0APMT26->SetLineColor(kV0AColorPMA);
2159 v0APMTT6->SetLineColor(kV0AColorPMA);
2160 rot = new TGeoRotation("rot", 90, 0, 180, 0, 90, 90);
2161 v0APMT6->AddNode(v0APMT16,1,rot);
2162 v0APMT6->AddNode(v0APMT26,1,rot);
2163 v0APMT6->AddNode(v0APMTT6,1,new TGeoCombiTrans(0,(fV0APMTH+fV0APMTB)/2.,0,rot));
2164 double autoShift6 = (fV0APMBWd-2*fV0APMBWdW)/4.;
2165 v0APM6->AddNode(v0APMT6, 1, new TGeoTranslation(-1.5*autoShift6, 0, 0));
2166 v0APM6->AddNode(v0APMT6, 2, new TGeoTranslation(-0.5*autoShift6, 0, 0));
2167 v0APM6->AddNode(v0APMT6, 3, new TGeoTranslation(+0.5*autoShift6, 0, 0));
2168 v0APM6->AddNode(v0APMT6, 4, new TGeoTranslation(+1.5*autoShift6, 0, 0));
2169
2170 /// PM
2171 rot = new TGeoRotation("rot");
2172 rot->RotateX(-90+30);
2173 rot->RotateY(0);
2174 rot->RotateZ(-65-3);
2175 double cosAngPMB6 = TMath::Cos(fV0APMBAng*TMath::DegToRad());
2176 double sinAngPMB6 = TMath::Sin(fV0APMBAng*TMath::DegToRad());
2177 double shiftZ6 = fV0APMBHt/2. * cosAngPMB6
2178 - ( fV0ASciWd + 2 * fV0AOctWd + 2 * fV0APlaWd )/2. - fV0APMBTh/2. * sinAngPMB6;
2179 double shiftR6 = fV0AR6 + fV0AR1 + fV0AOctWd + fV0APlaAl/3.;
2180 v0ASec6->AddNode(v0APM6,1, new TGeoCombiTrans( -shiftR6*cos45-1.3, -shiftR6*sin45, shiftZ6, rot));
2181
11ea46b9 2182 /// Support
a8b5076e 2183 TGeoBBox *sV0ASuppbl = new TGeoBBox("sV0ASuppbl", 2.0, 18.13, fV0ASciWd/2.);
11ea46b9 2184 TGeoVolume *v0ASuppbl = new TGeoVolume("V0ASuppbl", sV0ASuppbl, medV0ASup);
2185 v0ASuppbl->SetLineColor(kV0AColorOct);
a8b5076e 2186 v0ASec6->AddNode(v0ASuppbl,1,new TGeoTranslation(-2.0,-63.64,0.0));
2187
2188 // Aluminium nail
2189 TGeoTube *sV0ANail61 = new TGeoTube("sV0ANail61", 0.0, 0.4, 5.09/2.);
2190 TGeoVolume *v0ANail61 = new TGeoVolume("V0ANail61", sV0ANail61, medV0APMAlum);
2191 v0ANail61->SetLineColor(kV0AColorPMA);// this is the color for aluminium
2192 v0ASec6->AddNode(v0ANail61,1,new TGeoTranslation(-0.51,-42.9,0.0));
2193 TGeoTube *sV0ANail62 = new TGeoTube("sV0ANail62", 0.0, 0.4, 5.09/2.);
2194 TGeoVolume *v0ANail62 = new TGeoVolume("V0ANail62", sV0ANail62, medV0APMAlum);
2195 v0ANail62->SetLineColor(kV0AColorPMA);
2196 v0ASec6->AddNode(v0ANail62,1,new TGeoTranslation(-30.05,-30.79,0.0));
2197
2198 // Adding sector to v0LE volume
2199 v0LE->AddNode(v0ASec6, 1);
2200
2201
f316b8fc 2202 //Definition of sector 7
11ea46b9 2203 TGeoVolume *v0ASec7 = new TGeoVolumeAssembly("V0ASec7");
2204
2205 /// For boolean sustraction
2206 double preShape7 = 0.2;
2207 for (int i=0;i<2;i++) {
2208 v0APts[0+8*i] = 0.0; v0APts[1+8*i] = -fV0AR0+fV0AFraWd/2.-preShape7;
2209 v0APts[2+8*i] = fV0AFraWd/2.; v0APts[3+8*i] = -fV0AR0+fV0AFraWd/2.-preShape7;
2210 v0APts[4+8*i] = fV0AFraWd/2.; v0APts[5+8*i] = -fV0AR4-fV0AFraWd/2.+preShape7;
2211 v0APts[6+8*i] = 0.0; v0APts[7+8*i] = -fV0AR4-fV0AFraWd/2.+preShape7;
2212 }
2213 new TGeoArb8("sV0ACha17",fV0ASciWd/1.5,v0APts);
2214 for (int i=0;i<2;i++) {
a32c7883 2215 v0APts[0+8*i] = (fV0AR0-fV0AFraWd/2.)*cos45-preShape7;
2216 v0APts[1+8*i] = -(fV0AR0-fV0AFraWd/2.)*sin45;
2217 v0APts[2+8*i] = fV0AR0*cos45-preShape7;
2218 v0APts[3+8*i] = -(fV0AR0-fV0AFraWd)*sin45+preShape7;
2219 v0APts[4+8*i] = (fV0AR4+fV0AFraWd)*cos45+preShape7;
2220 v0APts[5+8*i] = -fV0AR4*sin45-preShape7;
2221 v0APts[6+8*i] = (fV0AR4+fV0AFraWd/2.)*cos45+preShape7;
2222 v0APts[7+8*i] = -(fV0AR4+fV0AFraWd/2.)*sin45-2.*preShape7;
11ea46b9 2223 }
91ae7a77 2224 new TGeoArb8("sV0ACha27", fV0ASciWd/2.+2.*preShape7, v0APts);
11ea46b9 2225 new TGeoCompositeShape("sV0ACha127","sV0ACha17+sV0ACha27");
2226 new TGeoTube("sV0ANail17Hole", 0.0, 0.4, 1.65);
2227 TGeoTranslation *pos17 = new TGeoTranslation("pos17",0.51,-42.9,0.0);
2228 pos17->RegisterYourself();
a8b5076e 2229 new TGeoTube("sV0ANail27Hole", 0.0, 0.4, 1.65);
2230 TGeoTranslation *pos27 = new TGeoTranslation("pos27",30.05,-30.79,0.0);
2231 pos27->RegisterYourself();
2232 new TGeoCompositeShape("sV0ANailsHoles7","sV0ANail17Hole:pos17+sV0ANail27Hole:pos27");
2233 new TGeoCompositeShape("sV0ACha7","sV0ACha127+sV0ANailsHoles7");
91ae7a77 2234 new TGeoTubeSeg("sV0AFicR57", fV0AR4+fV0AFraWd/2., fV0AR4 + fV0AR0, fV0ASciWd/2.+2*preShape7, 270.0, 315.0);
a8b5076e 2235 new TGeoTube("sV0ANail1PlaInHole7", 0.0, 0.4, (fV0APlaWd-2*fV0APlaAl)/2.);
2236 new TGeoTube("sV0ANail1PlaOuHole7", 0.0, 0.4, (fV0APlaAl)/2.);
11ea46b9 2237
2238 /// Frame
2239 TGeoVolume *v0AFra7 = new TGeoVolumeAssembly("V0AFra7");
2240 for (int i=0;i<2;i++) {
2241 v0APts[0+8*i] = 0.; v0APts[1+8*i] = -fV0AR0-fV0AFraWd/2.;
2242 v0APts[2+8*i] = fV0AFraWd/2.; v0APts[3+8*i] = -fV0AR0-fV0AFraWd/2.;
2243 v0APts[4+8*i] = fV0AFraWd/2.; v0APts[5+8*i] = -fV0AR4+fV0AFraWd/2.;
2244 v0APts[6+8*i] = 0.; v0APts[7+8*i] = -fV0AR4+fV0AFraWd/2.;
2245 }
2246 TGeoArb8 *sV0AFraB17 = new TGeoArb8("sV0AFraB17",fV0ASciWd/2.,v0APts);
2247 TGeoVolume *v0AFraB17 = new TGeoVolume("V0AFraB17",sV0AFraB17,medV0AFra);
2248 for (int i=0;i<2;i++) {
a32c7883 2249 v0APts[0+8*i] = fV0AR0*cos45-fV0AFraWd;
2250 v0APts[1+8*i] = -(fV0AR0-fV0AFraWd)*sin45;
a8b5076e 2251 v0APts[2+8*i] = (fV0AR0-fV0AFraWd/2.)*cos45;
2252 v0APts[3+8*i] = -(fV0AR0-fV0AFraWd/2.)*sin45;
93f5bf1d 2253 v0APts[4+8*i] = (fV0AR4+fV0AFraWd/2.)*cos45/2.;
a32c7883 2254 v0APts[5+8*i] = -fV0AR4*sin45/2.;
2255 v0APts[6+8*i] = (fV0AR4+fV0AFraWd/4.)*cos45/2.;
2256 v0APts[7+8*i] = -(fV0AR4+fV0AFraWd/2.)*sin45/2.;
11ea46b9 2257 }
2258 TGeoArb8 *sV0AFraB27 = new TGeoArb8("sV0AFraB27", fV0ASciWd/2., v0APts);
2259 TGeoVolume *v0AFraB27 = new TGeoVolume("V0AFraB27",sV0AFraB27,medV0AFra);
2260 v0AFraB17->SetLineColor(kV0AColorFra); v0AFraB27->SetLineColor(kV0AColorFra);
2261 v0AFra7->AddNode(v0AFraB17,1);
2262 v0AFra7->AddNode(v0AFraB27,1); // Prefer 2 GeoObjects insted of 3 GeoMovements
2263 new TGeoTubeSeg( "sV0AFraR1b7", fV0AR0-fV0AFraWd/2.,
a8b5076e 2264 fV0AR0+fV0AFraWd/2., fV0ASciWd/2., 270.0, 315.0);
11ea46b9 2265 new TGeoTubeSeg( "sV0AFraR2b7", fV0AR1-fV0AFraWd/2.,
a8b5076e 2266 fV0AR1+fV0AFraWd/2., fV0ASciWd/2., 270.0, 315.0);
11ea46b9 2267 new TGeoTubeSeg( "sV0AFraR3b7", fV0AR2-fV0AFraWd/2.,
a8b5076e 2268 fV0AR2+fV0AFraWd/2., fV0ASciWd/2., 270.0, 315.0);
11ea46b9 2269 new TGeoTubeSeg( "sV0AFraR4b7", fV0AR3-fV0AFraWd/2.,
a8b5076e 2270 fV0AR3+fV0AFraWd/2., fV0ASciWd/2., 270.0, 315.0);
11ea46b9 2271 new TGeoTubeSeg( "sV0AFraR5b7", fV0AR4-fV0AFraWd/2.,
a8b5076e 2272 fV0AR4+fV0AFraWd/2., fV0ASciWd/2., 270.0, 315.0);
11ea46b9 2273 TGeoCompositeShape *sV0AFraR17 = new TGeoCompositeShape("sV0AFraR17","sV0AFraR1b7-sV0ACha7");
2274 TGeoCompositeShape *sV0AFraR27 = new TGeoCompositeShape("sV0AFraR27","sV0AFraR2b7-sV0ACha7");
2275 TGeoCompositeShape *sV0AFraR37 = new TGeoCompositeShape("sV0AFraR37","sV0AFraR3b7-sV0ACha7");
2276 TGeoCompositeShape *sV0AFraR47 = new TGeoCompositeShape("sV0AFraR47","sV0AFraR4b7-sV0ACha7");
2277 TGeoCompositeShape *sV0AFraR57 = new TGeoCompositeShape("sV0AFraR57","sV0AFraR5b7-sV0ACha7");
2278 TGeoVolume *v0AFraR17 = new TGeoVolume("V0AFraR17",sV0AFraR17,medV0AFra);
2279 TGeoVolume *v0AFraR27 = new TGeoVolume("V0AFraR27",sV0AFraR27,medV0AFra);
2280 TGeoVolume *v0AFraR37 = new TGeoVolume("V0AFraR37",sV0AFraR37,medV0AFra);
2281 TGeoVolume *v0AFraR47 = new TGeoVolume("V0AFraR47",sV0AFraR47,medV0AFra);
2282 TGeoVolume *v0AFraR57 = new TGeoVolume("V0AFraR57",sV0AFraR57,medV0AFra);
2283 v0AFraR17->SetLineColor(kV0AColorFra); v0AFraR27->SetLineColor(kV0AColorFra);
2284 v0AFraR37->SetLineColor(kV0AColorFra); v0AFraR47->SetLineColor(kV0AColorFra);
2285 v0AFraR57->SetLineColor(kV0AColorFra);
2286 v0AFra7->AddNode(v0AFraR17,1);
2287 v0AFra7->AddNode(v0AFraR27,1);
2288 v0AFra7->AddNode(v0AFraR37,1);
2289 v0AFra7->AddNode(v0AFraR47,1);
2290 v0AFra7->AddNode(v0AFraR57,1);
2291 v0ASec7->AddNode(v0AFra7,1);
2292
2293 /// Sensitive scintilator
2294 TGeoVolume *v0ASci7 = new TGeoVolumeAssembly("V0ASci7");
2295 new TGeoTubeSeg( "sV0AR1b7", fV0AR0+fV0AFraWd/2.,
a8b5076e 2296 fV0AR1-fV0AFraWd/2., fV0ASciWd/2., 270.0, 315.0);
11ea46b9 2297 new TGeoTubeSeg( "sV0AR2b7", fV0AR1+fV0AFraWd/2.,
a8b5076e 2298 fV0AR2-fV0AFraWd/2., fV0ASciWd/2., 270.0, 315.0);
11ea46b9 2299 new TGeoTubeSeg( "sV0AR3b7", fV0AR2+fV0AFraWd/2.,
a8b5076e 2300 fV0AR3-fV0AFraWd/2., fV0ASciWd/2., 270.0, 315.0);
11ea46b9 2301 new TGeoTubeSeg( "sV0AR4b7", fV0AR3+fV0AFraWd/2.,
a8b5076e 2302 fV0AR4-fV0AFraWd/2., fV0ASciWd/2., 270.0, 315.0);
11ea46b9 2303 TGeoCompositeShape *sV0AR17 = new TGeoCompositeShape("sV0AR17","sV0AR1b7-sV0ACha7");
2304 TGeoCompositeShape *sV0AR27 = new TGeoCompositeShape("sV0AR27","sV0AR2b7-sV0ACha7");
2305 TGeoCompositeShape *sV0AR37 = new TGeoCompositeShape("sV0AR37","sV0AR3b7-sV0ACha7");
2306 TGeoCompositeShape *sV0AR47 = new TGeoCompositeShape("sV0AR47","sV0AR4b7-sV0ACha7");
2307 TGeoVolume *v0L17 = new TGeoVolume("V0L17",sV0AR17,medV0ASci);
2308 TGeoVolume *v0L27 = new TGeoVolume("V0L27",sV0AR27,medV0ASci);
2309 TGeoVolume *v0L37 = new TGeoVolume("V0L37",sV0AR37,medV0ASci);
2310 TGeoVolume *v0L47 = new TGeoVolume("V0L47",sV0AR47,medV0ASci);
2311 v0L17->SetLineColor(kV0AColorSci); v0L27->SetLineColor(kV0AColorSci);
2312 v0L37->SetLineColor(kV0AColorSci); v0L47->SetLineColor(kV0AColorSci);
2313 v0ASci7->AddNode(v0L17,1);
2314 v0ASci7->AddNode(v0L27,1);
2315 v0ASci7->AddNode(v0L37,1);
2316 v0ASci7->AddNode(v0L47,1);
a8b5076e 2317
2318 // Bunch of fibers
2319 for (int i=0;i<2;i++) {
2320 v0APts[0+8*i] = -10.0; v0APts[1+8*i] = 13.1;
2321 v0APts[2+8*i] = 10.0; v0APts[3+8*i] = 13.1;
2322 v0APts[4+8*i] = 8.0; v0APts[5+8*i] = -29.0;
2323 v0APts[6+8*i] = -12.0; v0APts[7+8*i] = -12.0;
2324 }
2325 new TGeoArb8("sV0AFib17", 0.01, v0APts);
2326 rot = new TGeoRotation("rot");
2327 rot->RotateX(-2.0);
2328 rot->RotateY(0.0);
2329 rot->RotateZ(248.0);
2330 TGeoCombiTrans *fib17pos = new TGeoCombiTrans("fib17pos", 40.0 - 3.3, -50.0 + 1.5, 0.5, rot);
2331 fib17pos->RegisterYourself();
2332 TGeoCompositeShape *sV0AFib17Hole = new TGeoCompositeShape("sV0AFib17Hole", "sV0AFib17:fib17pos-sV0AFicR57");
2333 TGeoVolume *v0AFib17Hole = new TGeoVolume("V0AFib17Hole",sV0AFib17Hole,medV0AFib);
2334 v0AFib17Hole->SetLineColor(kV0AColorFib);
2335 new TGeoArb8("sV0AFib27", 0.01, v0APts);
2336 rot = new TGeoRotation("rot");
2337 rot->RotateX(2.0);
2338 rot->RotateY(0.0);
2339 rot->RotateZ(248.0);
2340 TGeoCombiTrans *fib27pos = new TGeoCombiTrans("fib27pos", 40.0 - 3.3, -50.0 + 1.5, -0.5, rot);
2341 fib27pos->RegisterYourself();
2342 TGeoCompositeShape *sV0AFib27Hole = new TGeoCompositeShape("sV0AFib27Hole", "sV0AFib27:fib27pos-sV0AFicR57");
2343 TGeoVolume *v0AFib27Hole = new TGeoVolume("V0AFib27Hole",sV0AFib27Hole,medV0AFib);
2344 v0AFib27Hole->SetLineColor(kV0AColorFib);
2345 TGeoVolume *v0AFib7 = new TGeoVolumeAssembly("V0AFib7");
2346 v0AFib7->AddNode(v0AFib17Hole,1);
2347 v0AFib7->AddNode(v0AFib27Hole,1);
2348 v0ASec7->AddNode(v0AFib7,1);
11ea46b9 2349
2350 /// Non-sensitive scintilator
91ae7a77 2351 new TGeoTubeSeg("sV0AR5S27", fV0AR4+fV0AFraWd/2., fV0AR4 + fV0AR0, fV0ASciWd/2.+2*preShape7, 270.0, 315.0);
11ea46b9 2352 TGeoCompositeShape *sV0AR57 = new TGeoCompositeShape("V0AR57","sV0AR5S27 - sV0ACha7");
2353 TGeoVolume *v0AR57 = new TGeoVolume("V0AR57",sV0AR57,medV0ASci);
2354 v0AR57->SetLineColor(kV0AColorSci);
2355 v0ASci7->AddNode(v0AR57,1);
2356 v0ASec7->AddNode(v0ASci7,1);
2357
a8b5076e 2358 /// Segment of octagon
11ea46b9 2359 for (int i=0;i<2;i++) {
a32c7883 2360 v0APts[0+8*i] = 0.; v0APts[1+8*i] = -fV0AR7*sin654;
2361 v0APts[2+8*i] = 0.; v0APts[3+8*i] = -(fV0AR7-fV0AOctH2)*sin654;
2362 v0APts[4+8*i] = (fV0AR7-fV0AOctH2)*cos654; v0APts[5+8*i] = -(fV0AR7-fV0AOctH2)*sin654;
2363 v0APts[6+8*i] = fV0AR7*cos654; v0APts[7+8*i] = -fV0AR7*sin654;
11ea46b9 2364 }
2365 TGeoArb8 *sV0AOct27 = new TGeoArb8("sV0AOct27", (fV0ASciWd+2*fV0AOctWd)/2., v0APts);
2366 TGeoVolume *v0AOct27 = new TGeoVolume("V0AOct27", sV0AOct27,medV0ASup);
2367 v0AOct27->SetLineColor(kV0AColorOct);
a8b5076e 2368 TGeoVolume *v0ASup7 = new TGeoVolumeAssembly("V0ASup7");
11ea46b9 2369 v0ASup7->AddNode(v0AOct27,1);
2370 v0ASec7->AddNode(v0ASup7,1);
2371
11ea46b9 2372 /// Plates
11ea46b9 2373 for (int i=0;i<2;i++) {
a32c7883 2374 v0APts[0+8*i] = 0.; v0APts[1+8*i] = -fV0AR7*sin654;
2375 v0APts[2+8*i] = 0.; v0APts[3+8*i] = -fV0AR0;
2376 v0APts[4+8*i] = fV0AR0*cos654; v0APts[5+8*i] = -fV0AR0*sin654;
2377 v0APts[6+8*i] = fV0AR7*cos654; v0APts[7+8*i] = -fV0AR7*sin654;
11ea46b9 2378 }
2379 new TGeoArb8("sV0APlaIn7", (fV0APlaWd-2*fV0APlaAl)/2., v0APts);
2380 TGeoCompositeShape *sV0APlaInNailsHoles7 = new TGeoCompositeShape("sV0APlaInNailsHoles7","sV0APlaIn7-sV0ANail1PlaInHole7:pos17");
2381 TGeoVolume *v0APlaInNailsHoles7 = new TGeoVolume("V0APlaInNailsHoles7", sV0APlaInNailsHoles7, medV0APlaIn);
2382 new TGeoArb8("sV0APlaOu7", fV0APlaAl/2., v0APts);
2383 TGeoCompositeShape *sV0APlaOuNailsHoles7 = new TGeoCompositeShape("sV0APlaOuNailsHoles7","sV0APlaOu7-sV0ANail1PlaOuHole7:pos17");
2384 TGeoVolume *v0APlaOuNailsHoles7 = new TGeoVolume("V0APlaOuNailsHoles7", sV0APlaOuNailsHoles7, medV0APlaOu);
2385 v0APlaInNailsHoles7->SetLineColor(kV0AColorPlaIn); v0APlaOuNailsHoles7->SetLineColor(kV0AColorPlaOu);
2386 TGeoVolume *v0APla7 = new TGeoVolumeAssembly("V0APla7");
2387 v0APla7->AddNode(v0APlaInNailsHoles7,1);
2388 v0APla7->AddNode(v0APlaOuNailsHoles7,1,new TGeoTranslation(0,0,(fV0APlaWd-fV0APlaAl)/2.));
2389 v0APla7->AddNode(v0APlaOuNailsHoles7,2,new TGeoTranslation(0,0,-(fV0APlaWd-fV0APlaAl)/2.));
2390 v0ASec7->AddNode(v0APla7,1,new TGeoTranslation(0,0,(fV0ASciWd+2*fV0AOctWd+fV0APlaWd)/2.));
2391 v0ASec7->AddNode(v0APla7,2,new TGeoTranslation(0,0,-(fV0ASciWd+2*fV0AOctWd+fV0APlaWd)/2.));
a8b5076e 2392
2393 /// PMBox
2394 TGeoVolume* v0APM7 = new TGeoVolumeAssembly("V0APM7");
2395 new TGeoBBox("sV0APMB17", fV0APMBWd/2., fV0APMBHt/2., fV0APMBTh/2.);
2396 new TGeoBBox("sV0APMB27", fV0APMBWd/2.-fV0APMBWdW, fV0APMBHt/2.-fV0APMBHtW, fV0APMBTh/2.-fV0APMBThW);
2397 TGeoCompositeShape *sV0APMB7 = new TGeoCompositeShape("sV0APMB7","sV0APMB17-sV0APMB27");
2398 TGeoVolume *v0APMB7 = new TGeoVolume("V0APMB7",sV0APMB7, medV0APMAlum);
2399 v0APMB7->SetLineColor(kV0AColorPMA);
2400 v0APM7->AddNode(v0APMB7,1);
f316b8fc 2401
a8b5076e 2402 /// PMTubes
2403 TGeoTube *sV0APMT17 = new TGeoTube("sV0APMT17", fV0APMTR1, fV0APMTR2, fV0APMTH/2.);
2404 TGeoVolume *v0APMT17 = new TGeoVolume("V0APMT17", sV0APMT17, medV0APMGlass);
2405 TGeoTube *sV0APMT27 = new TGeoTube("sV0APMT27", fV0APMTR3, fV0APMTR4, fV0APMTH/2.);
2406 TGeoVolume *v0APMT27 = new TGeoVolume("V0APMT27", sV0APMT27, medV0APMAlum);
2407 TGeoVolume *v0APMT7 = new TGeoVolumeAssembly("V0APMT7"); // pk si no choca con la 752 o con la 794
2408 TGeoTube *sV0APMTT7 = new TGeoTube("sV0APMTT7", 0., fV0APMTR4, fV0APMTB/2.);
2409 TGeoVolume *v0APMTT7 = new TGeoVolume("V0APMTT7", sV0APMTT7, medV0APMAlum);
2410 v0APMT7->SetLineColor(kV0AColorPMG);
2411 v0APMT27->SetLineColor(kV0AColorPMA);
2412 v0APMTT7->SetLineColor(kV0AColorPMA);
2413 rot = new TGeoRotation("rot", 90, 0, 180, 0, 90, 90);
2414 v0APMT7->AddNode(v0APMT17,1,rot);
2415 v0APMT7->AddNode(v0APMT27,1,rot);
2416 v0APMT7->AddNode(v0APMTT7,1,new TGeoCombiTrans(0,(fV0APMTH+fV0APMTB)/2.,0,rot));
91ae7a77 2417 v0APM7->AddNode(v0APMT7, 1, new TGeoTranslation(-1.5*autoShiftSec1, 0, 0));
2418 v0APM7->AddNode(v0APMT7, 2, new TGeoTranslation(-0.5*autoShiftSec1, 0, 0));
2419 v0APM7->AddNode(v0APMT7, 3, new TGeoTranslation(+0.5*autoShiftSec1, 0, 0));
2420 v0APM7->AddNode(v0APMT7, 4, new TGeoTranslation(+1.5*autoShiftSec1, 0, 0));
a8b5076e 2421
2422 /// PM
2423 rot = new TGeoRotation("rot");
2424 rot->RotateX(-90+30);
2425 rot->RotateY(0);
2426 rot->RotateZ(65+3);
91ae7a77 2427 double shiftZ7 = fV0APMBHt/2. * cosAngPMBSec1
2428 - ( fV0ASciWd + 2 * fV0AOctWd + 2 * fV0APlaWd )/2. - fV0APMBTh/2. * sinAngPMBSec1;
a8b5076e 2429 double shiftR7 = fV0AR6 + fV0AR1 + fV0AOctWd + fV0APlaAl/3.;
f316b8fc 2430 v0ASec7->AddNode(v0APM7,1, new TGeoCombiTrans( shiftR7*cos45+1.3, -shiftR7*sin45, shiftZ7, rot));
a8b5076e 2431
2432 // Aluminium nail
2433 TGeoTube *sV0ANail71 = new TGeoTube("sV0ANail71", 0.0, 0.4, 5.09/2.);
2434 TGeoVolume *v0ANail71 = new TGeoVolume("V0ANail71", sV0ANail71, medV0APMAlum);
2435 v0ANail71->SetLineColor(kV0AColorPMA);// this is the color for aluminium
2436 v0ASec7->AddNode(v0ANail71,1,new TGeoTranslation(0.51,-42.9,0.0));
2437 TGeoTube *sV0ANail72 = new TGeoTube("sV0ANail72", 0.0, 0.4, 5.09/2.);
2438 TGeoVolume *v0ANail72 = new TGeoVolume("V0ANail72", sV0ANail72, medV0APMAlum);
2439 v0ANail72->SetLineColor(kV0AColorPMA);
2440 v0ASec7->AddNode(v0ANail72,1,new TGeoTranslation(30.05,-30.79,0.0));
2441
2442 // Support
2443 TGeoBBox *sV0ASuppbr = new TGeoBBox("sV0ASuppbr", 2.0, 18.13, fV0ASciWd/2.);
11ea46b9 2444 TGeoVolume *v0ASuppbr = new TGeoVolume("V0ASuppbr", sV0ASuppbr, medV0ASup);
2445 v0ASuppbr->SetLineColor(kV0AColorOct);
a8b5076e 2446 v0ASec7->AddNode(v0ASuppbr,1,new TGeoTranslation(2.0,-63.64,0.0));
11ea46b9 2447
a8b5076e 2448 // Adding sector to v0LE volume
2449 v0LE->AddNode(v0ASec7,1);
f316b8fc 2450
11ea46b9 2451
a8b5076e 2452 //Definition of sector 8
2453 TGeoVolume *v0ASec8 = new TGeoVolumeAssembly("V0ASec8");
f316b8fc 2454
2455 /// For boolean sustraction
91ae7a77 2456 double preShape8 = 0.2;
11ea46b9 2457 for (int i=0;i<2;i++) {
91ae7a77 2458 v0APts[0+8*i] = fV0AR0-fV0AFraWd/2.; v0APts[1+8*i] = -2*preShape8;
a32c7883 2459 v0APts[2+8*i] = fV0AR0-fV0AFraWd/2.; v0APts[3+8*i] = 0.0;
2460 v0APts[4+8*i] = fV0AR4+fV0AFraWd/2.; v0APts[5+8*i] = 0.0;
91ae7a77 2461 v0APts[6+8*i] = fV0AR4+fV0AFraWd/2.; v0APts[7+8*i] = -2*preShape8;
11ea46b9 2462 }
2463 new TGeoArb8("sV0ACha18",fV0ASciWd/1.5,v0APts);
2464 for (int i=0;i<2;i++) {
91ae7a77 2465 v0APts[0+8*i] = (fV0AR0-fV0AFraWd/2.)*sin45-preShape8;
a32c7883 2466 v0APts[1+8*i] = -(fV0AR0-fV0AFraWd/2.)*sin45;
91ae7a77 2467 v0APts[2+8*i] = fV0AR0*sin45-fV0AFraWd/2.-preShape8;
2468 v0APts[3+8*i] = -(fV0AR0-fV0AFraWd)*sin45+preShape8;
2469 v0APts[4+8*i] = (fV0AR4+3*fV0AFraWd/2.)*sin45+preShape8;
2470 v0APts[5+8*i] = -fV0AR4*sin45-preShape8;
2471 v0APts[6+8*i] = (fV0AR4+fV0AFraWd)*sin45+preShape8;
2472 v0APts[7+8*i] = -(fV0AR4+fV0AFraWd/2.)*sin45-2.*preShape8;
11ea46b9 2473 }
91ae7a77 2474 new TGeoArb8("sV0ACha28", fV0ASciWd/2.+2.*preShape8, v0APts);
11ea46b9 2475 new TGeoCompositeShape("sV0ACha128","sV0ACha18+sV0ACha28");
2476 new TGeoTube("sV0ANail18Hole", 0.0, 0.4, 1.65);
2477 TGeoTranslation *pos18 = new TGeoTranslation("pos18",42.9,-.51,0.0);
2478 pos18->RegisterYourself();
2479 new TGeoTube("sV0ANail28Hole", 0.0, 0.4, 1.65);
a8b5076e 2480 TGeoTranslation *pos28 = new TGeoTranslation("pos28",30.8,-30.04,0.0);
2481 pos28->RegisterYourself();
2482 TGeoTranslation *pos38 = new TGeoTranslation("pos38",30.05,-30.79,0.0);
11ea46b9 2483 pos38->RegisterYourself();
a8b5076e 2484 new TGeoCompositeShape("sV0ANailsHoles8","sV0ANail18Hole:pos18+sV0ANail28Hole:pos28");
11ea46b9 2485 new TGeoCompositeShape("sV0ACha8","sV0ACha128+sV0ANailsHoles8");
91ae7a77 2486 new TGeoTubeSeg("sV0AFicR58", fV0AR4+fV0AFraWd/2., fV0AR4 + fV0AR0, fV0ASciWd/2. +2*preShape8, 315.0, 360.0);
a8b5076e 2487 new TGeoTube("sV0ANail1PlaInHole8", 0.0, 0.4, (fV0APlaWd-2*fV0APlaAl)/2.);
2488 new TGeoTube("sV0ANail2PlaInHole8", 0.0, 0.4, (fV0APlaWd-2*fV0APlaAl)/2.);
2489 new TGeoTube("sV0ANail3PlaInHole8", 0.0, 0.4, (fV0APlaWd-2*fV0APlaAl)/2.);
2490 new TGeoCompositeShape("sV0ANailsPlaInHoles8","sV0ANail1PlaInHole8:pos18+sV0ANail2PlaInHole8:pos28+sV0ANail3PlaInHole8:pos38");
2491 new TGeoTube("sV0ANail1PlaOuHole8", 0.0, 0.4, (fV0APlaAl)/2.);
2492 new TGeoTube("sV0ANail2PlaOuHole8", 0.0, 0.4, (fV0APlaAl)/2.);
2493 new TGeoTube("sV0ANail3PlaOuHole8", 0.0, 0.4, (fV0APlaAl)/2.);
2494 new TGeoCompositeShape("sV0ANailsPlaOuHoles8","sV0ANail1PlaOuHole8:pos18+sV0ANail2PlaOuHole8:pos28+sV0ANail3PlaOuHole8:pos38");
f316b8fc 2495
2496 /// Frame
2497 TGeoVolume *v0AFra8 = new TGeoVolumeAssembly("V0AFra8");
11ea46b9 2498 for (int i=0;i<2;i++) {
a8b5076e 2499 v0APts[0+8*i] = fV0AR0-fV0AFraWd/2.; v0APts[1+8*i] = 0.0;
a32c7883 2500 v0APts[2+8*i] = fV0AR4+fV0AFraWd/2.; v0APts[3+8*i] = 0.0;
93f5bf1d 2501 v0APts[4+8*i] = fV0AR4+fV0AFraWd/2.; v0APts[5+8*i] = -fV0AFraWd/8.;
a32c7883 2502 v0APts[6+8*i] = fV0AR0-fV0AFraWd/2.; v0APts[7+8*i] = -fV0AFraWd/8.;
a8b5076e 2503 }
11ea46b9 2504 TGeoArb8 *sV0AFraB18 = new TGeoArb8("sV0AFraB18",fV0ASciWd/2.,v0APts);
f316b8fc 2505 TGeoVolume *v0AFraB18 = new TGeoVolume("V0AFraB18",sV0AFraB18,medV0AFra);
11ea46b9 2506 for (int i=0;i<2;i++) {
a32c7883 2507 v0APts[0+8*i] = (fV0AR0-fV0AFraWd/4.)*sin45;
2508 v0APts[1+8*i] = -(fV0AR0-fV0AFraWd/2.)*sin45;
2509 v0APts[2+8*i] = fV0AR0*sin45-fV0AFraWd/2.;
2510 v0APts[3+8*i] = -(fV0AR0-fV0AFraWd)*sin45;
2511 v0APts[4+8*i] = (fV0AR4+3*fV0AFraWd/2.)*sin45/2.;
2512 v0APts[5+8*i] = -fV0AR4*sin45/2.;
93f5bf1d 2513 v0APts[6+8*i] = (fV0AR4+fV0AFraWd)*sin45/2.;
a32c7883 2514 v0APts[7+8*i] = -(fV0AR4+fV0AFraWd/2.)*sin45/2.;
11ea46b9 2515 }
2516 TGeoArb8 *sV0AFraB28 = new TGeoArb8("sV0AFraB28", fV0ASciWd/2., v0APts);
2517 TGeoVolume *v0AFraB28 = new TGeoVolume("V0AFraB28",sV0AFraB28,medV0AFra);
2518 v0AFraB18->SetLineColor(kV0AColorFra); v0AFraB28->SetLineColor(kV0AColorFra);
2519 v0AFra8->AddNode(v0AFraB18,1);
2520 v0AFra8->AddNode(v0AFraB28,1); // Prefer 2 GeoObjects insted of 3 GeoMovements
2521 new TGeoTubeSeg( "sV0AFraR1b8", fV0AR0-fV0AFraWd/2.,
a8b5076e 2522 fV0AR0+fV0AFraWd/2., fV0ASciWd/2., 315.0, 360.0);
11ea46b9 2523 new TGeoTubeSeg( "sV0AFraR2b8", fV0AR1-fV0AFraWd/2.,
a8b5076e 2524 fV0AR1+fV0AFraWd/2., fV0ASciWd/2., 315.0, 360.0);
11ea46b9 2525 new TGeoTubeSeg( "sV0AFraR3b8", fV0AR2-fV0AFraWd/2.,
a8b5076e 2526 fV0AR2+fV0AFraWd/2., fV0ASciWd/2., 315.0, 360.0);
11ea46b9 2527 new TGeoTubeSeg( "sV0AFraR4b8", fV0AR3-fV0AFraWd/2.,
a8b5076e 2528 fV0AR3+fV0AFraWd/2., fV0ASciWd/2., 315.0, 360.0);
11ea46b9 2529 new TGeoTubeSeg( "sV0AFraR5b8", fV0AR4-fV0AFraWd/2.,
a8b5076e 2530 fV0AR4+fV0AFraWd/2., fV0ASciWd/2., 315.0, 360.0);
11ea46b9 2531 TGeoCompositeShape *sV0AFraR18 = new TGeoCompositeShape("sV0AFraR18","sV0AFraR1b8-sV0ACha8");
2532 TGeoCompositeShape *sV0AFraR28 = new TGeoCompositeShape("sV0AFraR28","sV0AFraR2b8-sV0ACha8");
2533 TGeoCompositeShape *sV0AFraR38 = new TGeoCompositeShape("sV0AFraR38","sV0AFraR3b8-sV0ACha8");
2534 TGeoCompositeShape *sV0AFraR48 = new TGeoCompositeShape("sV0AFraR48","sV0AFraR4b8-sV0ACha8");
2535 TGeoCompositeShape *sV0AFraR58 = new TGeoCompositeShape("sV0AFraR58","sV0AFraR5b8-sV0ACha8");
2536 TGeoVolume *v0AFraR18 = new TGeoVolume("V0AFraR18",sV0AFraR18,medV0AFra);
2537 TGeoVolume *v0AFraR28 = new TGeoVolume("V0AFraR28",sV0AFraR28,medV0AFra);
2538 TGeoVolume *v0AFraR38 = new TGeoVolume("V0AFraR38",sV0AFraR38,medV0AFra);
2539 TGeoVolume *v0AFraR48 = new TGeoVolume("V0AFraR48",sV0AFraR48,medV0AFra);
2540 TGeoVolume *v0AFraR58 = new TGeoVolume("V0AFraR58",sV0AFraR58,medV0AFra);
2541 v0AFraR18->SetLineColor(kV0AColorFra); v0AFraR28->SetLineColor(kV0AColorFra);
2542 v0AFraR38->SetLineColor(kV0AColorFra); v0AFraR48->SetLineColor(kV0AColorFra);
2543 v0AFraR58->SetLineColor(kV0AColorFra);
2544 v0AFra8->AddNode(v0AFraR18,1);
2545 v0AFra8->AddNode(v0AFraR28,1);
2546 v0AFra8->AddNode(v0AFraR38,1);
2547 v0AFra8->AddNode(v0AFraR48,1);
2548 v0AFra8->AddNode(v0AFraR58,1);
2549 v0ASec8->AddNode(v0AFra8,1);
2550
2551 /// Sensitive scintilator
2552 TGeoVolume *v0ASci8 = new TGeoVolumeAssembly("V0ASci8");
2553 new TGeoTubeSeg( "sV0AR1b8", fV0AR0+fV0AFraWd/2.,
a8b5076e 2554 fV0AR1-fV0AFraWd/2., fV0ASciWd/2., 315.0, 360.0);
11ea46b9 2555 new TGeoTubeSeg( "sV0AR2b8", fV0AR1+fV0AFraWd/2.,
a8b5076e 2556 fV0AR2-fV0AFraWd/2., fV0ASciWd/2., 315.0, 360.0);
11ea46b9 2557 new TGeoTubeSeg( "sV0AR3b8", fV0AR2+fV0AFraWd/2.,
a8b5076e 2558 fV0AR3-fV0AFraWd/2., fV0ASciWd/2., 315.0, 360.0);
11ea46b9 2559 new TGeoTubeSeg( "sV0AR4b8", fV0AR3+fV0AFraWd/2.,
a8b5076e 2560 fV0AR4-fV0AFraWd/2., fV0ASciWd/2., 315.0, 360.0);
11ea46b9 2561 TGeoCompositeShape *sV0AR18 = new TGeoCompositeShape("sV0AR18","sV0AR1b8-sV0ACha8");
2562 TGeoCompositeShape *sV0AR28 = new TGeoCompositeShape("sV0AR28","sV0AR2b8-sV0ACha8");
2563 TGeoCompositeShape *sV0AR38 = new TGeoCompositeShape("sV0AR38","sV0AR3b8-sV0ACha8");
2564 TGeoCompositeShape *sV0AR48 = new TGeoCompositeShape("sV0AR48","sV0AR4b8-sV0ACha8");
2565 TGeoVolume *v0L18 = new TGeoVolume("V0L18",sV0AR18,medV0ASci);
2566 TGeoVolume *v0L28 = new TGeoVolume("V0L28",sV0AR28,medV0ASci);
2567 TGeoVolume *v0L38 = new TGeoVolume("V0L38",sV0AR38,medV0ASci);
2568 TGeoVolume *v0L48 = new TGeoVolume("V0L48",sV0AR48,medV0ASci);
2569 v0L18->SetLineColor(kV0AColorSci); v0L28->SetLineColor(kV0AColorSci);
2570 v0L38->SetLineColor(kV0AColorSci); v0L48->SetLineColor(kV0AColorSci);
2571 v0ASci8->AddNode(v0L18,1);
2572 v0ASci8->AddNode(v0L28,1);
2573 v0ASci8->AddNode(v0L38,1);
f316b8fc 2574 v0ASci8->AddNode(v0L48,1);
11ea46b9 2575
a8b5076e 2576 /// Segment of octagon
2577 for (int i=0;i<2;i++) {
a32c7883 2578 v0APts[0+8*i] = fV0AR6; v0APts[1+8*i] = 0.;
2579 v0APts[2+8*i] = fV0AR7*cos654; v0APts[3+8*i] = -fV0AR7*sin654;
2580 v0APts[4+8*i] = (fV0AR7-fV0AOctH2)*cos654; v0APts[5+8*i] = -(fV0AR7-fV0AOctH2)*sin654;
2581 v0APts[6+8*i] = fV0AR6-fV0AOctH2; v0APts[7+8*i] = 0.;
11ea46b9 2582 }
91ae7a77 2583 new TGeoArb8("sV0AOct28", (fV0ASciWd+2*fV0AOctWd)/2., v0APts);
2584 TGeoCompositeShape *sV0AOct2FEEB8 = new TGeoCompositeShape("sV0AOct2FEEB8","sV0AOct28-sV0AFicFEEBSec1:posFicFEEBSec1-sV0AFicOct2Sec1:posFicOct2Sec1");
2585 TGeoVolume *v0AOct28 = new TGeoVolume("V0AOct28", sV0AOct2FEEB8,medV0ASup);
11ea46b9 2586 v0AOct28->SetLineColor(kV0AColorOct);
a8b5076e 2587 TGeoVolume *v0ASup8 = new TGeoVolumeAssembly("V0ASup8");
11ea46b9 2588 v0ASup8->AddNode(v0AOct28,1);
2589 v0ASec8->AddNode(v0ASup8,1);
2590
2591 //Bunch of fibers
2592 v0APts[ 0] = v0APts[ 2] = -14.0;
2593 v0APts[ 1] = v0APts[ 7] = (fV0ASciWd+fV0AOctWd)/2.-0.01;
2594 v0APts[ 3] = v0APts[ 5] = (fV0ASciWd+fV0AOctWd)/2.+0.01;
2595 v0APts[ 4] = v0APts[ 6] = +14.0;
2596 v0APts[ 8] = v0APts[10] = -10.0;
2597 v0APts[ 9] = v0APts[15] = 0.;
2598 v0APts[11] = v0APts[13] = 0.25;
2599 v0APts[12] = v0APts[14] = +10.0;
a8b5076e 2600 new TGeoArb8("sV0AFib18", 11.8, v0APts);
11ea46b9 2601 rot = new TGeoRotation("rot");
2602 rot->RotateX(-90);
2603 rot->RotateZ(-90-22.5);
a8b5076e 2604 TGeoCombiTrans *fib18pos = new TGeoCombiTrans("fib18pos", (fV0AR6-fV0AOctH2+fV0AR5)*cos225/2. - 3.3, -(fV0AR6-fV0AOctH2+fV0AR5)*sin225/2. + 1.5, 0, rot);
2605 fib18pos->RegisterYourself();
2606 TGeoCompositeShape *sV0AFib18Hole = new TGeoCompositeShape("sV0AFib18Hole", "sV0AFib18:fib18pos-sV0AFicR58");
2607 TGeoVolume *v0AFib18Hole = new TGeoVolume("V0AFib18",sV0AFib18Hole,medV0AFib);
2608 v0AFib18Hole->SetLineColor(kV0AColorFib);
2609 new TGeoArb8("sV0AFib28", 11.8, v0APts);
11ea46b9 2610 rot = new TGeoRotation("rot");
2611 rot->RotateX(-90);
2612 rot->RotateY(180);
2613 rot->RotateZ(-90-22.5);
a8b5076e 2614 TGeoCombiTrans *fib28pos = new TGeoCombiTrans("fib28pos", (fV0AR6-fV0AOctH2+fV0AR5)*cos225/2. - 3.3, -(fV0AR6-fV0AOctH2+fV0AR5)*sin225/2. + 1.5, 0, rot);
2615 fib28pos->RegisterYourself();
2616 TGeoCompositeShape *sV0AFib28Hole = new TGeoCompositeShape("sV0AFib28Hole", "sV0AFib28:fib28pos-sV0AFicR58");
2617 TGeoVolume *v0AFib28Hole = new TGeoVolume("V0AFib28Hole",sV0AFib28Hole,medV0AFib);
2618 v0AFib28Hole->SetLineColor(kV0AColorFib);
2619 TGeoVolume *v0AFib8 = new TGeoVolumeAssembly("V0AFib8");
2620 v0AFib8->AddNode(v0AFib18Hole,1);
2621 v0AFib8->AddNode(v0AFib28Hole,1);
2622 v0ASec8->AddNode(v0AFib8,1);
2623
2624 /// Non-sensitive scintilator
91ae7a77 2625 new TGeoTubeSeg("sV0AR5S28", fV0AR4+fV0AFraWd/2., fV0AR4 + fV0AR0, fV0ASciWd/2.+2*preShape8, 315.0, 360.0);
a8b5076e 2626 TGeoCompositeShape *sV0AR58 = new TGeoCompositeShape("V0AR58","sV0AR5S28 - sV0ACha8");
2627 TGeoVolume *v0AR58 = new TGeoVolume("V0AR58",sV0AR58,medV0ASci);
2628 v0AR58->SetLineColor(kV0AColorSci);
2629 v0ASci8->AddNode(v0AR58,1);
2630 v0ASec8->AddNode(v0ASci8,1);
11ea46b9 2631
11ea46b9 2632 /// Plates
11ea46b9 2633 for (int i=0;i<2;i++) {
2634 v0APts[0+8*i] = fV0AR0; v0APts[1+8*i] = 0.;
a32c7883 2635 v0APts[2+8*i] = fV0AR6; v0APts[3+8*i] = 0.;
11ea46b9 2636 v0APts[4+8*i] = fV0AR7*cos654; v0APts[5+8*i] = -fV0AR7*sin654;
a32c7883 2637 v0APts[6+8*i] = fV0AR0*cos654; v0APts[7+8*i] = -fV0AR0*sin654;
11ea46b9 2638 }
2639 new TGeoArb8("sV0APlaIn8", (fV0APlaWd-2*fV0APlaAl)/2., v0APts);
91ae7a77 2640 TGeoCompositeShape *sV0APlaInNailsHoles8 = new TGeoCompositeShape("sV0APlaInNailsHoles8","sV0APlaIn8-sV0ANailsPlaInHoles8-sV0AFicFEEBSec1:posFicFEEBSec1");
11ea46b9 2641 TGeoVolume *v0APlaInNailsHoles8 = new TGeoVolume("V0APlaInNailsHoles8", sV0APlaInNailsHoles8, medV0APlaIn);
2642 new TGeoArb8("sV0APlaOu8", fV0APlaAl/2., v0APts);
91ae7a77 2643 TGeoCompositeShape *sV0APlaOuNailsHoles8 = new TGeoCompositeShape("sV0APlaOuNailsHoles8","sV0APlaOu8-sV0ANailsPlaOuHoles8-sV0AFicFEEBSec1:posFicFEEBSec1");
11ea46b9 2644 TGeoVolume *v0APlaOuNailsHoles8 = new TGeoVolume("V0APlaOuNailsHoles8", sV0APlaOuNailsHoles8, medV0APlaOu);
2645 v0APlaInNailsHoles8->SetLineColor(kV0AColorPlaIn); v0APlaOuNailsHoles8->SetLineColor(kV0AColorPlaOu);
2646 TGeoVolume *v0APla8 = new TGeoVolumeAssembly("V0APla8");
2647 v0APla8->AddNode(v0APlaInNailsHoles8,1);
2648 v0APla8->AddNode(v0APlaOuNailsHoles8,1,new TGeoTranslation(0,0,(fV0APlaWd-fV0APlaAl)/2.));
2649 v0APla8->AddNode(v0APlaOuNailsHoles8,2,new TGeoTranslation(0,0,-(fV0APlaWd-fV0APlaAl)/2.));
2650 v0ASec8->AddNode(v0APla8,1,new TGeoTranslation(0,0,(fV0ASciWd+2*fV0AOctWd+fV0APlaWd)/2.));
2651 v0ASec8->AddNode(v0APla8,2,new TGeoTranslation(0,0,-(fV0ASciWd+2*fV0AOctWd+fV0APlaWd)/2.));
2652
a8b5076e 2653 /// PMBox
11ea46b9 2654 TGeoVolume* v0APM8 = new TGeoVolumeAssembly("V0APM1");
2655 new TGeoBBox("sV0APMB18", fV0APMBWd/2., fV0APMBHt/2., fV0APMBTh/2.);
2656 new TGeoBBox("sV0APMB28", fV0APMBWd/2.-fV0APMBWdW, fV0APMBHt/2.-fV0APMBHtW, fV0APMBTh/2.-fV0APMBThW);
2657 TGeoCompositeShape *sV0APMB8 = new TGeoCompositeShape("sV0APMB8","sV0APMB18-sV0APMB28");
2658 TGeoVolume *v0APMB8 = new TGeoVolume("V0APMB8",sV0APMB8, medV0APMAlum);
2659 v0APMB8->SetLineColor(kV0AColorPMA);
2660 v0APM8->AddNode(v0APMB8,1);
2661
a8b5076e 2662 /// PMTubes
11ea46b9 2663 TGeoTube *sV0APMT18 = new TGeoTube("sV0APMT18", fV0APMTR1, fV0APMTR2, fV0APMTH/2.);
2664 TGeoVolume *v0APMT18 = new TGeoVolume("V0APMT18", sV0APMT18, medV0APMGlass);
2665 TGeoTube *sV0APMT28 = new TGeoTube("sV0APMT28", fV0APMTR3, fV0APMTR4, fV0APMTH/2.);
2666 TGeoVolume *v0APMT28 = new TGeoVolume("V0APMT28", sV0APMT28, medV0APMAlum);
2667 TGeoVolume *v0APMT8 = new TGeoVolumeAssembly("V0APMT8");
2668 TGeoTube *sV0APMTT8 = new TGeoTube("sV0APMTT8", 0., fV0APMTR4, fV0APMTB/2.);
2ca4471e 2669 TGeoVolume *v0APMTT8 = new TGeoVolume("V0APMTT8", sV0APMTT8, medV0APMAlum);
11ea46b9 2670 v0APMT8->SetLineColor(kV0AColorPMG);
2671 v0APMT28->SetLineColor(kV0AColorPMA);
2672 v0APMTT8->SetLineColor(kV0AColorPMA);
2673 rot = new TGeoRotation("rot", 90, 0, 180, 0, 90, 90);
2674 v0APMT8->AddNode(v0APMT18,1,rot);
2675 v0APMT8->AddNode(v0APMT28,1,rot);
2676 v0APMT8->AddNode(v0APMTT8,1,new TGeoCombiTrans(0,(fV0APMTH+fV0APMTB)/2.,0,rot));
2677 double autoShift8 = (fV0APMBWd-2*fV0APMBWdW)/4.;
2678 v0APM8->AddNode(v0APMT8, 1, new TGeoTranslation(-1.5*autoShift8, 0, 0));
2679 v0APM8->AddNode(v0APMT8, 2, new TGeoTranslation(-0.5*autoShift8, 0, 0));
2680 v0APM8->AddNode(v0APMT8, 3, new TGeoTranslation(+0.5*autoShift8, 0, 0));
2681 v0APM8->AddNode(v0APMT8, 4, new TGeoTranslation(+1.5*autoShift8, 0, 0));
2682
a8b5076e 2683 /// PM
11ea46b9 2684 rot = new TGeoRotation("rot");
2685 rot->RotateX(-90+30);
2686 rot->RotateY(0);
2687 rot->RotateZ(65+3);
91ae7a77 2688 double shiftZ8 = fV0APMBHt/2. * cosAngPMBSec1
2689 - ( fV0ASciWd + 2 * fV0AOctWd + 2 * fV0APlaWd )/2. - fV0APMBTh/2. * sinAngPMBSec1;
11ea46b9 2690 double shiftR8 = fV0AR6 + fV0AOctH2 + fV0APlaAl;
f316b8fc 2691 v0ASec8->AddNode(v0APM8,1, new TGeoCombiTrans( shiftR8*cos225 + 1.3, -shiftR8*sin225, shiftZ8, rot));
11ea46b9 2692
a8b5076e 2693 // Aluminium nails
11ea46b9 2694 TGeoTube *sV0ANail81 = new TGeoTube("sV0ANail81", 0.0, 0.4, 5.09/2.);
2695 TGeoVolume *v0ANail81 = new TGeoVolume("V0ANail81", sV0ANail81, medV0APMAlum);
2696 v0ANail81->SetLineColor(kV0AColorPMA);// this is the color for aluminium
a8b5076e 2697 v0ASec8->AddNode(v0ANail81,1,new TGeoTranslation(42.9,-.51,0.0));
11ea46b9 2698 TGeoTube *sV0ANail82 = new TGeoTube("sV0ANail82", 0.0, 0.4, 5.09/2.);
2699 TGeoVolume *v0ANail82 = new TGeoVolume("V0ANail82", sV0ANail82, medV0APMAlum);
2700 v0ANail82->SetLineColor(kV0AColorPMA);
a8b5076e 2701 v0ASec8->AddNode(v0ANail82,1,new TGeoTranslation(30.8,-30.04,0.0));
2702
f316b8fc 2703 // Adding sector to v0LE volume
91ae7a77 2704 v0LE->AddNode(v0ASec8, 1);
a8b5076e 2705
edc39343 2706 // Adding detectors to top volume
5063dd34 2707 TGeoVolume *vZERO = new TGeoVolumeAssembly("VZERO");
2708 vZERO->AddNode(v0RI,1,new TGeoTranslation(0, 0, -zdet));
c43dadb9 2709 vZERO->AddNode(v0LE,1,new TGeoTranslation(0, 0, +329.0));
5063dd34 2710 top->AddNode(vZERO,1);
1a809d19 2711}
45b81649 2712
2713//_____________________________________________________________________________
2714void AliVZEROv7::AddAlignableVolumes() const
2715{
2716 //
2717 // Create entries for alignable volumes associating the symbolic volume
2718 // name with the corresponding volume path. Needs to be syncronized with
2719 // eventual changes in the geometry.
2720 //
2721 TString vpC = "/ALIC_1/VZERO_1/V0RI_1";
2722 TString vpA = "/ALIC_1/VZERO_1/V0LE_1";
2723 TString snC = "VZERO/V0C";
2724 TString snA = "VZERO/V0A";
2725
2726 if(!gGeoManager->SetAlignableEntry(snC.Data(),vpC.Data()))
2727 AliFatal(Form("Alignable entry %s not created. Volume path %s not valid", snC.Data(),vpC.Data()));
2728 if(!gGeoManager->SetAlignableEntry(snA.Data(),vpA.Data()))
2729 AliFatal(Form("Alignable entry %s not created. Volume path %s not valid", snA.Data(),vpA.Data()));
2730
2731}
2732
1a809d19 2733//_____________________________________________________________________________
2734void AliVZEROv7::CreateMaterials()
2735{
2736
2737// Creates materials used for geometry
2738
2739 AliDebug(2,"Create materials");
2740 // Parameters for simulation scope
f7a1cc68 2741 Int_t fieldType = ((AliMagF*)TGeoGlobalMagField::Instance()->GetField())->Integ(); // Field type
2742 Double_t maxField = ((AliMagF*)TGeoGlobalMagField::Instance()->GetField())->Max(); // Field max.
1a809d19 2743 Double_t maxBending = 10; // Max Angle
2744 Double_t maxStepSize = 0.01; // Max step size
2745 Double_t maxEnergyLoss = 1; // Max Delta E
2746 Double_t precision = 0.003; // Precision
2747 Double_t minStepSize = 0.003; // Minimum step size
2748
2749 Int_t id;
2750 Double_t a, z, radLength, absLength;
2751 Float_t density, as[4], zs[4], ws[4];
2752
2753// Parameters for V0CPrePlates: Aluminium
2754 a = 26.98;
2755 z = 13.00;
2756 density = 2.7;
2757 radLength = 8.9;
2758 absLength = 37.2;
2759 id = 2;
2760 AliMaterial( id, "V0CAlu", a, z, density, radLength, absLength, 0, 0);
2761 AliMedium(id, "V0CAlu", id, 1, fieldType, maxField, maxBending, maxStepSize,
2762 maxEnergyLoss, precision, minStepSize);
2763
2764// Parameters for V0CPlates: Carbon
2765 a = 12.01;
2766 z = 6.00;
2767 density = 2.265;
2768 radLength = 18.8;
2769 absLength = 49.9;
2770 id = 3;
2771 AliMaterial(id, "V0CCar", a, z, density, radLength, absLength, 0, 0);
2772 AliMedium(id, "V0CCar", id, 1, fieldType, maxField, maxBending, maxStepSize,
2773 maxEnergyLoss, precision, minStepSize);
2774
2775// Parameters for V0Cscintillator: BC408
2776 as[0] = 1.00794; as[1] = 12.011;
2777 zs[0] = 1.; zs[1] = 6.;
2778 ws[0] = 1.; ws[1] = 1.;
2779 density = 1.032;
2780 id = 4;
2781 AliMixture(id, "V0CSci", as, zs, density, -2, ws);
2782 AliMedium(id,"V0CSci", id, 1, fieldType, maxField, maxBending, maxStepSize,
2783 maxEnergyLoss, precision, minStepSize);
2784
2785// Parameters for V0Ascintilator: BC404
2786 as[0] = 1.00794; as[1] = 12.011;
2787 zs[0] = 1.; zs[1] = 6.;
2788 ws[0] = 5.21; ws[1] = 4.74;
2789 density = 1.032;
2790 id = 5;
2791 AliMixture(id, "V0ASci", as, zs, density, -2, ws);
2792 AliMedium(id, "V0ASci", id, 1, fieldType, maxField, maxBending, maxStepSize,
2793 maxEnergyLoss, precision, minStepSize);
2794
2795// Parameters for V0ALuc: Lucita but for the simulation BC404
2796 as[0] = 1.00794; as[1] = 12.011;
2797 zs[0] = 1.; zs[1] = 6.;
2798 ws[0] = 5.21; ws[1] = 4.74;
2799 density = 1.032;
2800 id = 6;
2801 AliMixture(id, "V0ALuc", as, zs, density, -2, ws);
2802 AliMedium(id, "V0ALuc", id, 1, fieldType, maxField, maxBending, maxStepSize,
2803 maxEnergyLoss, precision, minStepSize);
2804
2805// Parameters for V0Aplate: EuroComposite - EC-PI 626 PS - AlMg3
2806 as[0] = 26.982; as[1] = 24.305;
2807 zs[0] = 13.; zs[1] = 12.;
2808 ws[0] = 1.; ws[1] = 3.;
2809 density = 3.034;
2810 id = 7;
2811 AliMixture(id, "V0APlaOu", as, zs, density, -2, ws);
2812 AliMedium(id, "V0APlaOu", id, 1, fieldType, maxField, maxBending, maxStepSize,
2813 maxEnergyLoss, precision, minStepSize);
2814
2815// Parameters for V0Aplate: EuroComposite - EC-PI 626 PS - EC-PI 6.4-42
2816 as[0] = 1.00794; as[1] = 12.011;
2817 zs[0] = 1.; zs[1] = 6.;
2818 ws[0] = 5.21; ws[1] = 4.74;
2819 density = 0.042;
2820 id = 8;
2821 AliMixture(id, "V0APlaIn", as, zs, density, -2, ws);
2822 AliMedium(id, "V0APlaIn", id, 1, fieldType, maxField, maxBending, maxStepSize,
2823 maxEnergyLoss, precision, minStepSize);
2824
2825// Parameters for V0Afiber: BC9929AMC Plastic Scintillating Fiber from Saint-Gobain
2826 as[0] = 1.00794; as[1] = 12.011;
2827 zs[0] = 1.; zs[1] = 6.;
2828 ws[0] = 4.82; ws[1] = 4.85;
2829 density = 1.05;
2830 id = 9;
2831 AliMixture(id, "V0AFib", as, zs, density, -2, ws);
2832 AliMedium(id, "V0AFib", id, 1, fieldType, maxField, maxBending, maxStepSize,
2833 maxEnergyLoss, precision, minStepSize);
2834
2835// Parameters for V0APMA: Aluminium
2836 a = 26.98;
2837 z = 13.00;
2838 density = 2.7;
2839 radLength = 8.9;
2840 absLength = 37.2;
2841 id = 10;
2842 AliMaterial(id, "V0APMA", a, z, density, radLength, absLength, 0, 0);
2843 AliMedium(id, "V0APMA", id, 1, fieldType, maxField, maxBending, maxStepSize,
2844 maxEnergyLoss, precision, minStepSize);
2845
2846// Parameters for V0APMG: Glass for the simulation Aluminium
2847 a = 26.98;
2848 z = 13.00;
2849 density = 2.7;
2850 radLength = 8.9;
2851 absLength = 37.2;
2852 id = 11;
2853 AliMaterial(id, "V0APMG", a, z, density, radLength, absLength, 0, 0);
2854 AliMedium(id, "V0APMG", id, 1, fieldType, maxField, maxBending, maxStepSize,
2855 maxEnergyLoss, precision, minStepSize);
91ae7a77 2856
2857// Parameters for V0AFiberGlass: Material for mother and daughter boards
2858 as[0] = 1.00794; as[1] = 12.011; as[2] = 16.0; as[3] = 28.09;
2859 zs[0] = 1.; zs[1] = 6.; zs[2] = 8.; zs[3] = 14.;
2860 ws[0] = 736.0; ws[1] = 462.0; ws[2] = 292.0; ws[3] = 68.0;
2861 density = 1.9;
2862 id = 12;
2863 AliMixture(id, "V0AFibGlass", as, zs, density, -4, ws);
2864 AliMedium(id, "V0AFibGlass", id, 1, fieldType, maxField, maxBending, maxStepSize,
2865 maxEnergyLoss, precision, minStepSize);
2866
1a809d19 2867}
2868
2869//_____________________________________________________________________________
2870void AliVZEROv7::DrawModule() const
2871{
2872// Drawing is done in DrawVZERO.C
2873
2874 AliDebug(2,"DrawModule");
2875}
2876
2877
2878//_____________________________________________________________________________
2879void AliVZEROv7::DrawGeometry()
2880{
2881// Drawing of V0 geometry done in DrawV0.C
2882
2883 AliDebug(2,"DrawGeometry");
2884}
2885
2886//_____________________________________________________________________________
2887void AliVZEROv7::Init()
2888{
2889// Initialises version of the VZERO Detector given in Config
2890// Just prints an information message
2891
3e87825e 2892// AliInfo(Form("VZERO version %d initialized \n",IsVersion()));
2893
2894 AliDebug(1,"VZERO version 7 initialized");
1a809d19 2895 AliVZERO::Init();
2896}
2897
2898//_____________________________________________________________________________
2899void AliVZEROv7::StepManager()
2900{
5ff8773f 2901// Step Manager, called at each step
1a809d19 2902
2903 Int_t copy;
2904 static Int_t vol[4];
2905 static Float_t hits[21];
2906 static Float_t eloss, tlength;
f419b97e 2907 static Int_t nPhotonsInStep = 0;
2908 static Int_t nPhotons = 0;
2909 static Int_t numStep = 0;
1a809d19 2910 Int_t ringNumber;
2911 Float_t destep, step;
2912 numStep += 1;
2913
5ff8773f 2914 // We keep only charged tracks :
1a809d19 2915 if ( !gMC->TrackCharge() || !gMC->IsTrackAlive() ) return;
2916
2917 vol[0] = gMC->CurrentVolOffID(1, vol[1]);
2918 vol[2] = gMC->CurrentVolID(copy);
2919 vol[3] = copy;
2920 static Int_t idV0R1 = gMC->VolId("V0R1");
53eff774 2921
2922 static Int_t idV0L11 = gMC->VolId("V0L1Sec1");
2923 static Int_t idV0L12 = gMC->VolId("V0L1Sec2");
2924 static Int_t idV0L13 = gMC->VolId("V0L1Sec3");
2925 static Int_t idV0L14 = gMC->VolId("V0L1Sec4");
5ff8773f 2926 static Int_t idV0L15 = gMC->VolId("V0L15");
2927 static Int_t idV0L16 = gMC->VolId("V0L16");
2928 static Int_t idV0L17 = gMC->VolId("V0L17");
2929 static Int_t idV0L18 = gMC->VolId("V0L18");
1a809d19 2930 static Int_t idV0R2 = gMC->VolId("V0R2");
53eff774 2931
2932 static Int_t idV0L21 = gMC->VolId("V0L2Sec1");
2933 static Int_t idV0L22 = gMC->VolId("V0L2Sec2");
2934 static Int_t idV0L23 = gMC->VolId("V0L2Sec3");
2935 static Int_t idV0L24 = gMC->VolId("V0L2Sec4");
5ff8773f 2936 static Int_t idV0L25 = gMC->VolId("V0L25");
2937 static Int_t idV0L26 = gMC->VolId("V0L26");
2938 static Int_t idV0L27 = gMC->VolId("V0L27");
2939 static Int_t idV0L28 = gMC->VolId("V0L28");
1a809d19 2940 static Int_t idV0R3 = gMC->VolId("V0R3");
53eff774 2941
2942 static Int_t idV0L31 = gMC->VolId("V0L3Sec1");
2943 static Int_t idV0L32 = gMC->VolId("V0L3Sec2");
2944 static Int_t idV0L33 = gMC->VolId("V0L3Sec3");
2945 static Int_t idV0L34 = gMC->VolId("V0L3Sec4");
5ff8773f 2946 static Int_t idV0L35 = gMC->VolId("V0L35");
2947 static Int_t idV0L36 = gMC->VolId("V0L36");
2948 static Int_t idV0L37 = gMC->VolId("V0L37");
2949 static Int_t idV0L38 = gMC->VolId("V0L38");
1a809d19 2950 static Int_t idV0R4 = gMC->VolId("V0R4");
53eff774 2951
2952 static Int_t idV0L41 = gMC->VolId("V0L4Sec1");
2953 static Int_t idV0L42 = gMC->VolId("V0L4Sec2");
2954 static Int_t idV0L43 = gMC->VolId("V0L4Sec3");
2955 static Int_t idV0L44 = gMC->VolId("V0L4Sec4");
5ff8773f 2956 static Int_t idV0L45 = gMC->VolId("V0L45");
2957 static Int_t idV0L46 = gMC->VolId("V0L46");
2958 static Int_t idV0L47 = gMC->VolId("V0L47");
2959 static Int_t idV0L48 = gMC->VolId("V0L48");
1a809d19 2960 static Int_t idV0R5 = gMC->VolId("V0R5");
2961 static Int_t idV0R6 = gMC->VolId("V0R6");
742d6134 2962 bool hitOnV0C = true;
1a809d19 2963 double lightYield;
2964 double lightAttenuation;
5ff8773f 2965 double nMeters;
1a809d19 2966 double fibToPhot;
53eff774 2967 if ( gMC->CurrentVolID(copy) == idV0R1 ||
2968 gMC->CurrentVolID(copy) == idV0L11 ||
2969 gMC->CurrentVolID(copy) == idV0L12 ||
2970 gMC->CurrentVolID(copy) == idV0L13 ||
2971 gMC->CurrentVolID(copy) == idV0L14 ||
2972 gMC->CurrentVolID(copy) == idV0L15 ||
2973 gMC->CurrentVolID(copy) == idV0L16 ||
2974 gMC->CurrentVolID(copy) == idV0L17 ||
2975 gMC->CurrentVolID(copy) == idV0L18
2976 )
2977 ringNumber = 1;
2978
2979 else if ( gMC->CurrentVolID(copy) == idV0R2 ||
2980 gMC->CurrentVolID(copy) == idV0L21 ||
2981 gMC->CurrentVolID(copy) == idV0L22 ||
2982 gMC->CurrentVolID(copy) == idV0L23 ||
2983 gMC->CurrentVolID(copy) == idV0L24 ||
2984 gMC->CurrentVolID(copy) == idV0L25 ||
2985 gMC->CurrentVolID(copy) == idV0L26 ||
2986 gMC->CurrentVolID(copy) == idV0L27 ||
2987 gMC->CurrentVolID(copy) == idV0L28
2988 )
2989 ringNumber = 2;
2990
2991 else if ( gMC->CurrentVolID(copy) == idV0R3 ||
2992 gMC->CurrentVolID(copy) == idV0R4 ||
2993 gMC->CurrentVolID(copy) == idV0L31 ||
2994 gMC->CurrentVolID(copy) == idV0L32 ||
2995 gMC->CurrentVolID(copy) == idV0L33 ||
2996 gMC->CurrentVolID(copy) == idV0L34 ||
2997 gMC->CurrentVolID(copy) == idV0L35 ||
2998 gMC->CurrentVolID(copy) == idV0L36 ||
2999 gMC->CurrentVolID(copy) == idV0L37 ||
3000 gMC->CurrentVolID(copy) == idV0L38
3001 )
3002 ringNumber = 3;
3003 else if ( gMC->CurrentVolID(copy) == idV0R5 ||
3004 gMC->CurrentVolID(copy) == idV0R6 ||
3005 gMC->CurrentVolID(copy) == idV0L41 ||
3006 gMC->CurrentVolID(copy) == idV0L42 ||
3007 gMC->CurrentVolID(copy) == idV0L43 ||
3008 gMC->CurrentVolID(copy) == idV0L44 ||
3009 gMC->CurrentVolID(copy) == idV0L45 ||
3010 gMC->CurrentVolID(copy) == idV0L46 ||
3011 gMC->CurrentVolID(copy) == idV0L47 ||
3012 gMC->CurrentVolID(copy) == idV0L48
3013 ) ringNumber = 4;
3014
1a809d19 3015 else ringNumber = 0;
53eff774 3016
1a809d19 3017 if (ringNumber) {
53eff774 3018 if (
3019 gMC->CurrentVolID(copy) == idV0L11 ||
3020 gMC->CurrentVolID(copy) == idV0L12 ||
3021 gMC->CurrentVolID(copy) == idV0L13 ||
3022 gMC->CurrentVolID(copy) == idV0L14 ||
3023 gMC->CurrentVolID(copy) == idV0L15 ||
3024 gMC->CurrentVolID(copy) == idV0L16 ||
3025 gMC->CurrentVolID(copy) == idV0L17 ||
3026 gMC->CurrentVolID(copy) == idV0L18 ||
3027 gMC->CurrentVolID(copy) == idV0L21 ||
3028 gMC->CurrentVolID(copy) == idV0L22 ||
3029 gMC->CurrentVolID(copy) == idV0L23 ||
3030 gMC->CurrentVolID(copy) == idV0L24 ||
3031 gMC->CurrentVolID(copy) == idV0L25 ||
3032 gMC->CurrentVolID(copy) == idV0L26 ||
3033 gMC->CurrentVolID(copy) == idV0L27 ||
3034 gMC->CurrentVolID(copy) == idV0L28 ||
3035 gMC->CurrentVolID(copy) == idV0L31 ||
3036 gMC->CurrentVolID(copy) == idV0L32 ||
3037 gMC->CurrentVolID(copy) == idV0L33 ||
3038 gMC->CurrentVolID(copy) == idV0L34 ||
3039 gMC->CurrentVolID(copy) == idV0L35 ||
3040 gMC->CurrentVolID(copy) == idV0L36 ||
3041 gMC->CurrentVolID(copy) == idV0L37 ||
3042 gMC->CurrentVolID(copy) == idV0L38 ||
3043 gMC->CurrentVolID(copy) == idV0L41 ||
3044 gMC->CurrentVolID(copy) == idV0L42 ||
3045 gMC->CurrentVolID(copy) == idV0L43 ||
3046 gMC->CurrentVolID(copy) == idV0L44 ||
3047 gMC->CurrentVolID(copy) == idV0L45 ||
3048 gMC->CurrentVolID(copy) == idV0L46 ||
3049 gMC->CurrentVolID(copy) == idV0L47 ||
3050 gMC->CurrentVolID(copy) == idV0L48
3051 )
3052 hitOnV0C = false;
3053
1a809d19 3054 destep = gMC->Edep();
3055 step = gMC->TrackStep();
3056 if (hitOnV0C) {
3057 lightYield = fV0CLightYield;
3058 lightAttenuation = fV0CLightAttenuation;
3059 nMeters = fV0CnMeters;
3060 fibToPhot = fV0CFibToPhot;
3061 } else {
3062 lightYield = fV0ALightYield;
3063 lightAttenuation = fV0ALightAttenuation;
3064 nMeters = fV0AnMeters;
5e44677e 3065 fibToPhot = fV0AFibToPhot;
1a809d19 3066 }
3067 nPhotonsInStep = Int_t(destep / (lightYield *1e-9) );
3068 nPhotonsInStep = gRandom->Poisson(nPhotonsInStep);
3069 eloss += destep;
3070 tlength += step;
3071 if ( gMC->IsTrackEntering() ) {
3072 nPhotons = nPhotonsInStep;
3073 gMC->TrackPosition(fTrackPosition);
3074 gMC->TrackMomentum(fTrackMomentum);
3075 Float_t pt = TMath::Sqrt( fTrackMomentum.Px() * fTrackMomentum.Px()
3076 + fTrackMomentum.Py() * fTrackMomentum.Py() );
3077 TParticle *par = gAlice->GetMCApp()->Particle(gAlice->GetMCApp()->GetCurrentTrackNumber());
3078 hits[0] = fTrackPosition.X();
3079 hits[1] = fTrackPosition.Y();
3080 hits[2] = fTrackPosition.Z();
3081 hits[3] = Float_t (gMC->TrackPid());
3082 hits[4] = gMC->TrackTime();
3083 hits[5] = gMC->TrackCharge();
3084 hits[6] = fTrackMomentum.Theta()*TMath::RadToDeg();
3085 hits[7] = fTrackMomentum.Phi()*TMath::RadToDeg();
3086 hits[8] = ringNumber;
3087 hits[9] = pt;
3088 hits[10] = fTrackMomentum.P();
3089 hits[11] = fTrackMomentum.Px();
3090 hits[12] = fTrackMomentum.Py();
3091 hits[13] = fTrackMomentum.Pz();
3092 hits[14] = par->Vx();
3093 hits[15] = par->Vy();
3094 hits[16] = par->Vz();
3095 tlength = 0.0;
3096 eloss = 0.0;
742d6134 3097
3098 //////////////////////////
3099 ///// Display V0A geometry
3100 // if (!hitOnV0C) {
3101 // FILE *of;
3102 // of = fopen("V0A.out", "a");
3103 // // x, y, z, ringnumber, cellid
3104 // fprintf( of, "%f %f %f %f %d \n", hits[0], hits[1], hits[2], hits[8], GetCellId (vol, hits) );
3105 // fclose(of);
3106 // }
3107 //////////////////////////
1a809d19 3108 }
3109 nPhotons = nPhotons + nPhotonsInStep;
3110 if( gMC->IsTrackExiting() || gMC->IsTrackStop() || gMC->IsTrackDisappeared()){
3111 nPhotons = nPhotons - Int_t((Float_t(nPhotons) * lightAttenuation * nMeters));
3112 nPhotons = nPhotons - Int_t( Float_t(nPhotons) * fibToPhot);
3113 hits[17] = eloss;
3114 hits[18] = tlength;
3115 hits[19] = nPhotons;
3116 hits[20] = GetCellId (vol, hits);
3117 AddHit(gAlice->GetMCApp()->GetCurrentTrackNumber(), vol, hits);
3118 tlength = 0.0;
3119 eloss = 0.0;
3120 nPhotons = 0;
3121 nPhotonsInStep = 0;
3122 numStep = 0;
3123 }
7b1a8873 3124 if( gMC->IsTrackEntering() || gMC->IsTrackExiting() ) {
3125 AddTrackReference(gAlice->GetMCApp()->GetCurrentTrackNumber(), AliTrackReference::kVZERO);
3126 }
1a809d19 3127 }
3128}
3129
3130//_____________________________________________________________________________
3131void AliVZEROv7::AddHit(Int_t track, Int_t *vol, Float_t *hits)
3132{
3133// Adds a VZERO hit
3134
3135 TClonesArray &lhits = *fHits;
3136 new(lhits[fNhits++]) AliVZEROhit(fIshunt,track,vol,hits);
3137}
3138
3139//_____________________________________________________________________________
3140void AliVZEROv7::AddDigits(Int_t *tracks, Int_t* digits)
3141{
3142// Adds a VZERO digit
3143
3144 TClonesArray &ldigits = *fDigits;
3145 new(ldigits[fNdigits++]) AliVZEROdigit(tracks, digits);
3146}
3147
3148//_____________________________________________________________________________
3149void AliVZEROv7::MakeBranch(Option_t *option)
3150{
3151// Creates new branches in the current Root Tree
3152
3153 char branchname[10];
3154 sprintf(branchname,"%s",GetName());
3155 AliDebug(2,Form("fBufferSize = %d",fBufferSize));
3156 const char *cH = strstr(option,"H");
cb5b8b21 3157 if (fHits && fLoader->TreeH() && cH) {
3158 fLoader->TreeH()->Branch(branchname,&fHits, fBufferSize);
1a809d19 3159 AliDebug(2,Form("Making Branch %s for hits",branchname));
3160 }
3161 const char *cD = strstr(option,"D");
3162 if (fDigits && fLoader->TreeD() && cD) {
3163 fLoader->TreeD()->Branch(branchname,&fDigits, fBufferSize);
3164 AliDebug(2,Form("Making Branch %s for digits",branchname));
3165 }
3166}
3167
3168//_____________________________________________________________________________
3169Int_t AliVZEROv7::GetCellId(Int_t *vol, Float_t *hits)
3170{
3171 // Returns Id of scintillator cell
3172 // Right side from 0 to 47
3173 // Left side from 48 to 79
3174 // hits[8] = ring number (1 to 4)
3175 // vol[1] = copy number (1 to 8)
3176
3177 Int_t index = vol[1];
5063dd34 3178 Int_t ringNumber = Int_t(hits[8]);
1a809d19 3179 fCellId = 0;
742d6134 3180
1a809d19 3181 Float_t phi = Float_t(TMath::ATan2(Double_t(hits[1]),Double_t(hits[0])) );
11ea46b9 3182 Float_t kRaddeg = 180.0/TMath::Pi();
1a809d19 3183 phi = kRaddeg * phi;
3184
3185 if (index < 7) index = index + 8;
3186
3187 if (hits[2] < 0.0) {
5063dd34 3188 if(ringNumber < 3) {
3189 index = (index - 7) + ( ( ringNumber - 1 ) * 8);
3190 } else if (ringNumber >= 3) {
1a809d19 3191 if ( gMC->CurrentVolID(vol[1]) == gMC->VolId("V0R3") || gMC->CurrentVolID(vol[1])
5063dd34 3192 == gMC->VolId("V0R5") ) index = (index*2-14)+((ringNumber-2)*16);
1a809d19 3193 if ( gMC->CurrentVolID(vol[1]) == gMC->VolId("V0R4") || gMC->CurrentVolID(vol[1])
5063dd34 3194 == gMC->VolId("V0R6") ) index = (index*2-13)+((ringNumber-2)*16);
1a809d19 3195 }
3196 fCellId = index;
3197 } else if (hits[2] > 0.0) {
dac6c675 3198 // cout << " vol[0] = " << vol[0] << " copy : " << vol[1]
3199 // << " called " << gMC->VolName(vol[0]) << endl;
3200 // cout << " vol[2] = " << vol[2] << " copy : " << vol[3]
3201 // << " called " << gMC->VolName(vol[2]) << endl;
53eff774 3202 // upper half
3203
3204 if (gMC->CurrentVolID(vol[2]) == gMC->VolId("V0L1Sec1")) fCellId = 47 + 1;
3205 if (gMC->CurrentVolID(vol[2]) == gMC->VolId("V0L1Sec2")) fCellId = 47 + 2;
3206 if (gMC->CurrentVolID(vol[2]) == gMC->VolId("V0L1Sec3")) fCellId = 47 + 3;
3207 if (gMC->CurrentVolID(vol[2]) == gMC->VolId("V0L1Sec4")) fCellId = 47 + 4;
3208
3209 if (gMC->CurrentVolID(vol[2]) == gMC->VolId("V0L2Sec1")) fCellId = 47 + 9;
3210 if (gMC->CurrentVolID(vol[2]) == gMC->VolId("V0L2Sec2")) fCellId = 47 + 10;
3211 if (gMC->CurrentVolID(vol[2]) == gMC->VolId("V0L2Sec3")) fCellId = 47 + 11;
3212 if (gMC->CurrentVolID(vol[2]) == gMC->VolId("V0L2Sec4")) fCellId = 47 + 12;
3213
3214 if (gMC->CurrentVolID(vol[2]) == gMC->VolId("V0L3Sec1")) fCellId = 47 + 17;
3215 if (gMC->CurrentVolID(vol[2]) == gMC->VolId("V0L3Sec2")) fCellId = 47 + 18;
3216 if (gMC->CurrentVolID(vol[2]) == gMC->VolId("V0L3Sec3")) fCellId = 47 + 19;
3217 if (gMC->CurrentVolID(vol[2]) == gMC->VolId("V0L3Sec4")) fCellId = 47 + 20;
3218
3219 if (gMC->CurrentVolID(vol[2]) == gMC->VolId("V0L4Sec1")) fCellId = 47 + 25;
3220 if (gMC->CurrentVolID(vol[2]) == gMC->VolId("V0L4Sec2")) fCellId = 47 + 26;
3221 if (gMC->CurrentVolID(vol[2]) == gMC->VolId("V0L4Sec3")) fCellId = 47 + 27;
3222 if (gMC->CurrentVolID(vol[2]) == gMC->VolId("V0L4Sec4")) fCellId = 47 + 28;
3223
3224 // lower half
3225 if (gMC->CurrentVolID(vol[2]) == gMC->VolId("V0L15")) fCellId = 48+4;
3226 if (gMC->CurrentVolID(vol[2]) == gMC->VolId("V0L16")) fCellId = 48+5;
3227 if (gMC->CurrentVolID(vol[2]) == gMC->VolId("V0L17")) fCellId = 48+6;
3228 if (gMC->CurrentVolID(vol[2]) == gMC->VolId("V0L18")) fCellId = 48+7;
3229 if (gMC->CurrentVolID(vol[2]) == gMC->VolId("V0L25")) fCellId = 8+48+4;
3230 if (gMC->CurrentVolID(vol[2]) == gMC->VolId("V0L26")) fCellId = 8+48+5;
3231 if (gMC->CurrentVolID(vol[2]) == gMC->VolId("V0L27")) fCellId = 8+48+6;
3232 if (gMC->CurrentVolID(vol[2]) == gMC->VolId("V0L28")) fCellId = 8+48+7;
3233 if (gMC->CurrentVolID(vol[2]) == gMC->VolId("V0L35")) fCellId = 16+48+4;
3234 if (gMC->CurrentVolID(vol[2]) == gMC->VolId("V0L36")) fCellId = 16+48+5;
3235 if (gMC->CurrentVolID(vol[2]) == gMC->VolId("V0L37")) fCellId = 16+48+6;
3236 if (gMC->CurrentVolID(vol[2]) == gMC->VolId("V0L38")) fCellId = 16+48+7;
3237 if (gMC->CurrentVolID(vol[2]) == gMC->VolId("V0L45")) fCellId = 24+48+4;
3238 if (gMC->CurrentVolID(vol[2]) == gMC->VolId("V0L46")) fCellId = 24+48+5;
3239 if (gMC->CurrentVolID(vol[2]) == gMC->VolId("V0L47")) fCellId = 24+48+6;
3240 if (gMC->CurrentVolID(vol[2]) == gMC->VolId("V0L48")) fCellId = 24+48+7;
1a809d19 3241 }
742d6134 3242
1a809d19 3243 return fCellId;
3244}
f316b8fc 3245