11 gROOT->Macro(
"$VMCWORKDIR/gconfig/rootlogon.C");
14 gSystem->Load(
"libGeoBase");
15 gSystem->Load(
"libParBase");
16 gSystem->Load(
"libBase");
17 gSystem->Load(
"libPndData");
18 gSystem->Load(
"libPassive");
21 TFile*
fi =
new TFile(outfile,
"RECREATE");
23 FairGeoLoader*
geoLoad =
new FairGeoLoader(
"TGeo",
"FairGeoLoader");
24 FairGeoInterface *
geoFace = geoLoad->getGeoInterface();
25 geoFace->setMediaFile(
"../../../geometry/media_pnd.geo");
29 FairGeoMedia *
Media = geoFace->getMedia();
30 FairGeoBuilder *
geobuild=geoLoad->getGeoBuilder();
32 FairGeoMedium *MediumSci = Media->getMedium(
"polyvinyltoluene");
33 FairGeoMedium *MediumSiPm = Media->getMedium(
"silicon");
34 FairGeoMedium *MediumCard = Media->getMedium(
"pcbmvd");
37 Int_t
nmed=geobuild->createMedium(MediumSci);
38 nmed=geobuild->createMedium(MediumSiPm);
39 nmed=geobuild->createMedium(MediumCard);
41 TGeoManager*
gGeoMan = (TGeoManager*)gROOT->FindObject(
"FAIRGeom");
42 TGeoVolume *
top =
new TGeoVolumeAssembly(
"SciT");
45 gGeoMan->SetTopVolume(top);
54 TileShape =
new TGeoBBox(
"SciTil_logicTile", 1.425, 0.25, 1.425);
57 TileVol =
new TGeoVolume(
"SciTil_SENSOR",TileShape, gGeoMan->GetMedium(
"polyvinyltoluene"));
58 TileVol->SetLineColor(kBlue);
60 TGeoBBox* SiPmShape=
new TGeoBBox(
"SiPm_logicSiPm",0.215,0.1925,0.0725);
61 TGeoVolume* SiPmVol=
new TGeoVolume(
"SiPm",SiPmShape, gGeoMan->GetMedium(
"silicon"));
62 SiPmVol->SetLineColor(kRed);
64 TGeoBBox* CardShape=
new TGeoBBox(
"SciTil_logicCard",2.,0.075,2.);
65 TGeoVolume* CardVol=
new TGeoVolume(
"Card",CardShape, gGeoMan->GetMedium(
"pcbmvd"));
66 CardVol->SetLineColor(kGreen);
71 TGeoVolumeAssembly* QuadAssVol =
new TGeoVolumeAssembly(
"SciTil_quad");
74 TGeoRotation* rot_SiPm =
new TGeoRotation;
75 TGeoRotation* rot_SiPm2 =
new TGeoRotation;
76 QuadAssVol->AddNode(TileVol,0,
new TGeoCombiTrans(1.5, 0.,1.5 ,
new TGeoRotation (0)));
77 QuadAssVol->AddNode(SiPmVol,0,
new TGeoCombiTrans(2.2125, 0.,0.0025 ,
new TGeoRotation (0)));
78 rot_SiPm.SetAngles(90.,90.,90.);
79 QuadAssVol->AddNode(SiPmVol,1,
new TGeoCombiTrans(0.0025., 0.,0.7875 , rot_SiPm) );
81 QuadAssVol->AddNode(TileVol,1,
new TGeoCombiTrans(1.5, 0.,-1.5,
new TGeoRotation (0)) );
82 QuadAssVol->AddNode(SiPmVol,2,
new TGeoCombiTrans(0.0025, 0.,-2.2125 , rot_SiPm) );
83 QuadAssVol->AddNode(SiPmVol,3,
new TGeoCombiTrans(0.7875, 0.,-0.0025 ,
new TGeoRotation (0)));
85 QuadAssVol->AddNode(TileVol,2,
new TGeoCombiTrans(-1.5, 0.,-1.5,
new TGeoRotation (0)));
86 QuadAssVol->AddNode(SiPmVol,4,
new TGeoCombiTrans(-2.2125, 0.,-0.0025 ,
new TGeoRotation (0)));
87 QuadAssVol->AddNode(SiPmVol,5,
new TGeoCombiTrans(-0.0025, 0.,-0.7875 , rot_SiPm));
89 QuadAssVol->AddNode(TileVol,3,
new TGeoCombiTrans(-1.5, 0.,1.5 ,
new TGeoRotation (0)) );
90 QuadAssVol->AddNode(SiPmVol,6,
new TGeoCombiTrans(-0.0025, 0.,2.2125 , rot_SiPm));
91 QuadAssVol->AddNode(SiPmVol,7,
new TGeoCombiTrans(-0.7875, 0.,0.0025 ,
new TGeoRotation (0)));
93 QuadAssVol->AddNode(CardVol,1,
new TGeoCombiTrans(0.,0.325,0.,
new TGeoRotation (0)));
98 TGeoVolumeAssembly* SModAssVol =
new TGeoVolumeAssembly(
"SciTil_mod");
103 for(
int j=0;j<30;j++){
104 for(
int l=0;l<3;l++){
108 SModAssVol->AddNode(QuadAssVol,j*3+l,
new TGeoCombiTrans(dx, 0.,dz,
new TGeoRotation (0)));
114 TGeoVolumeAssembly* BarrelAssVol =
new TGeoVolumeAssembly(
"SciTil_barrel");
125 Double_t phi0 = (180.-2.*pipehAngle)/bbnum + pipehAngle;
126 Double_t dphi = (180.-2.*pipehAngle)/bbnum*2.;
129 Double_t dx_bbox, dy_bbox, dz_bbox, phi_curr;
131 for(Int_t
m = 0;
m < bbnum;
m ++){
132 phi_curr = (90. - phi0 - dphi*
m)/180.*pi;
133 if(
m > bbnum/2-1){ phi_curr = (90. - phi0 - dphi*
m - 2.*pipehAngle)/180.*pi; }
134 dx_bbox = radius *
cos(phi_curr);
135 dy_bbox = radius *
sin(phi_curr);
137 TGeoRotation rot_bbox;
138 rot_bbox.RotateZ( -phi0 -
m*dphi - (TMath::Floor(2.*
m/bbnum))*(2.*pipehAngle));
139 BarrelAssVol->AddNode(SModAssVol,
m+1,
new TGeoCombiTrans(dx_bbox, dy_bbox, 0,
new TGeoRotation(rot_bbox)));
143 top->AddNode(BarrelAssVol,0,
new TGeoCombiTrans(0.,0.,32.,
new TGeoRotation()));
146 gGeoMan->SetVisLevel(5);
147 gGeoMan->CloseGeometry();
friend F32vec4 cos(const F32vec4 &a)
friend F32vec4 sin(const F32vec4 &a)
FairGeoBuilder * geobuild
FairGeoInterface * geoFace