4 #include "TClonesArray.h"
5 #include "TLorentzVector.h"
10 #include "TGeoCompositeShape.h"
11 #include "TGeoMatrix.h"
12 #include "TGeoManager.h"
13 #include "TVirtualMC.h"
15 #include "FairVolume.h"
16 #include "FairGeoMedia.h"
17 #include "FairGeoInterface.h"
18 #include "FairGeoLoader.h"
19 #include "FairGeoBuilder.h"
20 #include "FairRuntimeDb.h"
22 #include "FairModule.h"
35 vname = vname.Strip();
36 TGeoVolume* vcave =
gGeoManager->FindVolumeFast(vname.Data());
39 TGeoVolume* mdtfwd =
new TGeoVolumeAssembly(
"MdtForward");
41 FairGeoLoader*
geoLoad = FairGeoLoader::Instance();
42 FairGeoInterface *
geoFace = geoLoad->getGeoInterface();
43 FairGeoMedia *
Media = geoFace->getMedia();
44 FairGeoBuilder *
geobuild=geoLoad->getGeoBuilder();
45 FairGeoMedium *medmdtArCO2 = Media->getMedium(
"MDTMixture");
46 geobuild->createMedium(medmdtArCO2);
47 FairGeoMedium *medmdtFe = Media->getMedium(
"iron");
48 geobuild->createMedium(medmdtFe);
49 FairGeoMedium *medmdtVac = Media->getMedium(
"vacuum");
50 geobuild->createMedium(medmdtVac);
54 TGeoTranslation *frotfe[16];
55 TGeoTranslation *frotgas[17];
56 TGeoVolume *FeForward[16];
57 TGeoVolume *GasForward[17];
67 gGeoManager->MakeBox(
"hl",
gGeoManager->GetMedium(
"vacuum"), fwd_holedx/20., fwd_holedy/20., fwd_fedz/20.+1.);
70 gGeoManager->MakeBox(
"hgas",
gGeoManager->GetMedium(
"vacuum"), fwd_holedx/20., fwd_holedy/20., fwd_thick/20.+1.);
72 TGeoTranslation *vv =
new TGeoTranslation((15+1.8), 0, 0);
74 vv->RegisterYourself();
75 TGeoCompositeShape *csfe =
new TGeoCompositeShape(
"ffe",
"(fe - (hl:vv))");
76 TGeoCompositeShape *csgas =
new TGeoCompositeShape(
"ggas",
"(gas - (hgas:vv))");
80 for (
int nFeLayer=0; nFeLayer<16; nFeLayer++)
84 frotfe[nFeLayer] =
new TGeoTranslation(kk*1.45, 0, 873+9*nFeLayer);
85 FeForward[nFeLayer] =
new TGeoVolume(Form(
"FeForwardLayer%d",nFeLayer), csfe,
gGeoManager->GetMedium(
"iron"));
86 frotfe[nFeLayer]->SetName(Form(
"frotfe%d",nFeLayer));
87 frotfe[nFeLayer]->RegisterYourself();
89 mdtfwd->AddNode(FeForward[nFeLayer], nFeLayer, frotfe[nFeLayer]);
95 for (
int nLayer=0; nLayer<17; nLayer++)
97 sprintf(buffer,
"MDT%is%il%ib%iw%i", 4, 0, nLayer, 0, 0);
101 frotgas[nLayer] =
new TGeoTranslation(kk*1.45, 0, 876.1+ fwd_thick/20. +9*(nLayer-1));
102 GasForward[nLayer] =
new TGeoVolume(buffer, csgas,
gGeoManager->GetMedium(
"MDTMixture"));
106 frotgas[nLayer] =
new TGeoTranslation(kk*1.45, 0, 869.9 - fwd_thick/20.);
107 GasForward[nLayer] =
new TGeoVolume(buffer, csgas,
gGeoManager->GetMedium(
"MDTMixture"));
109 frotgas[nLayer]->SetName(Form(
"frotgas%d",nLayer));
110 frotgas[nLayer]->RegisterYourself();
111 AddSensitiveVolume(GasForward[nLayer]);
112 mdtfwd->AddNode(GasForward[nLayer], nLayer, frotgas[nLayer]);
116 vcave->AddNode(mdtfwd,1);
#define PndMdt_SVThickness
TGeoManager * gGeoManager
#define PndMdt_FWD_Hole_DX
FairGeoBuilder * geobuild
#define PndMdt_FWD_Hole_DY
FairGeoInterface * geoFace