From 9404edbff75b3f6455cc264bf2c8dc54e3c4bebe Mon Sep 17 00:00:00 2001
From: Markus Frank <markus.frank@cern.ch>
Date: Fri, 13 Dec 2013 16:00:20 +0000
Subject: [PATCH] Fix compilation problems for slc5

---
 DDG4/plugins/Geant4XMLSetup.cpp | 70 +++++++++++++++++++++------------
 1 file changed, 44 insertions(+), 26 deletions(-)

diff --git a/DDG4/plugins/Geant4XMLSetup.cpp b/DDG4/plugins/Geant4XMLSetup.cpp
index f7a774dc3..49dfd5322 100644
--- a/DDG4/plugins/Geant4XMLSetup.cpp
+++ b/DDG4/plugins/Geant4XMLSetup.cpp
@@ -148,34 +148,52 @@ namespace DD4hep  {
     typedef Geant4ActionPhase PH;
     Phase p;
 
-    if ( nam == "RunAction/begin" )
-      kernel.runAction().callAtBegin((p=kernel.addPhase<const G4Run*>(nam)).get(),
-				       &PH::call<const G4Run*>);
-    else if ( nam == "RunAction/end" )
-      kernel.runAction().callAtEnd((p=kernel.addPhase<const G4Run*>(nam)).get(),
-				   &PH::call<const G4Run*>);
-    else if ( nam == "EventAction/begin" )
-      kernel.eventAction().callAtBegin((p=kernel.addPhase<const G4Event*>(nam)).get(),
-				       &PH::call<const G4Event*>);
-    else if ( nam == "EventAction/end" )
-      kernel.eventAction().callAtEnd((p=kernel.addPhase<const G4Event*>(nam)).get(),
-				     &PH::call<const G4Event*>);
-    else if ( nam == "TrackingAction/begin" )
-      kernel.trackingAction().callAtBegin((p=kernel.addPhase<const G4Track*>(nam)).get(),
-					  &PH::call<const G4Track*>);
-    else if ( nam == "TrackingAction/end" )
-      kernel.trackingAction().callAtEnd((p=kernel.addPhase<const G4Track*>(nam,false)).get(),
-					&PH::call<const G4Track*>);
-    else if ( nam == "StackingAction/newStage" )
+    if ( nam == "RunAction/begin" )  {
+      void (Geant4ActionPhase::*func)(const G4Run*) = &Geant4ActionPhase::call;
+      kernel.runAction().callAtBegin((p=kernel.addPhase<const G4Run*>(nam)).get(),func);
+      //&Geant4ActionPhase::call<const G4Run*>);
+    }
+    else if ( nam == "RunAction/end" )  {
+      void (Geant4ActionPhase::*func)(const G4Run*) = &Geant4ActionPhase::call;
+      kernel.runAction().callAtEnd((p=kernel.addPhase<const G4Run*>(nam)).get(),func);
+      //&PH::call<const G4Run*>);
+    }
+    else if ( nam == "EventAction/begin" )  {
+      void (Geant4ActionPhase::*func)(const G4Event*) = &Geant4ActionPhase::call;
+      kernel.eventAction().callAtBegin((p=kernel.addPhase<const G4Event*>(nam)).get(),func);
+      //&PH::call<const G4Event*>);
+    }
+    else if ( nam == "EventAction/end" )  {
+      void (Geant4ActionPhase::*func)(const G4Event*) = &Geant4ActionPhase::call;
+      kernel.eventAction().callAtEnd((p=kernel.addPhase<const G4Event*>(nam)).get(),func);
+      //&PH::call<const G4Event*>);
+    }
+    else if ( nam == "TrackingAction/begin" )  {
+      void (Geant4ActionPhase::*func)(const G4Track*) = &Geant4ActionPhase::call;
+      kernel.trackingAction().callAtBegin((p=kernel.addPhase<const G4Track*>(nam)).get(),func);
+      //&PH::call<const G4Track*>);
+    }
+    else if ( nam == "TrackingAction/end" )  {
+      void (Geant4ActionPhase::*func)(const G4Track*) = &Geant4ActionPhase::call;
+      kernel.trackingAction().callAtEnd((p=kernel.addPhase<const G4Track*>(nam,false)).get(),func);
+      //&PH::call<const G4Track*>);
+    }
+    else if ( nam == "StackingAction/newStage" )  {
       kernel.stackingAction().callAtNewStage((p=kernel.addPhase<void>(nam,false)).get(),&PH::call);
-    else if ( nam == "StackingAction/prepare" )
+    }
+    else if ( nam == "StackingAction/prepare" )  {
       kernel.stackingAction().callAtPrepare((p=kernel.addPhase<void>(nam,false)).get(),&PH::call);
-    else if ( nam == "SteppingAction" )
-      kernel.steppingAction().call((p=kernel.addPhase<const G4Step*>(nam)).get(),
-				   &PH::call<const G4Step*,G4SteppingManager*>);
-    else if ( nam == "GeneratorAction/primaries" )
-      kernel.generatorAction().call((p=kernel.addPhase<G4Event*>(nam)).get(),
-				    &PH::call<G4Event*>);
+    }
+    else if ( nam == "SteppingAction" )  {
+      void (Geant4ActionPhase::*func)(const G4Step*,G4SteppingManager*) = &Geant4ActionPhase::call;
+      kernel.steppingAction().call((p=kernel.addPhase<const G4Step*>(nam)).get(),func);
+      //&PH::call<const G4Step*,G4SteppingManager*>);
+    }
+    else if ( nam == "GeneratorAction/primaries" )  {
+      void (Geant4ActionPhase::*func)(G4Event*) = &Geant4ActionPhase::call;
+      kernel.generatorAction().call((p=kernel.addPhase<G4Event*>(nam)).get(),func);
+      //&PH::call<G4Event*>);
+    }
     else   {
       TypeName tn = TypeName::split(nam);
       DetElement det = lcdd.detector(tn.first);
-- 
GitLab