From 327aea1390fec0d13b0c5d92e0377bde908ff5b5 Mon Sep 17 00:00:00 2001
From: lintao <lintao51@gmail.com>
Date: Mon, 24 Aug 2020 23:57:52 +0800
Subject: [PATCH] WIP: integrate DDG4's magnetic field.

---
 .../DetCEPCv4/compact/CepC_v4-onlyTracker.xml     |  9 +++++++++
 .../DetSimGeom/src/AnExampleDetElemTool.cpp       | 15 ++++++++++-----
 2 files changed, 19 insertions(+), 5 deletions(-)

diff --git a/Detector/DetCEPCv4/compact/CepC_v4-onlyTracker.xml b/Detector/DetCEPCv4/compact/CepC_v4-onlyTracker.xml
index 4c6e2d61..9d004268 100644
--- a/Detector/DetCEPCv4/compact/CepC_v4-onlyTracker.xml
+++ b/Detector/DetCEPCv4/compact/CepC_v4-onlyTracker.xml
@@ -74,4 +74,13 @@
   <!--include ref="Field_Solenoid_Map_s_4.0T.xml"/>
   <include ref="Field_AntiDID_Map_s.xml"/>
   <include ref="Field_FwdMagnets_Ideal_1000GeV.xml"/-->
+
+
+  <fields>
+
+    <field name="MagnetFields_Constant" type="ConstantField" field="magnetic">
+      <strength x="0" y="0" z="3.0*tesla"/>
+    </field>
+
+  </fields>
 </lccdd>
diff --git a/Simulation/DetSimGeom/src/AnExampleDetElemTool.cpp b/Simulation/DetSimGeom/src/AnExampleDetElemTool.cpp
index decac3e9..87ad61b3 100644
--- a/Simulation/DetSimGeom/src/AnExampleDetElemTool.cpp
+++ b/Simulation/DetSimGeom/src/AnExampleDetElemTool.cpp
@@ -28,7 +28,7 @@
 #include "DD4hep/Plugins.h"
 #include "DDG4/Geant4Converter.h"
 #include "DDG4/Geant4Mapping.h"
-
+#include "DDG4/Geant4Field.h"
 
 DECLARE_COMPONENT(AnExampleDetElemTool)
 
@@ -162,11 +162,16 @@ AnExampleDetElemTool::ConstructSDandField() {
     G4FieldManager* fieldManager
         = G4TransportationManager::GetTransportationManager()->GetFieldManager();
 
-    G4ThreeVector value(0,0,3.*tesla);
-    G4UniformMagField* aMagField = new G4UniformMagField(value);
+    // // Below is a uniform B-field
+    // G4ThreeVector value(0,0,3.*tesla);
+    // G4UniformMagField* mag_field = new G4UniformMagField(value);
+
+    // DDG4 based B-field
+    dd4hep::OverlayedField fld  = lcdd->field();
+    G4MagneticField* mag_field  = new dd4hep::sim::Geant4Field(fld);
 
-    fieldManager->SetDetectorField(aMagField);
-    fieldManager->CreateChordFinder(aMagField);
+    fieldManager->SetDetectorField(mag_field);
+    fieldManager->CreateChordFinder(mag_field);
 
 
 }
-- 
GitLab