From 1110e0d30e317694b8d24df2a7f8db7c3ce7e7d9 Mon Sep 17 00:00:00 2001
From: Raees Khan <rak177@pitt.edu>
Date: Tue, 14 Jun 2022 10:45:19 -0400
Subject: [PATCH] Reading in Magnetic field plugin

---
 FullSimLight/fullSimLight.cc                    | 1 +
 FullSimLight/include/FSLDetectorConstruction.hh | 5 +++--
 FullSimLight/src/FSLDetectorConstruction.cc     | 7 ++++++-
 3 files changed, 10 insertions(+), 3 deletions(-)

diff --git a/FullSimLight/fullSimLight.cc b/FullSimLight/fullSimLight.cc
index 7e058deae..c6d785f1f 100644
--- a/FullSimLight/fullSimLight.cc
+++ b/FullSimLight/fullSimLight.cc
@@ -218,6 +218,7 @@ int main(int argc, char** argv) {
     
     if(isBatch){
         
+        detector->SetMagFieldPluginPath(simConfig::fsl.magFieldPlugin);
         detector->SetGeometryFileName (geometryFileName);
         runManager->SetUserInitialization(detector);
         
diff --git a/FullSimLight/include/FSLDetectorConstruction.hh b/FullSimLight/include/FSLDetectorConstruction.hh
index ce05d528f..02c0fe092 100644
--- a/FullSimLight/include/FSLDetectorConstruction.hh
+++ b/FullSimLight/include/FSLDetectorConstruction.hh
@@ -65,7 +65,8 @@ public:
   }
 
   void AddSensitiveDetectorPlugin(const std::string & SDPluginName) { sensitiveDetectorPluginName.push_back(SDPluginName);}
-  
+  void SetMagFieldPluginPath(const std::string & MFPluginName) {mag_field_plugin_path = MFPluginName;}
+
   static G4double GetFieldValue() { return gFieldValue; }
   G4double GetTolerance (){return fTolerance;}
 
@@ -104,7 +105,7 @@ private:
 
   std::vector<std::string> sensitiveDetectorPluginName;
 
-  
+  std::string mag_field_plugin_path;
 
 };
 
diff --git a/FullSimLight/src/FSLDetectorConstruction.cc b/FullSimLight/src/FSLDetectorConstruction.cc
index 04149594f..7ab08ea8e 100644
--- a/FullSimLight/src/FSLDetectorConstruction.cc
+++ b/FullSimLight/src/FSLDetectorConstruction.cc
@@ -69,7 +69,7 @@
 #include "GeoModelKernel/GeoVGeometryPlugin.h"
 #include "GeoModelKernel/GeoGeometryPluginLoader.h"
 #include "GeoModelKernel/GeoVolumeCursor.h"
-
+#include "GeoModelKernel/GeoPluginLoader.h"
 // For Sensitive Detector plugins:
 #include "FSLSensitiveDetectorPlugin.h"
 #include "FSLSDPluginLoader.h"
@@ -410,6 +410,11 @@ void FSLDetectorConstruction::ConstructSDandField()
       {
           StandardFieldSvc* FSLMagField = new StandardFieldSvc("StandardFieldSvc");
           G4MagneticField* g4Field =  FSLMagField->getField();
+          
+          GeoPluginLoader<ConstMagneticFieldPlugin> loader;
+          ConstMagneticFieldPlugin *plugin=loader.load(mag_field_plugin_path)
+          G4MagneticField=plugin->getFieldValue();
+          
           if(g4Field==nullptr) std::cout<<"Error, g4Field is null!"<<std::endl;
           fField.Put(g4Field);
 
-- 
GitLab