29 int createdircPix(Int_t fGeomType = 1, Int_t fFocusingSystem = 6, Int_t iter=0,
TString geomPath=
".",
Double_t par1=-100,
Double_t par2=-100,
Double_t par3=-100,
Double_t par4=-100,
Double_t par5=-100,
Double_t par6=-100,
Double_t par7=-100,
Double_t par8=-100){
32 gROOT->Macro(
"$VMCWORKDIR/gconfig/rootlogon.C");
34 TString vmcWorkdir = getenv(
"VMCWORKDIR");
37 gSystem->Load(
"libGeoBase");
38 gSystem->Load(
"libParBase");
39 gSystem->Load(
"libBase");
40 gSystem->Load(
"libPndData");
41 gSystem->Load(
"libPassive");
43 TString fGeoFile= vmcWorkdir + Form(
"/geometry/dirc_g%d_l%d_pix.root",fGeomType, fFocusingSystem);
44 if(iter!=0) fGeoFile= geomPath + Form(
"/dirc_%d.root",iter);
64 Double_t dphi = (180.-2.*pipehAngle)/bbnum*2.;
69 Double_t bbox_hlen = 0.5*(bbox_zdown - bbox_zup);
70 Double_t bbox_shift = bbox_zup + bbox_hlen;
88 const Int_t NpixTotal = Npix*Npix;
94 Double_t hgap = 0.5*(MCPsize - MCPactiveArea + MCPgap);
95 Double_t step = MCPactiveArea + 2.*hgap;
99 Double_t sob_shift = -bbox_hlen + bbox_shift - sob_len;
101 if(fGeomType==2) sob_angleB = 90;
103 if(fGeomType!=3) EVdrop += boxgap+boxthick;
107 Double_t bbSideGap = 0.5*( ((barwidth+2.*barhgap)*barnum) - (2.*radius*
sin((dphi-bbGapAngle)/180.*
pi/2.)+2.*barhgap) );
108 Double_t bbX = 2.*radius*
sin((dphi-bbGapAngle)/180.*
pi/2.)+2.*barhgap;
110 Double_t barBoxWidth = 0.5*barnum*(barwidth+2.*barhgap)+bbSideGap+boxthick;
111 Double_t barBoxHeight = hthick+boxgap+boxthick;
113 Double_t sob_angle = atan((5.*step + PixelSize + 2*hgap-2*hthick -EVoffset-EVdrop)/sob_len)/
pi*180.;
114 Double_t sob_Rout = radius-hthick + 5*step -2*hgap-EVdrop + PixelSize/2.;
116 Double_t radiusCornerIn = (radius-hthick-EVdrop-PixelSize/2.)/
cos(dphi/2./180.*
pi);
117 Double_t radiusCornerOut = sob_Rout/
cos(dphi_rad/2.);
118 Double_t radiusMiddleSmall = radius-hthick-EVdrop-PixelSize/2.;
122 cout<<
"sob_Rout = "<<sob_Rout<<endl;
132 Double_t pheight = 2.*phlength * tan(pangle/180.*
pi);
133 Double_t sob_Rprizm = radius + hthick + poffset + pheight + EVoffset + (sob_len-2.*phlength)*tan(60./180.*
pi);
140 TFile*
fi =
new TFile(fGeoFile,
"RECREATE");
141 cout<<
"Output file = "<<fGeoFile<<endl;
146 Int_t nel, numed, nz;
148 FairGeoLoader*
geoLoad =
new FairGeoLoader(
"TGeo",
"FairGeoLoader");
149 FairGeoInterface *
geoFace = geoLoad->getGeoInterface();
150 geoFace->setMediaFile(vmcWorkdir +
"/geometry/media_pnd.geo");
151 geoFace->readMedia();
153 FairGeoMedia *
Media = geoFace->getMedia();
154 FairGeoBuilder *
geobuild=geoLoad->getGeoBuilder();
156 FairGeoMedium *DrcAir = Media->getMedium(
"air");
157 FairGeoMedium *DrcAirNoSens = Media->getMedium(
"DIRCairNoSens");
158 FairGeoMedium *DrcEpotek301_2 = Media->getMedium(
"Epotek301_2");
159 FairGeoMedium *DrcOpticalGrease = Media->getMedium(
"OpticalGrease");
160 FairGeoMedium *DrcCarbonFiber = Media->getMedium(
"DIRCcarbonFiber");
161 FairGeoMedium *DrcFusedSil = Media->getMedium(
"FusedSil");
162 FairGeoMedium *DrcMirror = Media->getMedium(
"Mirror");
163 FairGeoMedium *DrcMarcol82_7 = Media->getMedium(
"Marcol82_7");
164 FairGeoMedium *DrcNLAK33A = Media->getMedium(
"NLAK33A");
165 FairGeoMedium *DrcBK7G18 = Media->getMedium(
"BK7G18");
166 FairGeoMedium *DrcPBF2 = Media->getMedium(
"PBF2");
167 FairGeoMedium *DrcPhotocathode= Media->getMedium(
"Photocathode");
169 Int_t
nmed=geobuild->createMedium(DrcAir);
170 nmed=geobuild->createMedium(DrcAirNoSens);
171 nmed=geobuild->createMedium(DrcEpotek301_2);
172 nmed=geobuild->createMedium(DrcOpticalGrease);
173 nmed=geobuild->createMedium(DrcCarbonFiber);
174 nmed=geobuild->createMedium(DrcFusedSil);
175 nmed=geobuild->createMedium(DrcMirror);
176 nmed=geobuild->createMedium(DrcMarcol82_7);
177 nmed=geobuild->createMedium(DrcNLAK33A);
178 nmed=geobuild->createMedium(DrcBK7G18);
179 nmed=geobuild->createMedium(DrcPBF2);
180 nmed=geobuild->createMedium(DrcPhotocathode);
184 TGeoVolume *CylLensWide1, *CylLensWide2, *Lens1, *Lens2, *Lens3, *Lens4;
186 if(fFocusingSystem == 0){
190 if(fFocusingSystem == 1){
198 len1 = (hlens1+hlens2)/2.;
199 len2 = (hlens3+hlens4)/2.;
203 TGeoSphere* lSphUp =
new TGeoSphere(
"SphUp",0 ,rlens1, 0. ,180.,0.,360.);
204 TGeoBBox* lCylBox =
new TGeoBBox(
"LensBox", llens, barBoxHeight, len1);
206 TGeoTranslation
t1(
"trans", 0., 0., rlens1+hlens2-len1);
207 TGeoRotation
r1(
"rot",90., 90. ,0. );
208 TGeoHMatrix
tr = t1*
r1;
209 TGeoHMatrix *transf =
new TGeoHMatrix(tr);
210 transf->SetName(
"transf");
211 transf->RegisterYourself();
213 TGeoCompositeShape *cslens1 =
new TGeoCompositeShape(
"cslens1",
"SphUp:transf * LensBox");
214 TGeoVolume *Lens1 =
new TGeoVolume(
"DrcLENS1Sensor",cslens1,
gGeoManager->GetMedium(
"FusedSil"));
215 Lens1->SetLineColor(kRed+2);
216 Lens1->SetTransparency(40);
218 fdz_lens1 = -bbox_hlen + 3*barWin_hthick - len1/2. + rlens1;
221 TGeoTranslation
t2(
"trans", 0., 0., rlens1+hlens2-len1);
222 TGeoHMatrix tr2 = t2*
r1;
223 TGeoHMatrix *transf2 =
new TGeoHMatrix(tr2);
224 transf2->SetName(
"transf2");
225 transf2->RegisterYourself();
227 TGeoCompositeShape *cslens2 =
new TGeoCompositeShape(
"cslens2",
"LensBox - SphUp:transf2");
228 TGeoVolume* Lens2 =
new TGeoVolume(
"DrcLENS2Sensor", cslens2,
gGeoManager->GetMedium(
"NLAK33A"));
229 Lens2->SetLineColor(kRed);
230 Lens2->SetTransparency(40);
233 TGeoSphere* lSphUp2 =
new TGeoSphere(
"SphUp2",0 ,rlens2, 0. ,180.,0.,360.);
234 TGeoBBox* lCylBox2 =
new TGeoBBox(
"LensBox2", llens, barBoxHeight, len2);
236 TGeoTranslation
t3(
"trans3", 0., 0., rlens2+hlens4-len2);
237 TGeoHMatrix tr3 = t3*
r1;
238 TGeoHMatrix *transf3 =
new TGeoHMatrix(tr3);
239 transf3->SetName(
"transf3");
240 transf3->RegisterYourself();
242 TGeoCompositeShape *cslens3 =
new TGeoCompositeShape(
"cslens3",
"SphUp2:transf3 * LensBox2");
243 TGeoVolume *Lens3 =
new TGeoVolume(
"DrcLENS3Sensor",cslens3,
gGeoManager->GetMedium(
"NLAK33A"));
244 Lens3->SetLineColor(kRed);
245 Lens3->SetTransparency(40);
248 TGeoTranslation t4(
"trans", 0., 0., rlens2+hlens4-len2);
249 TGeoHMatrix tr4 = t4*
r1;
250 TGeoHMatrix *transf4 =
new TGeoHMatrix(tr4);
251 transf4->SetName(
"transf4");
252 transf4->RegisterYourself();
254 TGeoCompositeShape *cslens4 =
new TGeoCompositeShape(
"cslens4",
"LensBox2 - SphUp2:transf4");
255 TGeoVolume* Lens4 =
new TGeoVolume(
"DrcLENS4Sensor", cslens4,
gGeoManager->GetMedium(
"DIRCairNoSens"));
256 Lens4->SetLineColor(kBlue+2);
257 Lens4->SetTransparency(40);
261 if(fFocusingSystem == 2){
267 len = -130. + zpos + 1.;
273 Double_t focal_length = 2. * bbox_hlen + sob_len -
fabs(len) + len1;
274 Double_t mirror_radius = 2. * focal_length;
276 cout<<
" mirror radius: "<<mirror_radius<<endl;
281 TGeoSphere* logicSphere =
new TGeoSphere(
"S",0.,mirror_radius, 0. ,180.,0.,360.);
282 TGeoBBox* lBox =
new TGeoBBox(
"B", barwidth/2., hthick,
fabs(len1)/2.);
286 TGeoTranslation *tr1 =
new TGeoTranslation(
"tr1", 0.,0., t);
287 tr1->RegisterYourself();
288 TGeoCompositeShape *cs =
new TGeoCompositeShape(
"cs",
"S*(B:tr1)");
290 TGeoVolume *block1 =
new TGeoVolume(
"DrcBlock1",cs,
gGeoManager->GetMedium(
"FusedSil"));
291 block1->SetLineColor(kRed);
292 block1->SetTransparency(40);
295 Double_t shift1 = len1-mirror_radius;
296 shift1 += bbox_hlen-
fabs(len)-2.*mirr_hthick;
308 TGeoSphere* logicSphere2 =
new TGeoSphere(
"S2",0,mirror_radius, 0. ,180.,0.,360.);
309 TGeoBBox* lBox2 =
new TGeoBBox(
"B2", barwidth/2., hthick,
fabs(len2)/2.);
314 TGeoTranslation *tr2 =
new TGeoTranslation(
"tr2", 0.,0., t2);
315 tr2->RegisterYourself();
316 TGeoCompositeShape *cs2 =
new TGeoCompositeShape(
"cs2",
"(B2:tr2)-S2");
318 TGeoVolume *block2 =
new TGeoVolume(
"DrcBlock2",cs2,
gGeoManager->GetMedium(
"Mirror"));
319 block2->SetLineColor(kGreen);
320 block2->SetTransparency(40);
324 shift2 += bbox_hlen-
fabs(len)-2*mirr_hthick;
325 shift2 += len1 + gap;
346 if(fFocusingSystem == 3){
352 len = (hlens1+hlens2)/2.;
355 TGeoEltu* lCylinder =
new TGeoEltu(
"Cyl", rlens, rlens, llens+1);
356 TGeoBBox* lCylBox =
new TGeoBBox(
"LensBox", llens, barBoxHeight, len);
357 TGeoTranslation
t1(
"trans", 0., 0., rlens+hlens2-len);
358 TGeoRotation
r1(
"rot",90., 90. ,0. );
359 TGeoHMatrix
tr = t1*
r1;
360 TGeoHMatrix *transf =
new TGeoHMatrix(tr);
361 transf->SetName(
"transf");
362 transf->RegisterYourself();
363 TGeoCompositeShape *cslens1 =
new TGeoCompositeShape(
"cslens1",
"Cyl:transf * LensBox");
364 TGeoVolume *CylLens1 =
new TGeoVolume(
"DrcLENS1Sensor", cslens1,
gGeoManager->GetMedium(
"NLAK33A"));
365 CylLens1->SetLineColor(kRed+2);
366 CylLens1->SetTransparency(40);
368 fdz_lens1 = -bbox_hlen - barWin_hthick;
371 TGeoTranslation
t2(
"trans", 0., 0., rlens+hlens2-len);
372 TGeoHMatrix tr2 = t2*
r1;
373 TGeoHMatrix *transf2 =
new TGeoHMatrix(tr2);
374 transf2->SetName(
"transf2");
375 transf2->RegisterYourself();
377 TGeoCompositeShape *cslens2 =
new TGeoCompositeShape(
"cslens2",
"LensBox - Cyl:transf2");
378 TGeoVolume* CylLens2 =
new TGeoVolume(
"DrcLENS2Sensor", cslens2,
gGeoManager->GetMedium(
"FusedSil"));
379 CylLens2->SetLineColor(kRed+2);
380 CylLens2->SetTransparency(40);
384 if(fFocusingSystem == 31){
390 len = (hlens1+hlens2)/2.;
393 TGeoEltu* lCylinder =
new TGeoEltu(
"Cyl", rlens, rlens, llens+1);
394 TGeoBBox* lCylBox =
new TGeoBBox(
"LensBox", llens, barBoxHeight, len);
395 TGeoTranslation
t1(
"trans", 0., 0., rlens+hlens2-len);
396 TGeoRotation
r1(
"rot",90., 90. ,0. );
397 TGeoHMatrix
tr = t1*
r1;
398 TGeoHMatrix *transf =
new TGeoHMatrix(tr);
399 transf->SetName(
"transf");
400 transf->RegisterYourself();
401 TGeoCompositeShape *cslens1 =
new TGeoCompositeShape(
"cslens1",
"Cyl:transf * LensBox");
402 TGeoVolume *CylLensWide1 =
new TGeoVolume(
"DrcLENS1Sensor", cslens1,
gGeoManager->GetMedium(
"NLAK33A"));
403 CylLensWide1->SetLineColor(kRed+2);
404 CylLensWide1->SetTransparency(40);
406 fdz_lens1 = -bbox_hlen - barWin_hthick;
409 TGeoTranslation
t2(
"trans", 0., 0., rlens+hlens2-len);
410 TGeoHMatrix tr2 = t2*
r1;
411 TGeoHMatrix *transf2 =
new TGeoHMatrix(tr2);
412 transf2->SetName(
"transf2");
413 transf2->RegisterYourself();
415 TGeoCompositeShape *cslens2 =
new TGeoCompositeShape(
"cslens2",
"LensBox - Cyl:transf2");
416 TGeoVolume* CylLensWide2 =
new TGeoVolume(
"DrcLENS2Sensor", cslens2,
gGeoManager->GetMedium(
"FusedSil"));
417 CylLensWide2->SetLineColor(kRed+2);
418 CylLensWide2->SetTransparency(40);
420 fdz_lens2 = fdz_lens1 + hlens2;
423 if(fFocusingSystem == 4){
429 len = (hlens1+hlens2)/2.;
432 TGeoSphere* lSphUp =
new TGeoSphere(
"SphUp",0 ,rlens, 0. ,180.,0.,360.);
433 TGeoBBox* lCylBox =
new TGeoBBox(
"LensBox", llens, barBoxHeight, len);
435 TGeoTranslation
t1(
"trans", 0., 0., rlens+hlens2-len);
436 TGeoRotation
r1(
"rot",90., 90. ,0. );
437 TGeoHMatrix
tr = t1*
r1;
438 TGeoHMatrix *transf =
new TGeoHMatrix(tr);
439 transf->SetName(
"transf");
440 transf->RegisterYourself();
442 TGeoCompositeShape *cslens1 =
new TGeoCompositeShape(
"cslens1",
"SphUp:transf * LensBox");
443 TGeoVolume *CylLens1 =
new TGeoVolume(
"DrcLENS1Sensor",cslens1,
gGeoManager->GetMedium(
"NLAK33A"));
444 CylLens1->SetLineColor(kRed+2);
445 CylLens1->SetTransparency(40);
449 fdz_lens1 = -bbox_hlen + 3*barWin_hthick - len/2. + rlens;
452 TGeoTranslation
t2(
"trans", 0., 0., rlens+hlens2-len);
453 TGeoHMatrix tr2 = t2*
r1;
454 TGeoHMatrix *transf2 =
new TGeoHMatrix(tr2);
455 transf2->SetName(
"transf2");
456 transf2->RegisterYourself();
458 TGeoCompositeShape *cslens2 =
new TGeoCompositeShape(
"cslens2",
"LensBox - SphUp:transf2");
459 TGeoVolume* CylLens2 =
new TGeoVolume(
"DrcLENS2Sensor", cslens2,
gGeoManager->GetMedium(
"FusedSil"));
460 CylLens2->SetLineColor(kRed+2);
461 CylLens2->SetTransparency(40);
466 if(fFocusingSystem == 5){
473 len = (hlens1+hlens2)/2.;
476 TGeoEltu* lCylinder1 =
new TGeoEltu(
"Cyl1", rlens1, rlens1, llens+1);
477 TGeoBBox* lCylBox =
new TGeoBBox(
"LensBox", llens, barBoxHeight, len);
479 TGeoTranslation
t1(
"trans", 0., 0., rlens1+hlens2-len);
480 TGeoRotation
r1(
"rot",90., 90. ,0. );
481 TGeoHMatrix
tr = t1*
r1;
482 TGeoHMatrix *transf =
new TGeoHMatrix(tr);
483 transf->SetName(
"transf");
484 transf->RegisterYourself();
486 TGeoCompositeShape *cslens1 =
new TGeoCompositeShape(
"cslens1",
"Cyl1:transf * LensBox");
487 TGeoVolume *CylLens1 =
new TGeoVolume(
"DrcLENS1Sensor",cslens1,
gGeoManager->GetMedium(
"NLAK33A"));
488 CylLens1->SetLineColor(kRed+2);
489 CylLens1->SetTransparency(40);
491 fdz_lens1 = -bbox_hlen + 3*barWin_hthick - len/2. + rlens1;
494 TGeoCompositeShape *cslens2 =
new TGeoCompositeShape(
"cslens2",
"LensBox - Cyl1:transf");
495 TGeoVolume* CylLens2 =
new TGeoVolume(
"DrcLENS2Sensor", cslens2,
gGeoManager->GetMedium(
"FusedSil"));
496 CylLens2->SetLineColor(kRed+2);
497 CylLens2->SetTransparency(40);
499 TGeoEltu* lCylinder2 =
new TGeoEltu(
"Cyl2", rlens1, rlens2, llens+1);
501 TGeoTranslation
t2(
"trans", 0., 0., rlens2+hlens2-len);
502 TGeoRotation
r2(
"rot", 0., 90. ,0. );
503 TGeoHMatrix tr2 = t2*
r2;
504 TGeoHMatrix *transf2 =
new TGeoHMatrix(tr2);
505 transf2->SetName(
"transf2");
506 transf2->RegisterYourself();
508 TGeoCompositeShape *cslens3 =
new TGeoCompositeShape(
"cslens3",
"Cyl2:transf2 * LensBox");
509 TGeoVolume *CylLens3 =
new TGeoVolume(
"DrcLENS3Sensor",cslens3,
gGeoManager->GetMedium(
"NLAK33A"));
510 CylLens3->SetLineColor(kRed+2);
511 CylLens3->SetTransparency(40);
514 TGeoCompositeShape *cslens4 =
new TGeoCompositeShape(
"cslens4",
"LensBox - Cyl2:transf2");
515 TGeoVolume* CylLens4 =
new TGeoVolume(
"DrcLENS4Sensor", cslens4,
gGeoManager->GetMedium(
"FusedSil"));
516 CylLens4->SetLineColor(kRed+2);
517 CylLens4->SetTransparency(40);
521 if(fFocusingSystem == 6){
530 rlens1 = (
par1==-100)? rlens1:
par1;
531 rlens2 = (par2==-100)? rlens2: par2;
535 len1 = (hlens1+hlens2)/2.;
536 len2 = (hlens3+hlens4)/2.;
540 TGeoSphere* lSphUp =
new TGeoSphere(
"SphUp",0 ,rlens1, 0. ,180.,0.,360.);
541 TGeoBBox* lCylBox =
new TGeoBBox(
"LensBox", llens, barBoxHeight, len1);
543 TGeoTranslation
t1(
"trans", 0., 0., rlens1+hlens2-len1);
544 TGeoRotation
r1(
"rot",90., 90. ,0. );
545 TGeoHMatrix
tr = t1*
r1;
546 TGeoHMatrix *transf =
new TGeoHMatrix(tr);
547 transf->SetName(
"transf");
548 transf->RegisterYourself();
550 TGeoCompositeShape *cslens1 =
new TGeoCompositeShape(
"cslens1",
"SphUp:transf * LensBox");
551 TGeoVolume *Lens1 =
new TGeoVolume(
"DrcLENS1Sensor",cslens1,
gGeoManager->GetMedium(
"FusedSil"));
552 Lens1->SetLineColor(kRed+2);
553 Lens1->SetTransparency(40);
555 fdz_lens1 = -bbox_hlen + 3*barWin_hthick - len1/2. + rlens1;
558 TGeoTranslation
t2(
"trans", 0., 0., rlens1+hlens2-len1);
559 TGeoHMatrix tr2 = t2*
r1;
560 TGeoHMatrix *transf2 =
new TGeoHMatrix(tr2);
561 transf2->SetName(
"transf2");
562 transf2->RegisterYourself();
564 TGeoCompositeShape *cslens2 =
new TGeoCompositeShape(
"cslens2",
"LensBox - SphUp:transf2");
565 TGeoVolume* Lens2 =
new TGeoVolume(
"DrcLENS2Sensor", cslens2,
gGeoManager->GetMedium(
"PBF2"));
566 Lens2->SetLineColor(kRed);
567 Lens2->SetTransparency(40);
570 TGeoSphere* lSphUp2 =
new TGeoSphere(
"SphUp2",0 ,rlens2, 0. ,180.,0.,360.);
571 TGeoBBox* lCylBox2 =
new TGeoBBox(
"LensBox2", llens, barBoxHeight, len2);
573 TGeoTranslation
t3(
"trans3", 0., 0., rlens2+hlens4-len2);
574 TGeoHMatrix tr3 = t3*
r1;
575 TGeoHMatrix *transf3 =
new TGeoHMatrix(tr3);
576 transf3->SetName(
"transf3");
577 transf3->RegisterYourself();
579 TGeoCompositeShape *cslens3 =
new TGeoCompositeShape(
"cslens3",
"SphUp2:transf3 * LensBox2");
580 TGeoVolume *Lens3 =
new TGeoVolume(
"DrcLENS3Sensor",cslens3,
gGeoManager->GetMedium(
"PBF2"));
581 Lens3->SetLineColor(kRed);
582 Lens3->SetTransparency(40);
585 TGeoTranslation t4(
"trans", 0., 0., rlens2+hlens4-len2);
586 TGeoHMatrix tr4 = t4*
r1;
587 TGeoHMatrix *transf4 =
new TGeoHMatrix(tr4);
588 transf4->SetName(
"transf4");
589 transf4->RegisterYourself();
591 TGeoCompositeShape *cslens4 =
new TGeoCompositeShape(
"cslens4",
"LensBox2 - SphUp2:transf4");
592 TGeoVolume* Lens4 =
new TGeoVolume(
"DrcLENS4Sensor", cslens4,
gGeoManager->GetMedium(
"FusedSil"));
593 Lens4->SetLineColor(kBlue+2);
594 Lens4->SetTransparency(40);
619 TGeoManager*
gGeoMan = (TGeoManager*)gROOT->FindObject(
"FAIRGeom");
622 TGeoBBox* lTop =
new TGeoBBox(500,500,300);
623 TGeoVolume*
top =
new TGeoVolume(
"DIRC", lTop,
gGeoManager->GetMedium(
"air"));
629 double sum = len + barWin_hthick + EVgreaseLayer;
630 double mirrorgap = 0.0;
631 double mirrorblock = mirr_hthick/2.+mirrorgap/2.;
635 shape =
new TGeoPcon(
"BarrelDIRCShape", 0, 360., 4);
636 shape->DefineSection(0, bbox_zdown+2*mirrorblock, 35., 60.);
637 shape->DefineSection(1, bbox_zup, 35., 60.);
638 shape->DefineSection(2, bbox_zup - sob_len +20., radiusMiddleSmall-1, sob_Rout+poffset+pheight+EVoffset+1.);
639 shape->DefineSection(3, bbox_zup - sob_len - PDbaseLayer - 2*sum, radiusMiddleSmall-1, sob_Rout+poffset+pheight+EVoffset+1.);
641 shape =
new TGeoPcon(
"BarrelDIRCShape", 0, 360., 6);
642 shape->DefineSection(0, bbox_zdown+2*mirrorblock, 35., 60.);
643 shape->DefineSection(1, bbox_zup, 35., 60.);
644 shape->DefineSection(2, bbox_zup-2.*sum, 35., 60.);
645 shape->DefineSection(3, bbox_zup - 2.*sum -0.01, radiusMiddleSmall-0.01, sob_Rout+poffset+pheight+EVoffset+1.);
646 shape->DefineSection(4, bbox_zup - sob_len, radiusMiddleSmall-0.01, sob_Rout+poffset+pheight+EVoffset+1.);
647 shape->DefineSection(5, bbox_zup - sob_len - 2*PDbaseLayer - 2*sum, radiusMiddleSmall-0.01, sob_Rout+poffset+pheight+EVoffset+1.);
649 vLocalMother =
new TGeoVolume(
"BarrelDIRC", shape,
gGeoManager->GetMedium(
"DIRCairNoSens"));
650 top->AddNode(vLocalMother, 0,0);
653 Double_t entransewidth =len+barWin_hthick+EVgreaseLayer ;
654 cout<<
"entrance width = "<<entransewidth<<endl;
655 double aw = bbox_hlen+entransewidth;
657 TGeoBBox *lEntranceBox =
new TGeoBBox(
"lEntranceBox", barBoxWidth, barBoxHeight, entransewidth);
658 TGeoVolume *entrancebox =
new TGeoVolume(
"DrcEntranceBox", lEntranceBox,
gGeoManager->GetMedium(
"DIRCairNoSens"));
659 entrancebox->SetLineColor(19);
662 TGeoBBox *lBarBox =
new TGeoBBox(
"lBarBox", barBoxWidth, hthick+boxgap+boxthick, bbox_hlen);
663 TGeoVolume *barbox =
new TGeoVolume(
"DrcBarBox", lBarBox,
gGeoManager->GetMedium(
"DIRCcarbonFiber"));
664 barbox->SetLineColor(30);
666 TGeoBBox *lBarAirBox =
new TGeoBBox(
"lBarAirBox", barBoxWidth - 0.1, hthick + 0.1, bbox_hlen);
667 TGeoVolume *barairbox =
new TGeoVolume(
"DrcBarAirBox", lBarAirBox,
gGeoManager->GetMedium(
"DIRCairNoSens"));
668 barairbox->SetLineColor(31);
669 barbox->AddNode(barairbox, 1,
new TGeoCombiTrans(0, 0, 0,
new TGeoRotation(0)));
672 TGeoBBox* lEVgrease =
new TGeoBBox(
"lEVgrease", barBoxWidth, barBoxHeight, EVgreaseLayer);
673 TGeoVolume* evgrease =
new TGeoVolume(
"DrcEVgrease", lEVgrease,
gGeoManager->GetMedium(
"OpticalGrease"));
674 evgrease->SetLineColor(kSpring);
677 TGeoBBox* lBarWin =
new TGeoBBox(
"lBarWin", barBoxWidth, barBoxHeight, barWin_hthick);
678 TGeoVolume* barwin =
new TGeoVolume(
"DrcBarboxWindowSensor", lBarWin,
gGeoManager->GetMedium(
"FusedSil"));
679 barwin->SetLineColor(kBlue-4);
682 TGeoBBox* lMirror =
new TGeoBBox(
"lMirror", barBoxWidth, barBoxHeight, mirr_hthick/2.);
683 TGeoVolume *mirrorbox =
new TGeoVolume(
"DrcMirr", lMirror,
gGeoManager->GetMedium(
"Mirror"));
684 mirrorbox->SetLineColor(5);
689 if(fFocusingSystem == 31){
690 entrancebox->AddNode(CylLensWide1, 1,
new TGeoCombiTrans(0, 0, barWin_hthick + EVgreaseLayer,
new TGeoRotation(0)));
691 entrancebox->AddNode(CylLensWide2, 1,
new TGeoCombiTrans(0, 0, barWin_hthick + EVgreaseLayer,
new TGeoRotation(0)));
693 if( barWin_hthick != 0) entrancebox->AddNode(barwin, 1,
new TGeoCombiTrans(0, 0, entransewidth - 2*len - barWin_hthick,
new TGeoRotation(0)));
694 entrancebox->AddNode(evgrease, 1,
new TGeoCombiTrans(0, 0, entransewidth - 2*len - 2*barWin_hthick - EVgreaseLayer,
new TGeoRotation(0)));
698 for(Int_t
m = 0;
m < bbnum;
m ++){
699 phi_curr = (90. -
phi0 - dphi*
m)/180.*
pi;
700 if(
m > bbnum/2-1){ phi_curr = (90. -
phi0 - dphi*
m - 2.*pipehAngle)/180.*
pi; }
701 dx = radius *
cos(phi_curr);
702 dy = radius *
sin(phi_curr);
704 TGeoRotation rotbbox;
705 rotbbox.RotateZ( -
phi0 -
m*dphi - (TMath::Floor(2.*
m/bbnum))*(2.*pipehAngle));
707 vLocalMother->AddNode(mirrorbox,
m+1,
new TGeoCombiTrans(dx, dy, bbox_zdown + mirrorblock,
new TGeoRotation(rotbbox)));
708 vLocalMother->AddNode(barbox,
m+1,
new TGeoCombiTrans(dx, dy, bbox_zdown - bbox_hlen,
new TGeoRotation(rotbbox)));
709 vLocalMother->AddNode(entrancebox,
m+1,
new TGeoCombiTrans(dx, dy, bbox_zup - entransewidth,
new TGeoRotation(rotbbox)));
712 TGeoBBox *lBar =
new TGeoBBox(
"lBar", barwidth/2., hthick, bbox_hlen);
713 TGeoVolume *bar =
new TGeoVolume(
"DrcBarSensor",lBar,
gGeoManager->GetMedium(
"FusedSil"));
714 bar->SetLineColor(kCyan-9);
715 bar->SetTransparency(60);
718 TGeoBBox* lBarGlue =
new TGeoBBox(
"lBarGlue", barwidth/2., hthick, gluehthick);
719 TGeoVolume *barglue =
new TGeoVolume(
"DrcBarGlueSensor", lBarGlue,
gGeoManager->GetMedium(
"Epotek301_2"));
720 barglue->SetLineColor(kSpring-5);
721 bar->AddNode(barglue, 1,
new TGeoCombiTrans(0., 0., 0.,
new TGeoRotation (0)));
723 for(Int_t j=0; j<barnum; j++){
724 dx = - (bbX/2.) - bbSideGap + (barwidth+2.*barhgap)/2. + j * (barwidth+2.*barhgap);
726 if(fFocusingSystem == 1){
727 entrancebox->AddNode(Lens1, 1+j,
new TGeoCombiTrans(dx, dy, barWin_hthick + EVgreaseLayer + len2,
new TGeoRotation(0)));
728 entrancebox->AddNode(Lens2, 1+j,
new TGeoCombiTrans(dx, dy, barWin_hthick + EVgreaseLayer + len2,
new TGeoRotation(0)));
729 entrancebox->AddNode(Lens3, 1+j,
new TGeoCombiTrans(dx, dy, barWin_hthick + EVgreaseLayer - len1,
new TGeoRotation(0)));
730 entrancebox->AddNode(Lens4, 1+j,
new TGeoCombiTrans(dx, dy, barWin_hthick + EVgreaseLayer - len1,
new TGeoRotation(0)));
732 if(fFocusingSystem == 2){
733 entrancebox->AddNode(block1, 1+j,
new TGeoCombiTrans(dx, dy, fdz_mirr1,
new TGeoRotation (0)));
734 entrancebox->AddNode(block2, 1+j,
new TGeoCombiTrans(dx, dy, fdz_mirr2,
new TGeoRotation (0)));
736 if(fFocusingSystem == 3 || fFocusingSystem == 4){
737 entrancebox->AddNode(CylLens1, 1+j,
new TGeoCombiTrans(dx, dy, barWin_hthick + EVgreaseLayer ,
new TGeoRotation(0)));
738 entrancebox->AddNode(CylLens2, 1+j,
new TGeoCombiTrans(dx, dy, barWin_hthick + EVgreaseLayer ,
new TGeoRotation(0)));
740 if(fFocusingSystem == 5){
741 entrancebox->AddNode(CylLens1, 1+j,
new TGeoCombiTrans(dx, dy, -mirrorblock+aw-2*bbox_hlen - len/2. ,
new TGeoRotation(0)));
742 entrancebox->AddNode(CylLens2, 1+j,
new TGeoCombiTrans(dx, dy, -mirrorblock+aw-2*bbox_hlen - len/2. ,
new TGeoRotation(0)));
743 entrancebox->AddNode(CylLens3, 1+j,
new TGeoCombiTrans(dx, dy, -mirrorblock+aw-2*bbox_hlen - 3*len/2. ,
new TGeoRotation(0)));
744 entrancebox->AddNode(CylLens4, 1+j,
new TGeoCombiTrans(dx, dy, -mirrorblock+aw-2*bbox_hlen - 3*len/2. ,
new TGeoRotation(0)));
746 if(fFocusingSystem == 6){
747 entrancebox->AddNode(Lens1, 1+j,
new TGeoCombiTrans(dx, dy, barWin_hthick + EVgreaseLayer + len2,
new TGeoRotation(0)));
748 entrancebox->AddNode(Lens2, 1+j,
new TGeoCombiTrans(dx, dy, barWin_hthick + EVgreaseLayer + len2,
new TGeoRotation(0)));
749 entrancebox->AddNode(Lens3, 1+j,
new TGeoCombiTrans(dx, dy, barWin_hthick + EVgreaseLayer - len1,
new TGeoRotation(0)));
750 entrancebox->AddNode(Lens4, 1+j,
new TGeoCombiTrans(dx, dy, barWin_hthick + EVgreaseLayer - len1,
new TGeoRotation(0)));
753 barairbox->AddNode(bar, 1+j,
new TGeoCombiTrans(dx, dy, 0,
new TGeoRotation(0)));
758 TGeoPgon* logicEV1, * logicEV2, *logicEV3, * logicEV4;
759 TGeoPgon* logicEV1s, * logicEV2s, *logicEV3s, * logicEV4s;
760 TGeoPgon* logicEV1b, * logicEV2b, *logicEV3b, * logicEV4b;
763 Double_t dR = (radius+hthick+boxgap+boxthick)/
cos(dphi/2./180.*
pi) - (radius-hthick);
769 minrad = radiusMiddleSmall,
770 viscorrection = 0.000001,
771 mcptot = MCPsize + MCPgap,
772 alpharad = TMath::ATan(mcptot/sob_len),
773 steprad=0, stepz=0, currz = 0.;
774 Int_t totalnumbering = 1;
781 TGeoBBox* logicPD =
new TGeoBBox(
"logicPD", MCPactiveArea/2., MCPactiveArea/2., PDsensitiveThick/2.);
782 TGeoVolume *pixelholder =
new TGeoVolume(
"DrcPDSensor", logicPD,
gGeoManager->GetMedium(
"FusedSil"));
783 pixelholder->SetLineColor(kGreen+1);
786 TGeoBBox* logicPhCathode =
new TGeoBBox(
"logicPhCathode", MCPactiveArea/2., MCPactiveArea/2., PhCathodeThick/2.);
787 TGeoVolume *phcathode =
new TGeoVolume(
"DrcPhCathodeSensor", logicPhCathode,
gGeoManager->GetMedium(
"Photocathode"));
788 phcathode->SetLineColor(kGray+1);
791 TGeoBBox* logicWindow =
new TGeoBBox(
"logicWindow", MCPsize/2., MCPsize/2., PDwindowThick/2.);
792 TGeoVolume *window =
new TGeoVolume(
"DrcPDwindowSensor", logicWindow,
gGeoManager->GetMedium(
"FusedSil"));
793 window->SetLineColor(kBlue-4);
796 TGeoBBox* logicMCPgrease =
new TGeoBBox(
"logicMCPgrease", MCPsize/2., MCPsize/2., PDgreaseLayer/2.);
797 TGeoVolume *mcpgrease =
new TGeoVolume(
"DrcMcpGreaseSensor", logicMCPgrease,
gGeoManager->GetMedium(
"OpticalGrease"));
798 mcpgrease->SetLineColor(kSpring);
801 TGeoBBox *logicMCP =
new TGeoBBox(
"logicMCP", MCPsize/2.+MCPgap/2., MCPsize/2.+MCPgap/2., (PDsensitiveThick+PhCathodeThick+PDwindowThick+PDgreaseLayer)/2.);
802 TGeoVolume *oneMCP =
new TGeoVolume(
"DrcMCP", logicMCP,
gGeoManager->GetMedium(
"DIRCcarbonFiber"));
803 oneMCP->SetLineColor(kBlue);
805 oneMCP->AddNode(mcpgrease, 0,
new TGeoCombiTrans(0, 0, (PDwindowThick+PhCathodeThick+PDsensitiveThick)/2.,
new TGeoRotation(0)));
806 oneMCP->AddNode(window, 0,
new TGeoCombiTrans(0, 0, (PhCathodeThick+PDsensitiveThick-PDgreaseLayer)/2.,
new TGeoRotation(0)));
807 oneMCP->AddNode(phcathode, 0,
new TGeoCombiTrans(0, 0, (PDsensitiveThick-PDgreaseLayer-PDwindowThick)/2.,
new TGeoRotation(0)));
808 oneMCP->AddNode(pixelholder, 0,
new TGeoCombiTrans(0, 0, (-PDgreaseLayer-PDwindowThick-PhCathodeThick)/2.,
new TGeoRotation(0)));
811 double btilt=(par5==-100)? 0 : par5*
pi/180.;
816 double fixvisual = 0.000001;
817 if(sob_angleB == 90.){
818 logicEV1 =
new TGeoPgon(
"logicEV1", 90 + pipehAngle, 180 - 2.*pipehAngle, bbnum/2, 2);
819 logicEV1->DefineSection(0, 0., radiusMiddleSmall+sob_len*tan(btilt), sob_Rout+sob_len*tan(btilt));
820 logicEV1->DefineSection(1, sob_len, radiusMiddleSmall, (radius+hthick+boxgap+boxthick+EVoffset));
821 logicEV2 =
new TGeoPgon(
"logicEV2", -90 + pipehAngle, 180 - 2.*pipehAngle, bbnum/2, 2);
822 logicEV2->DefineSection(0, 0., radiusMiddleSmall+sob_len*tan(btilt), sob_Rout+sob_len*tan(btilt));
823 logicEV2->DefineSection(1, sob_len, radiusMiddleSmall, (radius+hthick+boxgap+boxthick+EVoffset));
824 logicEV3 =
new TGeoPgon(
"logicEV3", 90 - pipehAngle-0.02, 2*pipehAngle+0.04, 1, 2);
825 logicEV3->DefineSection(0, 0., (radiusMiddleSmall+sob_len*tan(btilt))*cosFactor1, (sob_Rout+sob_len*tan(btilt))*cosFactor1);
826 logicEV3->DefineSection(1, sob_len, (radiusMiddleSmall)*cosFactor1, (radius+hthick+boxgap+boxthick+EVoffset)*cosFactor1);
827 logicEV4 =
new TGeoPgon(
"logicEV4", -90 - pipehAngle-0.02, 2*pipehAngle+0.04, 1, 2);
828 logicEV4->DefineSection(0, 0., (radiusMiddleSmall+sob_len*tan(btilt))*cosFactor1, (sob_Rout+sob_len*tan(btilt))*cosFactor1);
829 logicEV4->DefineSection(1, sob_len, (radiusMiddleSmall)*cosFactor1, (radius+hthick+boxgap+boxthick+EVoffset)*cosFactor1);
831 logicEV1 =
new TGeoPgon(
"logicEV1", 90.+(
phi0-dphi/2.), 180.-2.*(
phi0-dphi/2.), bbnum/2, 3);
832 logicEV1->DefineSection(0, 0., radiusMiddleSmall+sob_len*tan(btilt), radiusMiddleSmall+sob_len*tan(btilt)+fixvisual);
833 logicEV1->DefineSection(1, zEV, radiusMiddleSmall+(sob_len-zEV)*tan(btilt), radiusMiddleSmall+hEV+sob_len*tan(btilt));
834 logicEV1->DefineSection(2, sob_len, radiusMiddleSmall, (radius+hthick+boxgap+boxthick+EVoffset));
835 logicEV2 =
new TGeoPgon(
"logicEV2", -90.+(
phi0-dphi/2.), 180.-2.*(
phi0-dphi/2.), bbnum/2, 3);
836 logicEV2->DefineSection(0, 0., radiusMiddleSmall+sob_len*tan(btilt), radiusMiddleSmall+sob_len*tan(btilt)+fixvisual);
837 logicEV2->DefineSection(1, zEV, radiusMiddleSmall+(sob_len-zEV)*tan(btilt), radiusMiddleSmall+hEV+sob_len*tan(btilt));
838 logicEV2->DefineSection(2, sob_len, radiusMiddleSmall, (radius+hthick+boxgap+boxthick+EVoffset));
839 logicEV3 =
new TGeoPgon(
"logicEV3", 90.-(
phi0-dphi/2.),2.*(
phi0-dphi/2.), 1, 3);
840 logicEV3->DefineSection(0, 0., (radiusMiddleSmall+sob_len*tan(btilt))*cosFactor1, (radiusMiddleSmall+sob_len*tan(btilt)+fixvisual)*cosFactor1);
841 logicEV3->DefineSection(1, zEV, (radiusMiddleSmall+(sob_len-zEV)*tan(btilt))*cosFactor1, (radiusMiddleSmall+hEV+sob_len*tan(btilt))*cosFactor1);
842 logicEV3->DefineSection(2, sob_len, (radiusMiddleSmall)*cosFactor1, (radius+hthick+boxgap+boxthick+EVoffset)*cosFactor1);
843 logicEV4 =
new TGeoPgon(
"logicEV4", -90.-(
phi0-dphi/2.), 2.*(
phi0-dphi/2.), 1, 3);
844 logicEV4->DefineSection(0, 0., (radiusMiddleSmall+sob_len*tan(btilt))*cosFactor1, (radiusMiddleSmall+sob_len*tan(btilt)+fixvisual)*cosFactor1);
845 logicEV4->DefineSection(1, zEV, (radiusMiddleSmall+(sob_len-zEV)*tan(btilt))*cosFactor1, (radiusMiddleSmall+sob_len*tan(btilt)+hEV)*cosFactor1);
846 logicEV4->DefineSection(2, sob_len, (radiusMiddleSmall)*cosFactor1, (radius+hthick+boxgap+boxthick+EVoffset)*cosFactor1);
849 TGeoCompositeShape *logicEV =
new TGeoCompositeShape(
"logicEV",
"logicEV1 + logicEV3 + logicEV2 + logicEV4 ");
850 TGeoVolume* baseEV =
new TGeoVolume(
"DrcEVSensor", logicEV,
gGeoManager->GetMedium(
"Marcol82_7"));
852 TGeoPgon *logicPDbase1, *logicPDbase2, *logicPDbase3, *logicPDbase4;
854 if(sob_angleB == 90.){
855 logicPDbase1 =
new TGeoPgon(
"logicPDbase1", 90.+(
phi0-dphi/2.), 180.-2.*(
phi0-dphi/2.), bbnum/2, 2);
856 logicPDbase2 =
new TGeoPgon(
"logicPDbase2", -90.+(
phi0-dphi/2.), 180.-2.*(
phi0-dphi/2.), bbnum/2, 2);
857 logicPDbase3 =
new TGeoPgon(
"logicPDbase3", 90.-(
phi0-dphi/2.), 2.*(
phi0-dphi/2.) , 1, 2);
858 logicPDbase4 =
new TGeoPgon(
"logicPDbase4", -90.-(
phi0-dphi/2.), 2.*(
phi0-dphi/2.) , 1, 2);
859 logicPDbase1->DefineSection(0, 0., radiusMiddleSmall+sob_len*tan(btilt)-hgap, sob_Rout+sob_len*tan(btilt)+hgap);
860 logicPDbase1->DefineSection(1, PDbaseLayer, radiusMiddleSmall+sob_len*tan(btilt)-hgap, sob_Rout+sob_len*tan(btilt)+hgap);
861 logicPDbase2->DefineSection(0, 0., radiusMiddleSmall+sob_len*tan(btilt)-hgap, sob_Rout+sob_len*tan(btilt)+hgap);
862 logicPDbase2->DefineSection(1, PDbaseLayer, radiusMiddleSmall+sob_len*tan(btilt)-hgap, sob_Rout+sob_len*tan(btilt)+hgap);
863 logicPDbase3->DefineSection(0, 0., (radiusMiddleSmall+sob_len*tan(btilt))*cosFactor1-hgap, (sob_Rout+hgap+sob_len*tan(btilt))*cosFactor1);
864 logicPDbase3->DefineSection(1, PDbaseLayer, (radiusMiddleSmall+sob_len*tan(btilt))*cosFactor1-hgap, (sob_Rout+hgap+sob_len*tan(btilt))*cosFactor1);
865 logicPDbase4->DefineSection(0, 0., (radiusMiddleSmall+sob_len*tan(btilt))*cosFactor1-hgap, (sob_Rout+hgap+sob_len*tan(btilt))*cosFactor1);
866 logicPDbase4->DefineSection(1, PDbaseLayer, (radiusMiddleSmall+sob_len*tan(btilt))*cosFactor1-hgap, (sob_Rout+hgap+sob_len*tan(btilt))*cosFactor1);
868 logicPDbase1 =
new TGeoPgon(
"logicPDbase1", 90.+(
phi0-dphi/2.), 180.-2.*(
phi0-dphi/2.), bbnum/2, 4);
869 logicPDbase2 =
new TGeoPgon(
"logicPDbase2", -90.+(
phi0-dphi/2.), 180.-2.*(
phi0-dphi/2.), bbnum/2, 4);
870 logicPDbase3 =
new TGeoPgon(
"logicPDbase3", 90.-(
phi0-dphi/2.), 2.*(
phi0-dphi/2.) , 1, 4);
871 logicPDbase4 =
new TGeoPgon(
"logicPDbase4", -90.-(
phi0-dphi/2.), 2.*(
phi0-dphi/2.) , 1, 4);
872 double cba =
cos(sob_angleB*
pi/180.);
873 double sba =
sin(sob_angleB*
pi/180.);
874 double addt = radiusMiddleSmall+sob_len*tan(btilt);
875 logicPDbase1->DefineSection(0, PDbaseLayer-PDbaseLayer*sba -hgap/tan(sob_angleB*
pi/180.),
876 addt-hgap+PDbaseLayer*cba,
877 addt-hgap+PDbaseLayer*cba+fixvisual);
878 logicPDbase1->DefineSection(1, PDbaseLayer-hgap/tan(sob_angleB*
pi/180.),
880 addt-hgap+PDbaseLayer/cba);
882 logicPDbase1->DefineSection(2, PDbaseLayer-PDbaseLayer*sba -hgap/tan(sob_angleB*
pi/180.) + zEV,
883 addt + hEV-hgap + PDbaseLayer*cba - PDbaseLayer/cba,
884 addt + hEV+hgap + PDbaseLayer*cba );
885 logicPDbase1->DefineSection(3, PDbaseLayer+hgap/tan(sob_angleB*
pi/180.) + zEV , addt+ hEV+hgap, addt+ hEV+hgap+fixvisual);
888 logicPDbase2->DefineSection(0, PDbaseLayer-PDbaseLayer*sba -hgap/tan(sob_angleB*
pi/180.),
889 addt-hgap+PDbaseLayer*cba,
890 addt-hgap+PDbaseLayer*cba+fixvisual);
891 logicPDbase2->DefineSection(1, PDbaseLayer-hgap/tan(sob_angleB*
pi/180.),
893 addt-hgap+PDbaseLayer/cba);
895 logicPDbase2->DefineSection(2, PDbaseLayer-PDbaseLayer*sba -hgap/tan(sob_angleB*
pi/180.) + zEV,
896 addt + hEV-hgap + PDbaseLayer*cba - PDbaseLayer/cba,
897 addt + hEV+hgap + PDbaseLayer*cba );
898 logicPDbase2->DefineSection(3, PDbaseLayer+hgap/tan(sob_angleB*
pi/180.) + zEV , addt+ hEV+hgap, addt+ hEV+hgap+fixvisual);
901 logicPDbase3->DefineSection(0, PDbaseLayer-PDbaseLayer*sba -hgap/tan(sob_angleB*
pi/180.),
902 (addt-hgap+PDbaseLayer*cba)*cosFactor1,
903 (addt-hgap+PDbaseLayer*cba)*cosFactor1+fixvisual);
904 logicPDbase3->DefineSection(1, PDbaseLayer-hgap/tan(sob_angleB*
pi/180.),
905 (addt-hgap)*cosFactor1,
906 (addt-hgap+PDbaseLayer/cba)*cosFactor1);
908 logicPDbase3->DefineSection(2, PDbaseLayer-PDbaseLayer*sba -hgap/tan(sob_angleB*
pi/180.) + zEV,
909 (addt + hEV-hgap + PDbaseLayer*cba - PDbaseLayer/cba)*cosFactor1,
910 (addt + hEV+hgap + PDbaseLayer*cba)*cosFactor1);
911 logicPDbase3->DefineSection(3, PDbaseLayer+hgap/tan(sob_angleB*
pi/180.) + zEV ,
912 (addt+ hEV+hgap)*cosFactor1,
913 (addt+ hEV+hgap)*cosFactor1+fixvisual);
915 logicPDbase4->DefineSection(0, PDbaseLayer-PDbaseLayer*sba -hgap/tan(sob_angleB*
pi/180.),
916 (addt-hgap+PDbaseLayer*cba)*cosFactor1,
917 (addt-hgap+PDbaseLayer*cba)*cosFactor1+fixvisual);
918 logicPDbase4->DefineSection(1, PDbaseLayer-hgap/tan(sob_angleB*
pi/180.),
919 (addt-hgap)*cosFactor1,
920 (addt-hgap+PDbaseLayer/cba)*cosFactor1);
922 logicPDbase4->DefineSection(2, PDbaseLayer-PDbaseLayer*sba -hgap/tan(sob_angleB*
pi/180.) + zEV,
923 (addt + hEV-hgap + PDbaseLayer*cba - PDbaseLayer/cba)*cosFactor1,
924 (addt + hEV+hgap + PDbaseLayer*cba)*cosFactor1);
925 logicPDbase4->DefineSection(3, PDbaseLayer+hgap/tan(sob_angleB*
pi/180.) + zEV ,
926 (addt+ hEV+hgap)*cosFactor1,
927 (addt+ hEV+hgap)*cosFactor1+fixvisual);
931 TGeoCompositeShape *logicPDbase =
new TGeoCompositeShape(
"logicPDbase",
"logicPDbase1 + logicPDbase2 + logicPDbase3 + logicPDbase4");
932 pdbase =
new TGeoVolume(
"DrcPDbase", logicPDbase,
gGeoManager->GetMedium(
"DIRCcarbonFiber"));
933 pdbase->SetLineColor(kGreen-6);
935 vLocalMother->AddNode(pdbase, 1,
new TGeoCombiTrans(0., 0., sob_shift-2*sum-PDbaseLayer,
new TGeoRotation(0)));
938 vLocalMother->AddNode(baseEV, 1,
new TGeoCombiTrans(0.,0.,sob_shift - 2*sum,
new TGeoRotation(0)));
945 Double_t pdthickness = (PDsensitiveThick+PhCathodeThick+PDwindowThick+PDgreaseLayer)/2.;
946 for(Int_t
m = 0;
m < bbnum;
m ++){
947 phi_curr1 = (90. -
phi0 - dphi*
m)/180.*
pi;
948 if(
m > bbnum/2-1){ phi_curr1 = (90. -
phi0 - dphi*
m - 2.*pipehAngle)/180.*
pi; }
949 if(sob_angleB != 90.){
950 stepz = MCPactiveArea*
cos(sob_angleB*
pi/180.)/2. - pdthickness*
sin(sob_angleB*
pi/180.);
951 steprad = -MCPactiveArea*(1-
sin(sob_angleB*
pi/180.))/2. + pdthickness*
cos(sob_angleB*
pi/180.);
953 stepz = -pdthickness;
955 TGeoRotation rot_sector;
956 rot_sector.RotateX(90-sob_angleB);
957 rot_sector.RotateZ( -
phi0 -
m*dphi - (TMath::Floor(2.*
m/bbnum))*(2.*pipehAngle));
959 for(Int_t nrow=0; nrow < Int_t((sob_Rout+2*hgap-radiusMiddleSmall)/step); nrow++){
960 sectorWidth = 2.* (radiusMiddleSmall + step*nrow) * tan(dphi_rad/2.);
961 nmcp = Int_t(sectorWidth/step);
962 xpos = (radiusMiddleSmall + 0.5*MCPactiveArea + step*(nrow))+sob_len*tan(btilt)+PixelSize/2.;
963 for(Int_t ny=0; ny<nmcp; ny++){
964 ypos = ((-Int_t(nmcp/2.) - 0.5*(nmcp%2))*step + (0.5+ny)*step);
966 location.SetXYZ(xpos+steprad + pow(-1,ny+1)*PixelSize/2.,ypos,stepz);
969 if(
fabs(ny - nmcp/2. +0.5) < 1){
970 location.SetXYZ(xpos+steprad + PixelSize/2.,ypos,stepz);
972 if(
fabs(ny - nmcp/2. +0.5) > 1){
973 location.SetXYZ(xpos+steprad - PixelSize/2.,ypos,stepz);
976 location.RotateZ(phi_curr1);
977 pdbase->AddNode(oneMCP, totalnumbering,
new TGeoCombiTrans(location.X(), location.Y(), PDbaseLayer + location.Z(),
new TGeoRotation(rot_sector)));
978 totalnumbering = totalnumbering + 1;
980 if(sob_angleB != 90.){
981 stepz += mcptot*
cos(sob_angleB*
pi/180.);
982 steprad += -mcptot*(1-
sin(sob_angleB*
pi/180.));
987 if(sob_angleB != 90.){
988 stepz = MCPactiveArea*
cos(sob_angleB*
pi/180.)/2. - pdthickness*
sin(sob_angleB*
pi/180.);
989 steprad = -MCPactiveArea*(1-
sin(sob_angleB*
pi/180.))/2. + pdthickness*
cos(sob_angleB*
pi/180.);
991 for(Int_t nrow=0; nrow < Int_t((sob_Rout+2*hgap-radiusMiddleSmall)/step); nrow++){
992 for(Int_t nadd = 0; nadd<2; nadd++){
993 TGeoRotation rot_sector;
994 if(nadd==1) rot_sector.RotateX(270+sob_angleB);
995 else rot_sector.RotateX(90-sob_angleB);
996 xpos = ((radiusMiddleSmall+sob_len*tan(btilt))*cosFactor1 + 0.5*MCPactiveArea + step*(nrow));
997 location.SetXYZ(xpos+steprad,0.,stepz);
998 location.RotateZ(
pi/2.+
pi*nadd);
999 if(sob_angleB == 90.) pdbase->AddNode(oneMCP, totalnumbering,
new TGeoCombiTrans(location.X(), location.Y(), PDbaseLayer + location.Z(),
new TGeoRotation(rot_sector)));
1000 totalnumbering = totalnumbering + 1;
1002 if(sob_angleB != 90.){
1003 stepz += mcptot*
cos(sob_angleB*
pi/180.);
1004 steprad += -mcptot*(1-
sin(sob_angleB*
pi/180.));
1014 logicEV1 =
new TGeoPgon(
"logicEV1", 90 + pipehAngle, 180 - 2.*pipehAngle, bbnum/2, 7);
1015 logicEV2 =
new TGeoPgon(
"logicEV2", -90 + pipehAngle, 180 - 2.*pipehAngle, bbnum/2, 7);
1016 logicEV3 =
new TGeoPgon(
"logicEV3", 90 - pipehAngle-0.02, 2*pipehAngle+0.04, 1, 7);
1017 logicEV4 =
new TGeoPgon(
"logicEV4", -90 - pipehAngle-0.02, 2*pipehAngle+0.04, 1, 7);
1019 for(
int i=0;
i<6;
i++){
1022 if(
i!=0) viscorrection = 0;
1023 logicEV1->DefineSection(
i, currz ,radiusMiddleSmall, minrad+viscorrection);
1024 logicEV2->DefineSection(
i, currz ,radiusMiddleSmall, minrad+viscorrection);
1025 logicEV3->DefineSection(
i, currz ,radiusMiddleSmall*cosFactor1, (minrad+viscorrection)*cosFactor1);
1026 logicEV4->DefineSection(
i, currz ,radiusMiddleSmall*cosFactor1, (minrad+viscorrection)*cosFactor1);
1029 if(
i==4) maxrz = currz;
1032 logicEV1->DefineSection(6, sob_len, radiusMiddleSmall, (radius+hthick+boxgap+boxthick+EVoffset));
1033 logicEV2->DefineSection(6, sob_len, radiusMiddleSmall, (radius+hthick+boxgap+boxthick+EVoffset));
1034 logicEV3->DefineSection(6, sob_len, radiusMiddleSmall*cosFactor1, (radius+hthick+boxgap+boxthick+EVoffset)*cosFactor1);
1035 logicEV4->DefineSection(6, sob_len, radiusMiddleSmall*cosFactor1, (radius+hthick+boxgap+boxthick+EVoffset)*cosFactor1);
1039 minrad = radiusMiddleSmall;
1042 logicEV1s =
new TGeoPgon(
"logicEV1s", 90 + pipehAngle, 180 - 2.*pipehAngle, bbnum/2, 7);
1043 logicEV2s =
new TGeoPgon(
"logicEV2s", -90 + pipehAngle, 180 - 2.*pipehAngle, bbnum/2, 7);
1044 logicEV3s =
new TGeoPgon(
"logicEV3s", 90 - pipehAngle-0.02, 2*pipehAngle+0.04, 1, 7);
1045 logicEV4s =
new TGeoPgon(
"logicEV4s", -90 - pipehAngle-0.02, 2*pipehAngle+0.04, 1, 7);
1047 Double_t airgap = 0.05, airdz=airgap/tan(
pi/2.-alpharad);
1048 for(
int i=0;
i<6;
i++){
1051 if(
i!=0) {viscorrection = 0; airgap = 0; airdz=0;}
1052 logicEV1s->DefineSection(
i, currz-airdz ,radiusMiddleSmall-airgap, minrad+viscorrection-airgap);
1053 logicEV2s->DefineSection(
i, currz-airdz ,radiusMiddleSmall-airgap, minrad+viscorrection-airgap);
1054 logicEV3s->DefineSection(
i, currz-airdz ,(radiusMiddleSmall-airgap)*cosFactor1, (minrad+viscorrection-airgap)*cosFactor1);
1055 logicEV4s->DefineSection(
i, currz-airdz ,(radiusMiddleSmall-airgap)*cosFactor1, (minrad+viscorrection-airgap)*cosFactor1);
1058 if(
i==4) maxrz = currz;
1062 logicEV1s->DefineSection(6, sob_len, radiusMiddleSmall-airgap, (radius+hthick+boxgap+boxthick+EVoffset+airgap));
1063 logicEV2s->DefineSection(6, sob_len, radiusMiddleSmall-airgap, (radius+hthick+boxgap+boxthick+EVoffset+airgap));
1064 logicEV3s->DefineSection(6, sob_len, (radiusMiddleSmall-airgap)*cosFactor1, (radius+hthick+boxgap+boxthick+EVoffset+airgap)*cosFactor1);
1065 logicEV4s->DefineSection(6, sob_len, (radiusMiddleSmall-airgap)*cosFactor1, (radius+hthick+boxgap+boxthick+EVoffset+airgap)*cosFactor1);
1068 minrad = radiusMiddleSmall;
1069 mcptot = MCPsize + MCPgap;
1070 alpharad = TMath::ATan(mcptot/sob_len);
1073 logicEV1b =
new TGeoPgon(
"logicEV1b", 90 + pipehAngle, 180 - 2.*pipehAngle, bbnum/2, 8);
1074 logicEV2b =
new TGeoPgon(
"logicEV2b", -90 + pipehAngle, 180 - 2.*pipehAngle, bbnum/2, 8);
1075 logicEV3b =
new TGeoPgon(
"logicEV3b", 90 - pipehAngle-0.02, 2*pipehAngle+0.04, 1, 8);
1076 logicEV4b =
new TGeoPgon(
"logicEV4b", -90 - pipehAngle-0.02, 2*pipehAngle+0.04, 1, 8);
1081 for(
int i=0;
i<6;
i++){
1085 logicEV1b->DefineSection(
i, currz-mcpcoverthick ,radiusMiddleSmall-coverthick, minrad+mcpcoverthick);
1086 logicEV2b->DefineSection(
i, currz-mcpcoverthick ,radiusMiddleSmall-coverthick, minrad+mcpcoverthick);
1087 logicEV3b->DefineSection(
i, currz-mcpcoverthick ,(radiusMiddleSmall-coverthick)*cosFactor1, (minrad+mcpcoverthick)*cosFactor1);
1088 logicEV4b->DefineSection(
i, currz-mcpcoverthick ,(radiusMiddleSmall-coverthick)*cosFactor1, (minrad+mcpcoverthick)*cosFactor1);
1090 tga = (sob_len - currz)/(minrad - (radius+hthick+boxgap+boxthick+EVoffset));
1091 double tshift = mcpcoverthick*tga - coverthick;
1092 logicEV1b->DefineSection(6, currz-tshift ,radiusMiddleSmall-coverthick, minrad+mcpcoverthick);
1093 logicEV2b->DefineSection(6, currz-tshift ,radiusMiddleSmall-coverthick, minrad+mcpcoverthick);
1094 logicEV3b->DefineSection(6, currz-tshift ,(radiusMiddleSmall-coverthick)*cosFactor1, (minrad+mcpcoverthick)*cosFactor1);
1095 logicEV4b->DefineSection(6, currz-tshift ,(radiusMiddleSmall-coverthick)*cosFactor1, (minrad+mcpcoverthick)*cosFactor1);
1099 if(
i==4) maxrz = currz;
1103 logicEV1b->DefineSection(7, sob_len-0.01, radiusMiddleSmall-coverthick, (radius+hthick+boxgap+boxthick+EVoffset)+coverthick/tga);
1104 logicEV2b->DefineSection(7, sob_len-0.01, radiusMiddleSmall-coverthick, (radius+hthick+boxgap+boxthick+EVoffset)+coverthick/tga);
1105 logicEV3b->DefineSection(7, sob_len-0.01, (radiusMiddleSmall-coverthick)*cosFactor1, ((radius+hthick+boxgap+boxthick+EVoffset)+coverthick/tga)*cosFactor1);
1106 logicEV4b->DefineSection(7, sob_len-0.01, (radiusMiddleSmall-coverthick)*cosFactor1, ((radius+hthick+boxgap+boxthick+EVoffset)+coverthick/tga)*cosFactor1);
1108 TGeoCompositeShape *logicEV =
new TGeoCompositeShape(
"logicEV",
"logicEV1 + logicEV3 + logicEV2 + logicEV4");
1109 TGeoVolume* baseEV =
new TGeoVolume(
"DrcEVSensor", logicEV,
gGeoManager->GetMedium(
"Marcol82_7"));
1111 TGeoCompositeShape *logicEVs =
new TGeoCompositeShape(
"logicEVs",
"logicEV1s + logicEV3s + logicEV2s + logicEV4s");
1112 TGeoCompositeShape *logicEVb =
new TGeoCompositeShape(
"logicEVb",
"logicEV1b + logicEV3b + logicEV2b + logicEV4b");
1114 TGeoCompositeShape *logicEVcover =
new TGeoCompositeShape(
"logicEVcover",
"logicEVb - logicEVs");
1115 pdbase =
new TGeoVolume(
"DrcPDbase", logicEVcover,
gGeoManager->GetMedium(
"DIRCcarbonFiber"));
1116 pdbase->SetLineColor(kTeal-8);
1117 vLocalMother->AddNode(pdbase, 1,
new TGeoCombiTrans(0., 0., sob_shift-2*sum,
new TGeoRotation(0)));
1120 vLocalMother->AddNode(baseEV, 1,
new TGeoCombiTrans(0.,0.,sob_shift - 2*sum,
new TGeoRotation(0)));
1127 for(Int_t
m = 0;
m < bbnum;
m ++){
1128 phi_curr1 = (90. -
phi0 - dphi*
m)/180.*
pi;
1129 if(
m > bbnum/2-1){ phi_curr1 = (90. -
phi0 - dphi*
m - 2.*pipehAngle)/180.*
pi; }
1132 steprad = mcptot*(1-
TMath::Cos(alpharad))/2.;
1135 for(Int_t nrow=0; nrow < Int_t((sob_Rout+2*hgap-radiusMiddleSmall)/step); nrow++){
1137 TGeoRotation rot_sector;
1138 rot_sector.RotateX((nrow+1)*alpharad*180./
pi);
1139 rot_sector.RotateZ( -
phi0 -
m*dphi - (TMath::Floor(2.*
m/bbnum))*(2.*pipehAngle));
1141 sectorWidth = 2.* (radiusMiddleSmall + step*nrow) * tan(dphi_rad/2.);
1142 nmcp = Int_t(sectorWidth/step);
1143 xpos = (radiusMiddleSmall + 0.5*mcptot + step*(nrow));
1144 for(Int_t ny=0; ny<nmcp; ny++){
1145 ypos = ((-Int_t(nmcp/2.) - 0.5*(nmcp%2))*step + (0.5+ny)*step);
1146 location.SetXYZ(xpos-steprad + (logicMCP->GetDZ())*(
TMath::Cos(
pi/2. - (nrow+1)*alpharad)) ,ypos,0.);
1147 location.RotateZ(phi_curr1);
1149 pdbase->AddNode(oneMCP, totalnumbering,
new TGeoCombiTrans(location.X(), location.Y(),stepz - (logicMCP->GetDZ())*(
TMath::Sin(
pi/2. - (nrow+1)*alpharad))
1150 ,
new TGeoRotation(rot_sector)));
1151 totalnumbering = totalnumbering + 1;
1155 steprad += mcptot*(1-
TMath::Cos((nrow+1)*alpharad))/2. + mcptot*(1-
TMath::Cos((nrow+2)*alpharad))/2.;
1166 double sp = 2*(barBoxHeight+EVdrop/2.+EVoffset/2.);
1167 double evh = 5*step - 2*hgap;
1168 double evb = evh*
sin(sob_angleB*
pi/180.);
1169 double dz1 = (sob_len - evh*
cos(sob_angleB*
pi/180.))/2.;
1170 double dz2 = evh*
cos(sob_angleB*
pi/180.)/2.;
1171 double evwidth = 3*step/2. - hgap;
1173 TGeoTrap *Trd0 =
new TGeoTrap(
"Trd0",sob_len/2., atan((evh-sp)/(2.*sob_len))*180./
pi, 270, evh/2., evwidth, evwidth, 0, sp/2., evwidth, evwidth, 0);
1174 TGeoTrap *Trd1 =
new TGeoTrap(
"Trd1",dz1, atan((evb-sp)/(4.*dz1))*180./
pi, 270., evb/2., evwidth, evwidth, 0, sp/2., evwidth, evwidth, 0);
1175 TGeoTrap *Trd2 =
new TGeoTrap(
"Trd2",dz2, -atan((evb)/(4.*dz2))*180./
pi, 270., 0.000001, evwidth, evwidth, 0, evb/2., evwidth, evwidth, 0);
1177 evLocShift = (Trd1->GetH1()+Trd1->GetH2())/2. - barBoxHeight;
1178 TGeoTranslation * evtr1 =
new TGeoTranslation(
"evtr1",0,0,dz2);
1179 evtr1->RegisterYourself();
1180 TGeoTranslation * evtr2 =
new TGeoTranslation(
"evtr2",0,-sp/4.,-dz1);
1181 evtr2->RegisterYourself();
1182 TGeoCompositeShape *Trd =
new TGeoCompositeShape(
"logicEVcover",
"Trd1:evtr1 + Trd2:evtr2");
1184 if(sob_angleB==90) baseEV =
new TGeoVolume(
"DrcEVSensor",Trd0,
gGeoManager->GetMedium(
"FusedSil"));
1185 else baseEV =
new TGeoVolume(
"DrcEVSensor",Trd,
gGeoManager->GetMedium(
"FusedSil"));
1187 baseEV->SetLineColor(kCyan-9);
1188 baseEV->SetTransparency(0);
1191 TGeoBBox* logicPDbase =
new TGeoBBox(
"logicPDbase", 3*step/2., 5*step/2., PDbaseLayer/2.);
1192 Double_t pdLocShift = logicPDbase->GetDY() - barBoxHeight - hgap;
1193 pdbase =
new TGeoVolume(
"DrcPDbase", logicPDbase,
gGeoManager->GetMedium(
"DIRCcarbonFiber"));
1194 pdbase->SetLineColor(kGreen-6);
1195 pdbase->SetTransparency(40);
1199 for(Int_t
i=0;
i<5;
i++){
1200 for(Int_t j=0; j<3; j++){
1201 xcurr = -0.5*(3.*step) + 0.5*step+j*step;
1202 ycurr = -(2.*hthick+EVdrop+EVoffset+sob_len*tan(sob_angle*
pi/180.))/2. + 0.5*step+
i*step + hgap;
1204 pdbase->AddNode(oneMCP, totalnumbering,
new TGeoCombiTrans(xcurr, ycurr, PDbaseLayer/2.-(PDsensitiveThick+PhCathodeThick+PDwindowThick+PDgreaseLayer)/2.,
new TGeoRotation(0)));
1205 totalnumbering = totalnumbering + 1;
1208 Double_t evcorr90 = -logicPDbase->GetDZ();
1209 if(sob_angleB!=90) {
1210 pdLocShift += - (logicPDbase->GetDY()- hgap)*(1-
cos((90-sob_angleB)*
pi/180.))+logicPDbase->GetDZ()*
cos(sob_angleB*
pi/180.);
1211 evcorr90 = (logicPDbase->GetDY() - hgap)*
sin((90-sob_angleB)*
pi/180.) -logicPDbase->GetDZ()*
sin(sob_angleB*
pi/180.);
1213 for(Int_t
m = 0;
m < bbnum;
m ++){
1214 phi_curr = (90. -
phi0 - dphi*
m)/180.*
pi;
1215 if(
m > bbnum/2-1){ phi_curr = (90. -
phi0 - dphi*
m - 2.*pipehAngle)/180.*
pi; }
1216 dx = (radius-EVdrop) *
cos(phi_curr);
1217 dy = (radius-EVdrop) *
sin(phi_curr);
1219 TGeoRotation rotbbox,rotpbox;
1220 rotbbox.RotateZ( -
phi0 -
m*dphi - (TMath::Floor(2.*
m/bbnum))*(2.*pipehAngle));
1221 rotpbox.RotateX(90-sob_angleB);
1222 rotpbox.RotateZ( -
phi0 -
m*dphi - (TMath::Floor(2.*
m/bbnum))*(2.*pipehAngle));
1224 vLocalMother->AddNode(baseEV,
m+1,
new TGeoCombiTrans(dx + evLocShift*
cos(phi_curr), dy + evLocShift*
sin(phi_curr), bbox_zup - 2*entransewidth - sob_len/2. ,
new TGeoRotation(rotbbox)));
1225 vLocalMother->AddNode(pdbase,
m+1,
new TGeoCombiTrans(dx + pdLocShift*
cos(phi_curr), dy + pdLocShift*
sin(phi_curr), sob_shift-2*sum+evcorr90,
new TGeoRotation(rotpbox)));
1233 baseEV->SetLineColor(kMagenta+2);
1234 baseEV->SetTransparency(50);
1237 pdbase->SetTransparency(50);
1243 TGeoBBox* lTop =
new TGeoBBox(500,500,300);
1244 top =
new TGeoVolume(
"DIRC", lTop,
gGeoManager->GetMedium(
"air"));
1246 TGeoBBox* l1 =
new TGeoBBox(400,400,200);
1247 v1 =
new TGeoVolume(
"v1", l1,
gGeoManager->GetMedium(
"air"));
1248 TGeoSphere* l2 =
new TGeoSphere(
"l2",0 ,30, 0. ,180.,0.,360.);
1249 v2 =
new TGeoVolume(
"v2", l2,
gGeoManager->GetMedium(
"FusedSil"));
1250 v2->AddNode(Lens1, 0,
new TGeoCombiTrans(0, 0, len2,
new TGeoRotation(0)));
1251 v2->AddNode(Lens2, 0,
new TGeoCombiTrans(0, 0, len2,
new TGeoRotation(0)));
1252 v2->AddNode(Lens3, 0,
new TGeoCombiTrans(0, 0, -len1,
new TGeoRotation(0)));
1253 v2->AddNode(Lens4, 0,
new TGeoCombiTrans(0, 0, -len1,
new TGeoRotation(0)));
1254 v1->AddNode(
v2, 0,0);
1255 top->AddNode(
v1, 0,0);
1260 top->CheckOverlaps(0.0001,
"");
1268 if(!gROOT->IsBatch()) top->Draw(
"ogl");
1270 TObjArray *listOfOverlaps =
gGeoManager->GetListOfOverlaps();
1271 cout<<listOfOverlaps->GetEntries()<<endl;
1272 listOfOverlaps->Print();
friend F32vec4 cos(const F32vec4 &a)
friend F32vec4 sin(const F32vec4 &a)
TGeoManager * gGeoManager
FairGeoBuilder * geobuild
double eps(TVector3 v1, TVector3 v2)
friend F32vec4 fabs(const F32vec4 &a)
int createdircPix(Int_t fGeomType=1, Int_t fFocusingSystem=6, Int_t iter=0, TString geomPath=".", Double_t par1=-100, Double_t par2=-100, Double_t par3=-100, Double_t par4=-100, Double_t par5=-100, Double_t par6=-100, Double_t par7=-100, Double_t par8=-100)
FairGeoInterface * geoFace