From b2c4c2208dc9d45d3a13e082c7f744b5099303b8 Mon Sep 17 00:00:00 2001
From: Florian Uhlig <f.uhlig@gsi.de>
Date: Fri, 11 Feb 2022 17:03:09 +0100
Subject: [PATCH] Fix creation of geometries sts_v22[abc]_mcbm

Only create the geometry file with exported geometry and placement matrix.
Use correct unit system.
Create also the file needed for the media check.
---
 macro/mcbm/geometry/sts/create_stsgeo_v22a.C | 25 ++++++++++++--------
 macro/mcbm/geometry/sts/create_stsgeo_v22b.C | 25 ++++++++++++--------
 macro/mcbm/geometry/sts/create_stsgeo_v22c.C | 25 ++++++++++++--------
 3 files changed, 45 insertions(+), 30 deletions(-)

diff --git a/macro/mcbm/geometry/sts/create_stsgeo_v22a.C b/macro/mcbm/geometry/sts/create_stsgeo_v22a.C
index 5a922b4db2..ab51480c3b 100644
--- a/macro/mcbm/geometry/sts/create_stsgeo_v22a.C
+++ b/macro/mcbm/geometry/sts/create_stsgeo_v22a.C
@@ -273,6 +273,8 @@ void create_stsgeo_v22a(const char* geoTag = "v22a_mcbm")
   infoFile << "Beam pipe: R3 = " << gkPipeR3 << " cm at z = " << gkPipeZ3 << " cm" << endl;
   // --------------------------------------------------------------------------
 
+  // Load FairRunSim to ensure the correct unit system
+  FairRunSim* sim = new FairRunSim();
 
   // -------   Load media from media file   -----------------------------------
   FairGeoLoader* geoLoad    = new FairGeoLoader("TGeo", "FairGeoLoader");
@@ -946,9 +948,13 @@ void create_stsgeo_v22a(const char* geoTag = "v22a_mcbm")
   gGeoMan->Test();
 
   TFile* geoFile = new TFile(geoFileName, "RECREATE");
-  top->Write();
+  sts->Export(geoFileName);
   cout << endl;
-  cout << "Geometry " << top->GetName() << " written to " << geoFileName << endl;
+  cout << "Geometry " << sts->GetName() << " exported to " << geoFileName << endl;
+  geoFile->Close();
+
+  geoFile = new TFile(geoFileName, "UPDATE");
+  stsTrans->Write();
   geoFile->Close();
 
   TString geoFileName_ = "sts_";
@@ -958,18 +964,17 @@ void create_stsgeo_v22a(const char* geoTag = "v22a_mcbm")
   gGeoMan->Write();  // use this is you want GeoManager format in the output
   geoFile->Close();
 
-  TString geoFileName__ = "sts_";
-  geoFileName_          = geoFileName__ + geoTag + "-geo.root";
-  sts->Export(geoFileName_);
-
-  geoFile = new TFile(geoFileName_, "UPDATE");
-  stsTrans->Write();
-  geoFile->Close();
-
   top->Draw("ogl");
   gGeoManager->SetVisLevel(6);
 
   infoFile.close();
+
+  // create medialist for this geometry
+  TString createmedialist = gSystem->Getenv("VMCWORKDIR");
+  createmedialist += "/macro/geometry/create_medialist.C";
+  std::cout << "Loading macro " << createmedialist << std::endl;
+  gROOT->LoadMacro(createmedialist);
+  gROOT->ProcessLine("create_medialist(\"\", false)");
 }
 // ============================================================================
 // ======                   End of main function                          =====
diff --git a/macro/mcbm/geometry/sts/create_stsgeo_v22b.C b/macro/mcbm/geometry/sts/create_stsgeo_v22b.C
index 98d40f5626..3b6de175a1 100644
--- a/macro/mcbm/geometry/sts/create_stsgeo_v22b.C
+++ b/macro/mcbm/geometry/sts/create_stsgeo_v22b.C
@@ -283,6 +283,8 @@ void create_stsgeo_v22b(const char* geoTag = "v22b_mcbm")
   infoFile << "Beam pipe: R3 = " << gkPipeR3 << " cm at z = " << gkPipeZ3 << " cm" << endl;
   // --------------------------------------------------------------------------
 
+  // Load FairRunSim to ensure the correct unit system
+  FairRunSim* sim = new FairRunSim();
 
   // -------   Load media from media file   -----------------------------------
   FairGeoLoader* geoLoad    = new FairGeoLoader("TGeo", "FairGeoLoader");
@@ -955,9 +957,13 @@ void create_stsgeo_v22b(const char* geoTag = "v22b_mcbm")
   gGeoMan->Test();
 
   TFile* geoFile = new TFile(geoFileName, "RECREATE");
-  top->Write();
+  sts->Export(geoFileName);
   cout << endl;
-  cout << "Geometry " << top->GetName() << " written to " << geoFileName << endl;
+  cout << "Geometry " << sts->GetName() << " exported to " << geoFileName << endl;
+  geoFile->Close();
+
+  geoFile = new TFile(geoFileName, "UPDATE");
+  stsTrans->Write();
   geoFile->Close();
 
   TString geoFileName_ = "sts_";
@@ -967,18 +973,17 @@ void create_stsgeo_v22b(const char* geoTag = "v22b_mcbm")
   gGeoMan->Write();  // use this is you want GeoManager format in the output
   geoFile->Close();
 
-  TString geoFileName__ = "sts_";
-  geoFileName_          = geoFileName__ + geoTag + "-geo.root";
-  sts->Export(geoFileName_);
-
-  geoFile = new TFile(geoFileName_, "UPDATE");
-  stsTrans->Write();
-  geoFile->Close();
-
   top->Draw("ogl");
   gGeoManager->SetVisLevel(6);
 
   infoFile.close();
+
+  // create medialist for this geometry
+  TString createmedialist = gSystem->Getenv("VMCWORKDIR");
+  createmedialist += "/macro/geometry/create_medialist.C";
+  std::cout << "Loading macro " << createmedialist << std::endl;
+  gROOT->LoadMacro(createmedialist);
+  gROOT->ProcessLine("create_medialist(\"\", false)");
 }
 // ============================================================================
 // ======                   End of main function                          =====
diff --git a/macro/mcbm/geometry/sts/create_stsgeo_v22c.C b/macro/mcbm/geometry/sts/create_stsgeo_v22c.C
index 6e026952ed..9d91975d7a 100644
--- a/macro/mcbm/geometry/sts/create_stsgeo_v22c.C
+++ b/macro/mcbm/geometry/sts/create_stsgeo_v22c.C
@@ -284,6 +284,8 @@ void create_stsgeo_v22c(const char* geoTag = "v22c_mcbm")
   infoFile << "Beam pipe: R3 = " << gkPipeR3 << " cm at z = " << gkPipeZ3 << " cm" << endl;
   // --------------------------------------------------------------------------
 
+  // Load FairRunSim to ensure the correct unit system
+  FairRunSim* sim = new FairRunSim();
 
   // -------   Load media from media file   -----------------------------------
   FairGeoLoader* geoLoad    = new FairGeoLoader("TGeo", "FairGeoLoader");
@@ -956,9 +958,13 @@ void create_stsgeo_v22c(const char* geoTag = "v22c_mcbm")
   gGeoMan->Test();
 
   TFile* geoFile = new TFile(geoFileName, "RECREATE");
-  top->Write();
+  sts->Export(geoFileName);
   cout << endl;
-  cout << "Geometry " << top->GetName() << " written to " << geoFileName << endl;
+  cout << "Geometry " << sts->GetName() << " exported to " << geoFileName << endl;
+  geoFile->Close();
+
+  geoFile = new TFile(geoFileName, "UPDATE");
+  stsTrans->Write();
   geoFile->Close();
 
   TString geoFileName_ = "sts_";
@@ -968,18 +974,17 @@ void create_stsgeo_v22c(const char* geoTag = "v22c_mcbm")
   gGeoMan->Write();  // use this is you want GeoManager format in the output
   geoFile->Close();
 
-  TString geoFileName__ = "sts_";
-  geoFileName_          = geoFileName__ + geoTag + "-geo.root";
-  sts->Export(geoFileName_);
-
-  geoFile = new TFile(geoFileName_, "UPDATE");
-  stsTrans->Write();
-  geoFile->Close();
-
   top->Draw("ogl");
   gGeoManager->SetVisLevel(6);
 
   infoFile.close();
+
+  // create medialist for this geometry
+  TString createmedialist = gSystem->Getenv("VMCWORKDIR");
+  createmedialist += "/macro/geometry/create_medialist.C";
+  std::cout << "Loading macro " << createmedialist << std::endl;
+  gROOT->LoadMacro(createmedialist);
+  gROOT->ProcessLine("create_medialist(\"\", false)");
 }
 // ============================================================================
 // ======                   End of main function                          =====
-- 
GitLab