FairRoot/PandaRoot
create_gem_rootgeo.C
Go to the documentation of this file.
1 {
2  // Gem disk geometry parameters
3  //-----------------------------
4  const Double_t kDisk1InnerRadius = 5.0; // (cm) //from EMC TDR
5  const Double_t kDisk2InnerRadius = 10.0; // (cm) //?
6  const Double_t kDisk3InnerRadius = 10.0; // (cm) //?
7 
8  const Double_t kDisk1OuterRadius = 90.0; // (cm) //from EMC TDR
9  const Double_t kDisk2OuterRadius = 105.0; // (cm) //?
10  const Double_t kDisk3OuterRadius = 150.0; // (cm) //from EMC TDR
11 
12  const Double_t kDisk1ZPosition = 110.0; // (cm) //from EMC TDR
13  const Double_t kDisk2ZPosition = 140.0; // (cm) //from EMC TDR
14  const Double_t kDisk3ZPosition = 190.0; // (cm) //from EMC TDR
15 
16  const Double_t kHalfFoilThickness = 0.1; // Thickness of sensitive foil (cm)
17 
18 
19  //--------------------------------------------------------------------
20  TString outfile= "../../geometry/gem.root";
21  TFile* fi = new TFile(outfile,"RECREATE");
22 
23  FairGeoLoader* geoLoad = new FairGeoLoader("TGeo","FairGeoLoader");
24  FairGeoInterface *geoFace = geoLoad->getGeoInterface();
25  geoFace->setMediaFile("../../geometry/media_pnd.geo");
26  geoFace->readMedia();
27  geoFace->print();
28 
29  FairGeoMedia *Media = geoFace->getMedia();
30  FairGeoBuilder *geobuild=geoLoad->getGeoBuilder();
31 
32  FairGeoMedium *CbmMediumAir = Media->getMedium("air");
33  FairGeoMedium *CbmMediumPWO = Media->getMedium("PWO");
34  FairGeoMedium *CbmMediumCarbon = Media->getMedium("carbon");
35  FairGeoMedium *CbmMediumAluminium = Media->getMedium("aluminium");
36 
37  Int_t nmed=geobuild->createMedium(CbmMediumAir);
38  nmed=geobuild->createMedium(CbmMediumPWO);
39  nmed=geobuild->createMedium(CbmMediumCarbon);
40  nmed=geobuild->createMedium(CbmMediumAluminium);
41 
42  TGeoManager* gGeoMan = (TGeoManager*)gROOT->FindObject("FAIRGeom");
43 
44  TGeoVolume *top = new TGeoVolumeAssembly("Gem");
45 
46  gGeoMan->SetTopVolume(top);
47 
48 
49 TGeoShape *Disk1Shape = new TGeoTube("disk1shape",kDisk1InnerRadius,kDisk1OuterRadius,kHalfFoilThickness);
50 TGeoShape *Disk2Shape = new TGeoTube("disk2shape",kDisk2InnerRadius,kDisk2OuterRadius,kHalfFoilThickness);
51 TGeoShape *Disk3Shape = new TGeoTube("disk3shape",kDisk3InnerRadius,kDisk3OuterRadius,kHalfFoilThickness);
52 
53 TGeoVolume* Disk1Vol = new TGeoVolume("Gem_Disk1_Sensor",Disk1Shape,gGeoMan->GetMedium("air"));
54 TGeoVolume* Disk2Vol = new TGeoVolume("Gem_Disk2_Sensor",Disk2Shape,gGeoMan->GetMedium("air"));
55 TGeoVolume* Disk3Vol = new TGeoVolume("Gem_Disk3_Sensor",Disk3Shape,gGeoMan->GetMedium("air"));
56 
57 TGeoTranslation* trt1 = new TGeoTranslation(0.,0.,kDisk1ZPosition);
58 TGeoTranslation* trt2 = new TGeoTranslation(0.,0.,kDisk2ZPosition);
59 TGeoTranslation* trt3 = new TGeoTranslation(0.,0.,kDisk3ZPosition);
60 
61 TGeoRotation* dummyrot = new TGeoRotation();
62 
63 TGeoCombiTrans* trc1= new TGeoCombiTrans(*trt1,*dummyrot);
64 trc1->SetName("Gem_Disk1_Sensor");
65 trc1->RegisterYourself();
66 
67 TGeoCombiTrans* trc2= new TGeoCombiTrans(*trt2,*dummyrot);
68 trc2->SetName("Gem_Disk2_Sensor");
69 trc2->RegisterYourself();
70 
71 TGeoCombiTrans* trc3= new TGeoCombiTrans(*trt3,*dummyrot);
72 trc3->SetName("Gem_Disk3_Sensor");
73 trc3->RegisterYourself();
74 
75 
76 TGeoVolumeAssembly* SubunitVol = new TGeoVolumeAssembly("Gem_Disks");
77 SubunitVol->AddNode(Disk1Vol,0,trc1);
78 SubunitVol->AddNode(Disk2Vol,0,trc2);
79 SubunitVol->AddNode(Disk3Vol,0,trc3);
80 
81 
82 top->AddNode(SubunitVol,0,new TGeoCombiTrans());
83 
84  gGeoMan->CloseGeometry();
85  top->Write();
86  fi->Close();
87 // gGeoManager->Export(outfile);
88  top->Draw("ogl");
89 }
TGeoRotation * dummyrot
TGeoVolume * Disk1Vol
const Double_t kDisk3OuterRadius
const Double_t kDisk2ZPosition
FairGeoLoader * geoLoad
FairGeoMedia * Media
const Double_t kDisk3ZPosition
TGeoManager * gGeoMan
FairGeoMedium * CbmMediumCarbon
TGeoTranslation * trt2
TGeoVolume * Disk3Vol
const Double_t kDisk2InnerRadius
TGeoTranslation * trt1
TGeoVolume * top
FairGeoMedium * CbmMediumAluminium
TGeoVolume * SubunitVol
const Double_t kDisk2OuterRadius
TGeoShape * Disk1Shape
const Double_t kDisk3InnerRadius
TGeoVolume * Disk2Vol
TGeoTranslation * trt3
FairGeoBuilder * geobuild
TFile * fi
Double_t
TGeoCombiTrans * trc3
FairGeoMedium * CbmMediumAir
TGeoCombiTrans * trc1
const Double_t kDisk1ZPosition
TGeoShape * Disk2Shape
const Double_t kDisk1OuterRadius
FairGeoMedium * CbmMediumPWO
FairGeoInterface * geoFace
const Double_t kHalfFoilThickness
TGeoCombiTrans * trc2
TGeoShape * Disk3Shape
TString outfile