7 const Int_t kNumTraps= 8;
10 const Double_t kTrapHigh = kTrapOuterDist - kTrapInnerDist;
13 const Double_t kShortSide = kTrapInnerDist * tan(kTrapHalfAngle);
14 const Double_t kLongSide = kTrapOuterDist * tan(kTrapHalfAngle);
17 kPlaneZPosition[0] = 0.0;
18 kPlaneZPosition[1] = 10.0;
19 kPlaneZPosition[2] = 20.0;
20 kPlaneZPosition[3] = 30.0;
35 gROOT->Macro(
"$VMCWORKDIR/gconfig/rootlogon.C");
38 gSystem->Load(
"libGeoBase");
39 gSystem->Load(
"libParBase");
40 gSystem->Load(
"libBase");
41 gSystem->Load(
"libPndData");
42 gSystem->Load(
"libPassive");
45 TFile*
fi =
new TFile(outfile,
"RECREATE");
47 FairGeoLoader*
geoLoad =
new FairGeoLoader(
"TGeo",
"FairGeoLoader");
48 FairGeoInterface *
geoFace = geoLoad->getGeoInterface();
49 geoFace->setMediaFile(
"../../geometry/media_pnd.geo");
53 FairGeoMedia *
Media = geoFace->getMedia();
54 FairGeoBuilder *
geobuild=geoLoad->getGeoBuilder();
56 FairGeoMedium *FairMediumSilicon = Media->getMedium(
"silicon");
58 Int_t
nmed=geobuild->createMedium(FairMediumSilicon);
60 TGeoManager*
gGeoMan = (TGeoManager*)gROOT->FindObject(
"FAIRGeom");
62 TGeoVolume *
top =
new TGeoVolumeAssembly(
"Gem");
64 gGeoMan->SetTopVolume(top);
67 TGeoShape *Trap1Shape =
68 new TGeoTrap(
"trap1shape",kHalfFoilThickness, 0, -90, kTrapHigh/2.,kShortSide,kLongSide,0,
69 kTrapHigh/2.,kShortSide,kLongSide,0);
77 for(Int_t j=0; j<4; ++j){
78 std::stringstream plane;
80 for(Int_t
i=0;
i<8; ++
i){
81 std::stringstream
num;
83 TString name = (
"LumActiveTrap"+plane.str()+
"_"+num.str());
84 TString rotname = (
"rot"+plane.str()+
"_"+num.str());
86 TGeoVolume* tmpvol =
new TGeoVolume(name,Trap1Shape,gGeoMan->GetMedium(
"silicon"));
90 if(j==1) {dreh += 22.5; angle-=
TMath::Pi()/8.;}
91 if(j==3) {dreh += 22.5; angle-=
TMath::Pi()/8.;}
93 TGeoRotation*
rot =
new TGeoRotation(rotname,dreh,0,0);
94 TGeoTranslation* trt =
new TGeoTranslation(
sin(angle)*move,
cos(angle)*move, 1100+kPlaneZPosition[j]-kRotUmZ);
95 TGeoCombiTrans* trctmp =
new TGeoCombiTrans(*trt,*rot);
96 trctmp->SetName(name);
97 trctmp->RegisterYourself();
101 delete rot;
delete trt;
105 TGeoVolumeAssembly*
SubunitVol =
new TGeoVolumeAssembly(
"Lumi_Strip_Disks");
106 for(Int_t
i=0;
i<(8*4);
i++)
107 SubunitVol->AddNode((TGeoVolume*)vol.At(
i),0,(TGeoCombiTrans*)trc.At(
i));
108 TGeoRotation* rotf =
new TGeoRotation(
"final",90,kRot,0);
109 TGeoTranslation* trtf =
new TGeoTranslation(0, 0, kRotUmZ);
110 TGeoCombiTrans *trcf =
new TGeoCombiTrans(*trtf,*rotf);
111 top->AddNode(SubunitVol,0,trcf);
113 gGeoMan->CloseGeometry();
friend F32vec4 cos(const F32vec4 &a)
friend F32vec4 sin(const F32vec4 &a)
FairGeoBuilder * geobuild
FairGeoInterface * geoFace
const Double_t kHalfFoilThickness