27 {+81.375 , +27.125 , -27.125 , -81.375 , +81.375 , +27.125 , -27.125 ,
32 {+36.5 , +36.5 , +36.5 , +36.5 , -36.5 , -36.5 , -36.5 ,
37 {1.25 , 1.25 , 1.25 , 1.25 , 1.25 , 1.25 , 1.25 , 1.25 }
53 {
false ,
false ,
false ,
false ,
true ,
true ,
true ,
true }
57 {
false ,
false ,
false ,
false ,
true ,
true ,
true ,
true }
94 FairGeoMedium* mAir = geoMedia->getMedium(
"air");
96 Fatal(
"Main",
"FairMedium air not found");
97 geoBuild->createMedium(mAir);
100 Fatal(
"Main",
"Medium air not found");
103 FairGeoMedium* mCarbon = geoMedia->getMedium(
"carbon");
105 Fatal(
"Main",
"FairMedium carbon not found");
106 geoBuild->createMedium(mCarbon);
109 Fatal(
"Main",
"Medium carbon not found");
112 FairGeoMedium* mFiberGlass = geoMedia->getMedium(
"fiberglass");
114 Fatal(
"Main",
"FairMedium fiberglass not found");
115 geoBuild->createMedium(mFiberGlass);
118 Fatal(
"Main",
"Medium fiberglass not found");
121 FairGeoMedium* mArCO27030 = geoMedia->getMedium(
"arco27030");
123 Fatal(
"Main",
"FairMedium arco27030 not found");
124 geoBuild->createMedium(mArCO27030);
127 Fatal(
"Main",
"Medium arco27030 not found");
130 FairGeoMedium* mArgonIsobutane7525 = geoMedia->getMedium(
"ArgonIsobutane7525");
131 if (!mArgonIsobutane7525)
132 Fatal(
"Main",
"FairMedium ArgonIsobutane7525 not found");
133 geoBuild->createMedium(mArgonIsobutane7525);
136 Fatal(
"Main",
"Medium ArgonIsobutane7525 not found");
139 FairGeoMedium* mRohacell = geoMedia->getMedium(
"rohacellhf71");
141 Fatal(
"Main",
"FairMedium rohacellhf71 not found");
142 geoBuild->createMedium(mRohacell);
145 Fatal(
"Main",
"Medium rohacellhf71 not found");
155 const TString geoDetectorName =
"LargeCSC";
156 const TString geoDetectorVersion =
"Run8";
157 const TString geoFileName = gPath +
"/geometry/" + geoDetectorName +
"_" + geoDetectorVersion +
".root";
160 FairGeoLoader* geoLoad =
new FairGeoLoader(
"TGeo",
"FairGeoLoader");
161 FairGeoInterface* geoFace = geoLoad->getGeoInterface();
164 TString medFile = gPath +
"/geometry/media.geo";
165 geoFace->setMediaFile(medFile);
166 geoFace->readMedia();
167 FairGeoMedia* geoMedia = geoFace->getMedia();
168 FairGeoBuilder* geoBuild = geoLoad->getGeoBuilder();
175 gGeoMan->SetName(geoDetectorName +
"_geom");
188 Int_t stationNum = istation;
200 module_transform->
RotateY(180.0);
202 module_transform->
RotateX(180.0);
207 station->
AddNode(module, 0, module_transform);
214 CSC->
AddNode(station, 0, station_transform);
222 gGeoMan->CheckOverlaps(0.0001);
227 TFile* geoFile =
new TFile(geoFileName,
"RECREATE");
248 switch (module_type) {
249 case ModuleType::WHOLE_MOD: {
254 case ModuleType::HOLED_LEFT_MOD: {
266 ((
TGeoXtru*)moduleS)->DefinePolygon(6, x_pos, y_pos);
271 case ModuleType::HOLED_RIGHT_MOD: {
286 ((
TGeoXtru*)moduleS)->DefinePolygon(6, x_pos, y_pos);
292 Error(
"CreateModule()",
"Incorrect module type selected!!!");
302 Fatal(
"Main",
"Invalid medium for moduleV volume!");
void Error(const char *location, const char *msgfmt,...)
void Fatal(const char *location, const char *msgfmt,...)
R__EXTERN TGeoManager * gGeoManager
char * Form(const char *fmt,...)
R__EXTERN TSystem * gSystem
static Int_t GetColor(const char *hexcolor)
void Close(Option_t *option="") override
void RotateY(Double_t angle) override
void RotateX(Double_t angle) override
void SetTranslation(const TGeoTranslation &tr)
void SetVisContainers(Bool_t flag=kTRUE) override
virtual TGeoNode * AddNode(TGeoVolume *vol, Int_t copy_no, TGeoMatrix *mat=nullptr, Option_t *option="")
void Draw(Option_t *option="") override
void SetTransparency(Char_t transparency=0)
virtual void SetMedium(TGeoMedium *medium)
void SetLineColor(Color_t lcolor) override
const char * GetName() const override
virtual void SetName(const char *name)
virtual Int_t Write(const char *name=nullptr, Int_t option=0, Int_t bufsize=0)
const char * Data() const
const Double_t YStationPositions[NStations]
const Double_t ZStationPositions[NStations]
TGeoMedium * pMedArCO27030
TGeoMedium * pMedFiberGlass
const Double_t XStationPositions[NStations]
const Bool_t ModulesYRotations[NStations][NMaxModules]
const Bool_t ModulesXRotations[NStations][NMaxModules]
TGeoMedium * pMedRohacell
TGeoMedium * pMedArgonIsobutane7525
const ModuleType ModuleTypes[NStations][NMaxModules]
const Double_t BeamHole_YSize
const Double_t BeamHole_XSize
void create_rootgeom_LargeCSC_Run8()
TGeoVolume * CreateModule(TString module_name, ModuleType module_type)
TGeoVolume * CreateStation(TString station_name)
void DefineRequiredMedia(FairGeoMedia *geoMedia, FairGeoBuilder *geoBuild)