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");
22 TFile*
fi =
new TFile(outfile,
"RECREATE");
24 FairGeoLoader*
geoLoad =
new FairGeoLoader(
"TGeo",
"FairGeoLoader");
25 FairGeoInterface *
geoFace = geoLoad->getGeoInterface();
26 geoFace->setMediaFile(
"../../../geometry/media_pnd.geo");
30 FairGeoMedia *
Media = geoFace->getMedia();
31 FairGeoBuilder *
geobuild=geoLoad->getGeoBuilder();
33 FairGeoMedium *MediumSci = Media->getMedium(
"polyvinyltoluene");
34 FairGeoMedium *MediumSiPm = Media->getMedium(
"silicon");
35 FairGeoMedium *MediumCard = Media->getMedium(
"pcbmvd");
38 Int_t
nmed=geobuild->createMedium(MediumSci);
39 nmed=geobuild->createMedium(MediumSiPm);
40 nmed=geobuild->createMedium(MediumCard);
42 TGeoManager*
gGeoMan = (TGeoManager*)gROOT->FindObject(
"FAIRGeom");
43 TGeoVolume *
top =
new TGeoVolumeAssembly(
"SciT");
46 gGeoMan->SetTopVolume(top);
55 TileShape =
new TGeoBBox(
"SciTil_logicTile", 4.3475, 0.25, 1.47);
58 TileVol =
new TGeoVolume(
"SciTil_SENSOR",TileShape, gGeoMan->GetMedium(
"polyvinyltoluene"));
59 TileVol->SetLineColor(kBlue);
61 TGeoBBox* SiPmShape=
new TGeoBBox(
"SiPm_logicSiPm",0.215,0.1925,0.0725);
62 TGeoVolume* SiPmVol=
new TGeoVolume(
"SiPm",SiPmShape, gGeoMan->GetMedium(
"silicon"));
63 SiPmVol->SetLineColor(kRed);
65 TGeoBBox* CardShape=
new TGeoBBox(
"Card_logicCard",0.005,0.25,1.4);
66 TGeoVolume* CardVol=
new TGeoVolume(
"SciTil_Card",CardShape, gGeoMan->GetMedium(
"pcbmvd"));
67 CardVol->SetLineColor(kYellow);
69 TGeoBBox* CardOutShape=
new TGeoBBox(
"CardOut_logicCard",0.5,0.075,90.);
70 TGeoVolume* CardOutVol=
new TGeoVolume(
"SciTil_CardOut",CardOutShape, gGeoMan->GetMedium(
"pcbmvd"));
71 CardOutVol->SetLineColor(kGreen);
74 TGeoSphere* CenterShape;
75 CenterShape =
new TGeoSphere(
"logicCenter", 0, 3);
77 TGeoVolume* CenterVol;
78 CenterVol =
new TGeoVolume(
"Center",CenterShape, gGeoMan->GetMedium(
"polyvinyltoluene"));
79 CenterVol->SetLineColor(kYellow);
83 TGeoVolumeAssembly* LineAssVol =
new TGeoVolumeAssembly(
"SciTil_Line");
85 TGeoRotation* rot_SiPm =
new TGeoRotation;
86 LineAssVol->AddNode(TileVol,0,
new TGeoCombiTrans(4.4975, 0., 0.,
new TGeoRotation (0)));
87 LineAssVol->AddNode(TileVol,1,
new TGeoCombiTrans(-4.4975, 0., 0.,
new TGeoRotation (0)));
89 rot_SiPm->SetAngles(90.,90.,90.);
90 LineAssVol->AddNode(SiPmVol,0,
new TGeoCombiTrans(8.9175, 0., 1.06875, rot_SiPm));
91 LineAssVol->AddNode(SiPmVol,1,
new TGeoCombiTrans(8.9175, 0., 0.35625, rot_SiPm));
92 LineAssVol->AddNode(SiPmVol,2,
new TGeoCombiTrans(8.9175, 0., -0.35625, rot_SiPm));
93 LineAssVol->AddNode(SiPmVol,3,
new TGeoCombiTrans(8.9175, 0., -1.06875, rot_SiPm));
95 LineAssVol->AddNode(SiPmVol,4,
new TGeoCombiTrans(0.0775, 0., 1.06875, rot_SiPm));
96 LineAssVol->AddNode(SiPmVol,5,
new TGeoCombiTrans(0.0775, 0., 0.35625, rot_SiPm));
97 LineAssVol->AddNode(SiPmVol,6,
new TGeoCombiTrans(0.0775, 0., -0.35625, rot_SiPm));
98 LineAssVol->AddNode(SiPmVol,7,
new TGeoCombiTrans(0.0775, 0., -1.06875, rot_SiPm));
100 LineAssVol->AddNode(SiPmVol,8,
new TGeoCombiTrans(-0.0775, 0., 1.06875, rot_SiPm));
101 LineAssVol->AddNode(SiPmVol,9,
new TGeoCombiTrans(-0.0775, 0., 0.35625, rot_SiPm));
102 LineAssVol->AddNode(SiPmVol,10,
new TGeoCombiTrans(-0.0775, 0., -0.35625, rot_SiPm));
103 LineAssVol->AddNode(SiPmVol,11,
new TGeoCombiTrans(-0.0775, 0., -1.06875, rot_SiPm));
105 LineAssVol->AddNode(SiPmVol,12,
new TGeoCombiTrans(-8.9175, 0., 1.06875, rot_SiPm));
106 LineAssVol->AddNode(SiPmVol,13,
new TGeoCombiTrans(-8.9175, 0., 0.35625, rot_SiPm));
107 LineAssVol->AddNode(SiPmVol,14,
new TGeoCombiTrans(-8.9175, 0., -0.35625, rot_SiPm));
108 LineAssVol->AddNode(SiPmVol,15,
new TGeoCombiTrans(-8.9175, 0., -1.06875, rot_SiPm));
110 LineAssVol->AddNode(CardVol,0,
new TGeoCombiTrans(8.995, 0., 0.,
new TGeoRotation (0)));
111 LineAssVol->AddNode(CardVol,1,
new TGeoCombiTrans(0., 0., 0.,
new TGeoRotation (0)));
112 LineAssVol->AddNode(CardVol,2,
new TGeoCombiTrans(-8.995, 0., 0.,
new TGeoRotation (0)));
115 TGeoVolume* TileVol2;
116 TileVol2 =
new TGeoVolume(
"SciTil_SENSOR_2",TileShape, gGeoMan->GetMedium(
"polyvinyltoluene"));
117 TileVol2->SetLineColor(kRed);
120 TGeoVolumeAssembly* LineAssVol2 =
new TGeoVolumeAssembly(
"SciTil_Line");
122 LineAssVol2->AddNode(TileVol2,0,
new TGeoCombiTrans(4.4975, 0., 0.,
new TGeoRotation (0)));
123 LineAssVol2->AddNode(TileVol2,1,
new TGeoCombiTrans(-4.4975, 0., 0.,
new TGeoRotation (0)));
125 rot_SiPm->SetAngles(90.,90.,90.);
126 LineAssVol2->AddNode(SiPmVol,0,
new TGeoCombiTrans(8.9175, 0., 1.06875, rot_SiPm));
127 LineAssVol2->AddNode(SiPmVol,1,
new TGeoCombiTrans(8.9175, 0., 0.35625, rot_SiPm));
128 LineAssVol2->AddNode(SiPmVol,2,
new TGeoCombiTrans(8.9175, 0., -0.35625, rot_SiPm));
129 LineAssVol2->AddNode(SiPmVol,3,
new TGeoCombiTrans(8.9175, 0., -1.06875, rot_SiPm));
131 LineAssVol2->AddNode(SiPmVol,4,
new TGeoCombiTrans(0.0775, 0., 1.06875, rot_SiPm));
132 LineAssVol2->AddNode(SiPmVol,5,
new TGeoCombiTrans(0.0775, 0., 0.35625, rot_SiPm));
133 LineAssVol2->AddNode(SiPmVol,6,
new TGeoCombiTrans(0.0775, 0., -0.35625, rot_SiPm));
134 LineAssVol2->AddNode(SiPmVol,7,
new TGeoCombiTrans(0.0775, 0., -1.06875, rot_SiPm));
136 LineAssVol2->AddNode(SiPmVol,8,
new TGeoCombiTrans(-0.0775, 0., 1.06875, rot_SiPm));
137 LineAssVol2->AddNode(SiPmVol,9,
new TGeoCombiTrans(-0.0775, 0., 0.35625, rot_SiPm));
138 LineAssVol2->AddNode(SiPmVol,10,
new TGeoCombiTrans(-0.0775, 0., -0.35625, rot_SiPm));
139 LineAssVol2->AddNode(SiPmVol,11,
new TGeoCombiTrans(-0.0775, 0., -1.06875, rot_SiPm));
141 LineAssVol2->AddNode(SiPmVol,12,
new TGeoCombiTrans(-8.9175, 0., 1.06875, rot_SiPm));
142 LineAssVol2->AddNode(SiPmVol,13,
new TGeoCombiTrans(-8.9175, 0., 0.35625, rot_SiPm));
143 LineAssVol2->AddNode(SiPmVol,14,
new TGeoCombiTrans(-8.9175, 0., -0.35625, rot_SiPm));
144 LineAssVol2->AddNode(SiPmVol,15,
new TGeoCombiTrans(-8.9175, 0., -1.06875, rot_SiPm));
146 LineAssVol2->AddNode(CardVol,0,
new TGeoCombiTrans(8.995, 0., 0.,
new TGeoRotation (0)));
147 LineAssVol2->AddNode(CardVol,1,
new TGeoCombiTrans(0., 0., 0.,
new TGeoRotation (0)));
148 LineAssVol2->AddNode(CardVol,2,
new TGeoCombiTrans(-8.995, 0., 0.,
new TGeoRotation (0)));
152 TGeoVolumeAssembly* SModAssVol =
new TGeoVolumeAssembly(
"SciTil_Mod");
155 for(
int j=0;j<40;j++){
157 SModAssVol->AddNode(LineAssVol, j,
new TGeoCombiTrans(0., 0., dz,
new TGeoRotation (0)));
159 for(
int j=41;j<60;j++){
161 SModAssVol->AddNode(LineAssVol, j,
new TGeoCombiTrans(0., 0., dz,
new TGeoRotation (0)));
165 SModAssVol->AddNode(LineAssVol2, j,
new TGeoCombiTrans(0., 0., dz,
new TGeoRotation (0)));
167 SModAssVol->AddNode(CardOutVol, 0,
new TGeoCombiTrans(8.995, 0.325, 0.,
new TGeoRotation (0)));
168 SModAssVol->AddNode(CardOutVol, 1,
new TGeoCombiTrans(0., 0.325, 0.,
new TGeoRotation (0)));
169 SModAssVol->AddNode(CardOutVol, 2,
new TGeoCombiTrans(-8.995, 0.325, 0.,
new TGeoRotation (0)));
173 TGeoVolumeAssembly* BarrelAssVol =
new TGeoVolumeAssembly(
"SciTil_barrel");
184 Double_t phi0 = (180.-2.*pipehAngle)/bbnum + pipehAngle;
185 Double_t dphi = (180.-2.*pipehAngle)/bbnum*2.;
188 Double_t dx_bbox, dy_bbox, dz_bbox, phi_curr;
190 for(Int_t
m = 0;
m < 8;
m ++){
191 phi_curr = (90. - phi0 - dphi*
m)/180.*pi;
192 if(
m > bbnum/2-1){ phi_curr = (90. - phi0 - dphi*
m - 2.*pipehAngle)/180.*pi; }
193 dx_bbox = radius *
cos(phi_curr);
194 dy_bbox = radius *
sin(phi_curr);
196 TGeoRotation rot_bbox;
197 rot_bbox.RotateZ( -phi0 -
m*dphi - (TMath::Floor(2.*
m/bbnum))*(2.*pipehAngle));
198 BarrelAssVol->AddNode(SModAssVol,
m,
new TGeoCombiTrans(dx_bbox, dy_bbox, 0,
new TGeoRotation(rot_bbox)));
202 top->AddNode(BarrelAssVol,0,
new TGeoCombiTrans(0.,0.,32.,
new TGeoRotation()));
203 top->AddNode(CenterVol, 0);
207 gGeoMan->SetVisLevel(5);
208 gGeoMan->CloseGeometry();
friend F32vec4 cos(const F32vec4 &a)
friend F32vec4 sin(const F32vec4 &a)
FairGeoBuilder * geobuild
int create_half_geo(Double_t distance=750)
FairGeoInterface * geoFace