From c2f8e0cf3afcfdf82e67c54da3ce57a6af92a141 Mon Sep 17 00:00:00 2001
From: Elmar Ritsch <Elmar.Ritsch@cern.ch>
Date: Wed, 16 May 2012 09:59:22 +0200
Subject: [PATCH] implement ILorentzVectorGenerator
 (ISF_HepMC_Interfaces-00-00-04)

---
 .../IGenEventManipulator.h                    | 49 ++++++++++++++++++
 .../ISF_HepMC_Interfaces/IGenParticleFilter.h | 51 +++++++++++++++++++
 .../ILorentzVectorGenerator.h                 | 46 +++++++++++++++++
 .../ISF_HepMC_Interfaces/ITruthStrategy.h     | 43 ++++++++++++++++
 .../ISF_HepMC_Interfaces/cmt/requirements     | 16 ++++++
 5 files changed, 205 insertions(+)
 create mode 100644 Simulation/ISF/ISF_HepMC/ISF_HepMC_Interfaces/ISF_HepMC_Interfaces/IGenEventManipulator.h
 create mode 100644 Simulation/ISF/ISF_HepMC/ISF_HepMC_Interfaces/ISF_HepMC_Interfaces/IGenParticleFilter.h
 create mode 100644 Simulation/ISF/ISF_HepMC/ISF_HepMC_Interfaces/ISF_HepMC_Interfaces/ILorentzVectorGenerator.h
 create mode 100644 Simulation/ISF/ISF_HepMC/ISF_HepMC_Interfaces/ISF_HepMC_Interfaces/ITruthStrategy.h
 create mode 100644 Simulation/ISF/ISF_HepMC/ISF_HepMC_Interfaces/cmt/requirements

diff --git a/Simulation/ISF/ISF_HepMC/ISF_HepMC_Interfaces/ISF_HepMC_Interfaces/IGenEventManipulator.h b/Simulation/ISF/ISF_HepMC/ISF_HepMC_Interfaces/ISF_HepMC_Interfaces/IGenEventManipulator.h
new file mode 100644
index 00000000000..d7a721b282e
--- /dev/null
+++ b/Simulation/ISF/ISF_HepMC/ISF_HepMC_Interfaces/ISF_HepMC_Interfaces/IGenEventManipulator.h
@@ -0,0 +1,49 @@
+/*
+  Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration
+*/
+
+///////////////////////////////////////////////////////////////////
+// IGenEventManipulator.h, (c) ATLAS Detector software
+///////////////////////////////////////////////////////////////////
+
+#ifndef ISF_HEPMC_INTERFACES_IGENEVENTMANIPULATOR_H
+#define ISF_HEPMC_INTERFACES_IGENEVENTMANIPULATOR_H 1
+
+// Gaudi
+#include "GaudiKernel/IAlgTool.h"
+
+namespace HepMC {
+    class GenEvent;
+} 
+ 
+namespace ISF {
+ 
+  static const InterfaceID IID_IGenEventManipulator("IGenEventManipulator", 1, 0);
+   
+  /**
+   @class IGenEventManipulator
+       
+   Interface definition for the HepMC::GenEvent manipulator,
+   the provided GenEvent is hereby changed, i.e. geometrical transformations are applied to
+   all contained vertices.
+       
+   @author Andreas.Salzburger -at- cern.ch
+   */
+     
+  class IGenEventManipulator : virtual public IAlgTool {
+     public:
+     
+       /** Virtual destructor */
+       virtual ~IGenEventManipulator(){}
+
+       /** AlgTool interface methods */
+       static const InterfaceID& interfaceID() { return IID_IGenEventManipulator; }
+       
+       /** Returns the Particle Stack, should register truth */
+       virtual StatusCode manipulate(HepMC::GenEvent& ge) = 0;
+       
+  };
+
+} // end of namespace
+
+#endif // ISF_HEPMC_INTERFACES_IGENEVENTMANIPULATOR_H
diff --git a/Simulation/ISF/ISF_HepMC/ISF_HepMC_Interfaces/ISF_HepMC_Interfaces/IGenParticleFilter.h b/Simulation/ISF/ISF_HepMC/ISF_HepMC_Interfaces/ISF_HepMC_Interfaces/IGenParticleFilter.h
new file mode 100644
index 00000000000..54adad8b4c8
--- /dev/null
+++ b/Simulation/ISF/ISF_HepMC/ISF_HepMC_Interfaces/ISF_HepMC_Interfaces/IGenParticleFilter.h
@@ -0,0 +1,51 @@
+/*
+  Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration
+*/
+
+///////////////////////////////////////////////////////////////////
+// IGenParticleFilter.h, (c) ATLAS Detector software
+///////////////////////////////////////////////////////////////////
+
+#ifndef ISF_HEPMC_INTERFACES_IGENPARTICLEFILTER_H
+#define ISF_HEPMC_INTERFACES_IGENPARTICLEFILTER_H 1
+
+// Gaudi
+#include "GaudiKernel/IAlgTool.h"
+ 
+// Simulation includes
+#include "ISF_Event/SimSvcID.h" 
+
+namespace HepMC {
+    class GenParticle;
+} 
+ 
+namespace ISF {
+ 
+  static const InterfaceID IID_IGenParticleFilter("IGenParticleFilter", 1, 0);
+   
+  /**
+   @class IGenParticleFilter
+      
+   Interface definition for HepMC::GenParticle filter,
+   these filters should be primarily be used in the stack filling process      
+       
+   @author Andreas.Salzburger -at- cern.ch
+   */
+     
+  class IGenParticleFilter : virtual public IAlgTool {
+     public:
+     
+       /** Virtual destructor */
+       virtual ~IGenParticleFilter(){}
+
+       /** AlgTool interface methods */
+       static const InterfaceID& interfaceID() { return IID_IGenParticleFilter; }
+       
+       /** Returns a boolean if the particle has passed or not */
+       virtual bool pass(const HepMC::GenParticle& particle) const = 0;
+       
+  };
+
+} // end of namespace
+
+#endif // ISF_HEPMC_INTERFACES_IGENPARTICLEFILTER_H
diff --git a/Simulation/ISF/ISF_HepMC/ISF_HepMC_Interfaces/ISF_HepMC_Interfaces/ILorentzVectorGenerator.h b/Simulation/ISF/ISF_HepMC/ISF_HepMC_Interfaces/ISF_HepMC_Interfaces/ILorentzVectorGenerator.h
new file mode 100644
index 00000000000..f104e674097
--- /dev/null
+++ b/Simulation/ISF/ISF_HepMC/ISF_HepMC_Interfaces/ISF_HepMC_Interfaces/ILorentzVectorGenerator.h
@@ -0,0 +1,46 @@
+/*
+  Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration
+*/
+
+///////////////////////////////////////////////////////////////////
+// ILorentzVectorGenerator.h, (c) ATLAS Detector software
+///////////////////////////////////////////////////////////////////
+
+#ifndef ISF_HEPMC_INTERFACES_ILORENTZVECTORGENERATOR_H
+#define ISF_HEPMC_INTERFACES_ILORENTZVECTORGENERATOR_H 1
+
+// Gaudi
+#include "GaudiKernel/IAlgTool.h"
+ 
+// forward declarations
+namespace CLHEP {
+  class HepLorentzVector;
+}
+
+namespace ISF {
+ 
+  static const InterfaceID IID_ILorentzVectorGenerator("ILorentzVectorGenerator", 1, 0);
+   
+  /**
+   @class ILorentzVectorGenerator
+      
+   Interface definition for an AthenaTool creating a HepLorentzVector
+
+   @author Elmar.Ritsch -at- cern.ch
+   */
+     
+  class ILorentzVectorGenerator : virtual public IAlgTool {
+     public:
+       /** Virtual destructor */
+       virtual ~ILorentzVectorGenerator(){}
+
+       /** AlgTool interface methods */
+       static const InterfaceID& interfaceID() { return IID_ILorentzVectorGenerator; }
+       
+       /** Returns a boolean if the particle has passed or not */
+       virtual CLHEP::HepLorentzVector* generate() = 0;
+  };
+
+} // end of namespace
+
+#endif // ISF_HEPMC_INTERFACES_ILORENTZVECTORGENERATOR_H
diff --git a/Simulation/ISF/ISF_HepMC/ISF_HepMC_Interfaces/ISF_HepMC_Interfaces/ITruthStrategy.h b/Simulation/ISF/ISF_HepMC/ISF_HepMC_Interfaces/ISF_HepMC_Interfaces/ITruthStrategy.h
new file mode 100644
index 00000000000..a11ab4cf7e0
--- /dev/null
+++ b/Simulation/ISF/ISF_HepMC/ISF_HepMC_Interfaces/ISF_HepMC_Interfaces/ITruthStrategy.h
@@ -0,0 +1,43 @@
+/*
+  Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration
+*/
+
+///////////////////////////////////////////////////////////////////
+// ITruthStrategy.h, (c) ATLAS Detector software
+///////////////////////////////////////////////////////////////////
+
+#ifndef ISF_HEPMC_INTERFACES_ITRUTHSTRATEGY_H
+#define ISF_HEPMC_INTERFACES_ITRUTHSTRATEGY_H 1
+
+// Gaudi
+#include "GaudiKernel/IAlgTool.h"
+ 
+// forward declarations
+namespace HepMC {
+  class GenVertex;
+}
+namespace ISF {
+  class ITruthIncident;
+
+  static const InterfaceID IID_ITruthStrategy("ITruthStrategy", 1, 0);
+   
+  /**
+   @class ITruthStrategy
+      
+   @TODO: class description
+       
+   @author Elmar.Ritsch -at- cern.ch
+   */
+     
+  class ITruthStrategy : virtual public IAlgTool {
+    public:
+      /** AlgTool interface methods */
+      static const InterfaceID& interfaceID() { return IID_ITruthStrategy; }
+      
+      /** true if the ITruthStrategy implementation applies to the given ITruthIncident */
+      virtual bool pass( const ITruthIncident& incident) const = 0;
+  };
+
+} // end of namespace
+
+#endif // ISF_HEPMC_INTERFACES_ITRUTHSTRATEGY_H
diff --git a/Simulation/ISF/ISF_HepMC/ISF_HepMC_Interfaces/cmt/requirements b/Simulation/ISF/ISF_HepMC/ISF_HepMC_Interfaces/cmt/requirements
new file mode 100644
index 00000000000..6678f4e10ad
--- /dev/null
+++ b/Simulation/ISF/ISF_HepMC/ISF_HepMC_Interfaces/cmt/requirements
@@ -0,0 +1,16 @@
+package ISF_HepMC_Interfaces
+author <Andreas.Salzburger@cern.ch>
+
+manager Andreas Salzburger <Andreas.Salzburger@cern.ch>
+manager Elmar Ritsch <Elmar.Ritsch@cern.ch>
+manager Wolfgang Lukas <Wolfgang.Lukas@cern.ch>
+
+public
+use  AtlasPolicy                AtlasPolicy-*                   
+use  GaudiInterface             GaudiInterface-*        External
+use  ISF_Event                  ISF_Event-*             Simulation/ISF/ISF_Core
+end_public
+
+private
+#macro cppdebugflags '$(cppdebugflags_s)'
+#macro_remove componentshr_linkopts "-Wl,-s"
-- 
GitLab