51 return fullSize / 2.0;
70 auto loadMedium = [&](
const char* name,
TGeoMedium*& dest) {
71 FairGeoMedium*
m = geoMedia->getMedium(name);
73 Fatal(
"DefineRequiredMedia",
"FairMedium '%s' not found", name);
74 geoBuild->createMedium(
m);
77 Fatal(
"DefineRequiredMedia",
"Medium '%s' not found after creation", name);
104 const char* geoTag =
"")
111 const TString geoDetectorName =
"HGND";
113 TString geoFileName =
Form(
"%s/geometry/%s_dist%.3fcm_yshift%.3fcm_rotY%.2fdeg_rotX%.2fdeg%s%s.root",
114 workDir.
Data(), geoDetectorName.
Data(), distToDetector, yShift, rotYdeg, rotXdeg,
115 (geoTag && geoTag[0]) ?
"_" :
"", geoTag);
118 FairGeoLoader* geoLoad =
new FairGeoLoader(
"TGeo",
"FairGeoLoader");
119 FairGeoInterface* geoFace = geoLoad->getGeoInterface();
122 TString medFile = workDir +
"/geometry/media.geo";
123 geoFace->setMediaFile(medFile);
124 geoFace->readMedia();
125 FairGeoMedia* geoMedia = geoFace->getMedia();
126 FairGeoBuilder* geoBuild = geoLoad->getGeoBuilder();
157 Fatal(
"create_ndet_geometry",
"Invalid medium for volume '%s'", name);
171 auto placeLayer = [&](
Int_t layerIndex,
Double_t zFrontFace) {
178 const Int_t rowNb = iy + 1;
179 const Int_t columnNb = ix + 1;
210 printf(
"NDet center: x=%.3f y=%.3f z=%.3f cm\n", master[0], master[1], master[2]);
213 ndetCommon->
AddNode(ndetEnvelope, 1, ndetTransform);
223 TFile* geoFile =
new TFile(geoFileName,
"RECREATE");
227 printf(
"Geometry written to: %s\n", geoFileName.
Data());
void Fatal(const char *location, const char *msgfmt,...)
R__EXTERN TGeoManager * gGeoManager
char * Form(const char *fmt,...)
R__EXTERN TSystem * gSystem
static const TString G10_name_NICA
static const TString fDetectorVolumeName
static const TString fEnvelopeVolumeName
static const TString fModuleVolumeName
static const TString fTopVolumeName
static const TString SensitiveVolume_name_NICA
static const TString fCommonVolumeName
virtual void SetFillColor(Color_t fcolor)
void Close(Option_t *option="") override
void RotateX(Double_t angle) override
void RotateY(Double_t angle) override
void LocalToMaster(const Double_t *local, Double_t *master) const override
void SetVisContainers(Bool_t flag=kTRUE) override
virtual TGeoNode * AddNode(TGeoVolume *vol, Int_t copy_no, TGeoMatrix *mat=nullptr, Option_t *option="")
virtual void SetMedium(TGeoMedium *medium)
void SetLineColor(Color_t lcolor) 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
void DefineRequiredMedia(FairGeoMedia *geoMedia, FairGeoBuilder *geoBuild)
void create_rootgeom_HGND_run9(Double_t distToDetector=699.7, Double_t yShift=0.0, Double_t rotYdeg=-10.0, Double_t rotXdeg=0.0, const char *geoTag="")
HGND Run9 geometry creation macro Two identical layers (scintillator cell + PCB), no absorber between...
constexpr Double_t kScintFrontZ[kNLayers]
constexpr Double_t kEnvelopeSizeX
constexpr Double_t kScintSizeY
constexpr Int_t kNCellsPerLayer
constexpr Double_t kG10SizeY
constexpr Double_t kEnvelopeSizeZ
constexpr Double_t kEnvelopeSizeY
constexpr Double_t kScintSizeZ
constexpr Double_t kEnvelopeMargin
constexpr Double_t kG10SizeZ
constexpr Int_t kNColumns
constexpr Double_t kG10SizeX
constexpr Double_t FrontToLocalZ(Double_t zFront)
constexpr Double_t Half(Double_t fullSize)
constexpr Double_t kScintSizeX