diff --git a/Reconstruction/VKalVrt/GNNVertexConstructor/GNNVertexConstructor/GNNVertexConstructorAlg.h b/Reconstruction/VKalVrt/GNNVertexConstructor/GNNVertexConstructor/GNNVertexConstructorAlg.h
index 3d5dab4c2aa9f84c64436053f5190f2132f2892e..ed6e8764df360ba0b2ca3440f3115adfa730d717 100644
--- a/Reconstruction/VKalVrt/GNNVertexConstructor/GNNVertexConstructor/GNNVertexConstructorAlg.h
+++ b/Reconstruction/VKalVrt/GNNVertexConstructor/GNNVertexConstructor/GNNVertexConstructorAlg.h
@@ -56,8 +56,8 @@ namespace Rec {
       SG::ReadDecorHandleKey<xAOD::JetContainer>               m_jetReadKey{this, "jetDecoReadKey", "", "Jet GNN Deco Read Key"};
       
       /// Gaudi Props
-      Gaudi::Property<std::string> m_deco_suffix{this, "suffix", "", "Suffix to add after the decoration"};
-      Gaudi::Property<std::string> m_jetContainerName{this, "JetContainerName", "AntiKt4EMPFlowJets", "Jet Container Name"};
+      //Gaudi::Property<std::string> m_deco_suffix{this, "suffix", "", "Suffix to add after the decoration"};
+      //Gaudi::Property<std::string> m_jetContainerName{this, "JetContainerName", "AntiKt4EMPFlowJets", "Jet Container Name"};
       
       //GNN Properties
       GNNProperties m_props;
diff --git a/Reconstruction/VKalVrt/GNNVertexConstructor/GNNVertexConstructor/GNNVertexConstructorTool.h b/Reconstruction/VKalVrt/GNNVertexConstructor/GNNVertexConstructor/GNNVertexConstructorTool.h
index 15b210d0fd258097d6672e9f14643b7894a9fc47..19b744133b0a3eb466aa02d640061c2b909d1d11 100644
--- a/Reconstruction/VKalVrt/GNNVertexConstructor/GNNVertexConstructor/GNNVertexConstructorTool.h
+++ b/Reconstruction/VKalVrt/GNNVertexConstructor/GNNVertexConstructor/GNNVertexConstructorTool.h
@@ -87,21 +87,9 @@ namespace Rec {
       
       StatusCode initKey(const std::string&, SG::WriteDecorHandleKey<xAOD::TrackParticleContainer> &decokey) const;
       
-      unsigned int addTwoNumbers( const unsigned int & NoOne, const unsigned int & NoTwo) const final;                    //can be removed later
-      virtual StatusCode decorateTracks( const xAOD::TrackParticleContainer* trkCont, const EventContext& ctx ) const;    //can be removed later
-      virtual StatusCode readDecorTracks( const xAOD::TrackParticleContainer* trkCont, const EventContext& ctx ) const;   //can be removed later
-      
-      
       virtual StatusCode readDecorJet( const xAOD::JetContainer* jetCont, const EventContext& ctx ) const; 
-      
-                 
-      //virtual StatusCode vrtFitter( std::multimap<int, ElementLink<DataVector<xAOD::TrackParticle_v1 > >  > & vrt ) const;
-      
       virtual StatusCode GNNDecoJet( const xAOD::JetContainer* jetCont, const EventContext& ctx ) const;
       
-      
-      
-      
       //Read and Write Decor Handles
       SG::WriteDecorHandleKey<xAOD::TrackParticleContainer>  m_decorTrackKey{ this, "TrackDecorKey", ".passGNN", "if track passes some GNN criteria"};
       SG::ReadDecorHandleKey<xAOD::TrackParticleContainer>   m_decorReadKey{ this, "TrackReadKey", "", "read tracks that pass GNN criteria"};
@@ -192,20 +180,43 @@ namespace Rec {
 
   //Making Histograms
   
-  TH1F* m_vertex_pos{};
-/*  struct DevTuple;
+  //TH1F* m_vertex_pos{};
+  double m_w_1{};
+  struct DevTuple;
   struct Hists{
     StatusCode book (ITHistSvc& histSvc, const std::string& histDir);
     TTree* m_tuple{};
     DevTuple*  m_curTup;
     
-    TH2F* m_vertex_chi{};
+    TH1F* m_vertex_chi2{};
     TH1F* m_vertex_mass{};
     TH1F* m_vertex_pT{};
+    TH1F* m_vertex_d0{};
+    TH1F* m_vertex_r{};
+    TH1F* m_vertex_chiTrk{};
+    TH1F* m_vertex_charge{};
   };
-   std::unique_ptr<Hists> m_h;
-
-*/
+  
+    std::unique_ptr<Hists> m_h;
+    
+    
+    
+    std::string m_calibFileName;
+    
+    Hists& getHists() const;
+
+struct DevTuple 
+     { 
+       static constexpr int maxNTrk=100;
+       static constexpr int maxNVrt=100;
+       float   chi2;
+       float   mass;
+       float   pT;
+       float   d0;
+       float   r;
+       float   chiTrk;
+       float   charge;
+     };
     
   };
 }
diff --git a/Reconstruction/VKalVrt/GNNVertexConstructor/GNNVertexConstructor/IGNNVertexConstructorInterface.h b/Reconstruction/VKalVrt/GNNVertexConstructor/GNNVertexConstructor/IGNNVertexConstructorInterface.h
index 856f38abe323c529ed7b4610cd3f17102d38c1b9..ed068bd54b79c3fbc8caf13c476ff8f9a2b217c2 100644
--- a/Reconstruction/VKalVrt/GNNVertexConstructor/GNNVertexConstructor/IGNNVertexConstructorInterface.h
+++ b/Reconstruction/VKalVrt/GNNVertexConstructor/GNNVertexConstructor/IGNNVertexConstructorInterface.h
@@ -24,12 +24,8 @@ namespace Rec {
     
     
   */
-      virtual unsigned int addTwoNumbers( const unsigned int & NoOne, const unsigned int & NoTwo) const =0;
-      virtual StatusCode decorateTracks( const xAOD::TrackParticleContainer* trkCont, const EventContext& ctx ) const = 0;
-      virtual StatusCode readDecorTracks( const xAOD::TrackParticleContainer* trkCont, const EventContext& ctx ) const = 0;
       virtual StatusCode readDecorJet( const xAOD::JetContainer* jetCont, const EventContext& ctx ) const = 0;
       virtual StatusCode GNNDecoJet( const xAOD::JetContainer* jetCont, const EventContext& ctx ) const = 0;
-      //virtual StatusCode vrtFitter( std::multimap<int, ElementLink<DataVector<xAOD::TrackParticle_v1 > >  > & vrt ) const = 0;
       
   };
 
diff --git a/Reconstruction/VKalVrt/GNNVertexConstructor/python/GNNVC_dev_job_options.py b/Reconstruction/VKalVrt/GNNVertexConstructor/python/GNNVC_dev_job_options.py
index 27b459c0b6157cec90ba20cc1aa8b3d98a3facb2..cee90fdec6364c111d45e7d6efb3d0390b7abb5b 100644
--- a/Reconstruction/VKalVrt/GNNVertexConstructor/python/GNNVC_dev_job_options.py
+++ b/Reconstruction/VKalVrt/GNNVertexConstructor/python/GNNVC_dev_job_options.py
@@ -15,7 +15,8 @@ inputDir = "/tank/awharton/ForLME/Data/mc21_13p6TeV.601237.PhPy8EG_A14_ttbar_hda
 #inputDir = "/home/atlas/lukem/QT-SecVtxTool/data/data22_13p6TeV.00427884.physics_Main.deriv.DAOD_PHYS.r13928_p5279_p5514/"
 #inputDir = "/home/atlas/lukem/QT-SecVtxTool/data/data22_13p6TeV.00427882.physics_Main.deriv.DAOD_PHYS.r13928_p5279_p5514/"
 #inputDir = "/cvmfs/atlas.cern.ch/repo/tutorials/asg/cern-jun2022/mc21_13p6TeV.601229.PhPy8EG_A14_ttbar_hdamp258p75_SingleLep.deriv.DAOD_PHYS.e8357_s3802_r13508_p5057"
-maxEvents = 4
+maxEvents = 6
+
 
 ##---
 
@@ -76,34 +77,51 @@ def main():
     ##---
 
     from DerivationFrameworkCore.SlimmingHelper import SlimmingHelper
-    TRUTH0SlimmingHelper = SlimmingHelper("TRUTH0SlimmingHelper", NamesAndTypes = flags.Input.TypedCollections, ConfigFlags = flags)
-    TRUTH0SlimmingHelper.AppendToDictionary = {'EventInfo':'xAOD::EventInfo','EventInfoAux':'xAOD:EventAuxInfo',
+    from AthenaConfiguration.Enums import MetadataCategory
+    from xAODMetaDataCnv.InfileMetaDataConfig import SetupMetaDataForStreamCfg
+
+    
+    GNNSlimmingHelper = SlimmingHelper("GNNSlimmingHelper", NamesAndTypes = flags.Input.TypedCollections, ConfigFlags = flags)
+    
+    GNNSlimmingHelper.AppendToDictionary = {'EventInfo':'xAOD::EventInfo','EventInfoAux':'xAOD:EventAuxInfo',
                                                'TruthEvents':'xAOD::TruthEventContainer','TruthEventsAux':'xAOD::TruthEventAuxContainer',
                                                'TruthVertices':'xAOD::TruthVertexContainer','TruthVerticesAux':'xAOD::TruthVertexAuxContainer',
                                                'TruthParticles':'xAOD::TruthParticleContainer','TruthParticlesAux':'xAOD::TruthParticleAuxContainer',
                                                'AntiKt4EMPFlowJets':'xAOD::JetContainer', 'AntiKt4EMPFlowJetsAux': 'xAOD::JetAuxContainer',
                                                'BTagging':'xAOD::BTaggingContainer', 'BTaggingAux': 'xAOD::BTaggingAuxContainer',
                                                'TrackParticle':'xAOD::TrackParticleContainer', 'TrackParticleAux': 'xAOD::TrackParticleAuxContainer',
-                                               'VertexContainer':'xAOD::VertexContainer', 'VertexContainerAux':'xAOD::VertexAuxContainer'} 
+                                               'GNNVertex':'xAOD::VertexContainer', 'GNNVertexAux':'xAOD::VertexAuxContainer'} 
 
-    TRUTH0SlimmingHelper.AllVariables = [ 'EventInfo',
-                                          'TruthEvents', 
-                                          'TruthVertices',
-                                          'TruthParticles',
-                                          'AntiKt4EMPFlowJets',
-                                          'BTagging',
-                                          'TrackParticle',
-                                          'Vertex']
+    GNNSlimmingHelper.AllVariables = [  'EventInfo',
+                                        'TruthEvents', 
+                                        'TruthVertices',
+                                        'TruthParticles',
+                                        'AntiKt4EMPFlowJets',
+                                        'BTagging',
+                                        'TrackParticle',
+                                        'GNNVertex']
 
     # Metadata
     #TRUTH0MetaDataItems = [ "xAOD::TruthMetaDataContainer#TruthMetaData", "xAOD::TruthMetaDataAuxContainer#TruthMetaDataAux." ]
 
     # Create output stream 
     from OutputStreamAthenaPool.OutputStreamConfig import OutputStreamCfg
-    TRUTH0ItemList = TRUTH0SlimmingHelper.GetItemList()
-    TRUTH0ItemList+=["xAOD::TrackParticleContainer#DecoratedTrackParticles","xAOD::TrackParticleContainer#DecoratedTrackParticlesAux."]
-    TRUTH0ItemList+=["xAOD::VertexContainer#GNNvertexContainer", "xAOD::VertexContainer#GNNvertexContainerAux"]
-    acc.merge(OutputStreamCfg(flags, "GNNVertexOutputDecoNew", ItemList=TRUTH0ItemList))
+    
+    #GNNItemList = GNNSlimmingHelper.GetItemList()
+    
+    #GNNItemList+=["xAOD::TrackParticleContainer#DecoratedTrackParticles","xAOD::TrackParticleContainer#DecoratedTrackParticlesAux."]
+    
+    StaticContent=[]
+    StaticContent+=["xAOD::VertexContainer#GNNVertex."]
+    StaticContent+=["xAOD::VertexAuxContainer#GNNVertexAux."]
+    
+    GNNSlimmingHelper.StaticContent=StaticContent
+    
+    GNNItemList = GNNSlimmingHelper.GetItemList()
+    
+    acc.merge(OutputStreamCfg(flags, "GNNVertex", ItemList=GNNItemList))
+    #acc.merge(SetupMetaDataForStreamCfg(flags, "GNNVertex", createMetadata=[MetadataCategory.CutFlowMetaData]))
+
 
 
     acc.printConfig(withDetails=True, summariseProps=True)
@@ -111,6 +129,7 @@ def main():
     
     print (status)
 
+    return(acc)
 ##---
 
 if "__main__" == __name__:
diff --git a/Reconstruction/VKalVrt/GNNVertexConstructor/python/GNNVertexConstructorToolConfig.py b/Reconstruction/VKalVrt/GNNVertexConstructor/python/GNNVertexConstructorToolConfig.py
index 15fbb21b64a066b090e21eef4dac0cc99210f7cd..a475a8c04db9f572c037c0100ccff462d067b0f9 100644
--- a/Reconstruction/VKalVrt/GNNVertexConstructor/python/GNNVertexConstructorToolConfig.py
+++ b/Reconstruction/VKalVrt/GNNVertexConstructor/python/GNNVertexConstructorToolConfig.py
@@ -15,8 +15,8 @@ def GNNVertexConstructorToolCfg(flags, name="LMEdevTool", **kwargs):
     gnnTool = acc.getPrimaryAndMerge(
             GNNToolCfg(
                 flags,
-                NNFile="../network.onnx",
-                trackLinkType="IPARTICLE",  #Either IPARTICLE or  TRACK_PARTICLE
+                NNFile           ="../network.onnx",
+                trackLinkType    ="IPARTICLE",  #Either IPARTICLE or  TRACK_PARTICLE
                 variableRemapping={"BTagTrackToJetAssociator" : "GhostTrack"},
                 )
     ) 
diff --git a/Reconstruction/VKalVrt/GNNVertexConstructor/src/GNNVertexConstructorAlg.cxx b/Reconstruction/VKalVrt/GNNVertexConstructor/src/GNNVertexConstructorAlg.cxx
index 246e6215d0a42a18ce278e0009f79f5cd58fbbfc..10080f31c65df8c188b7b698ed1cb2f4ec9e09a3 100644
--- a/Reconstruction/VKalVrt/GNNVertexConstructor/src/GNNVertexConstructorAlg.cxx
+++ b/Reconstruction/VKalVrt/GNNVertexConstructor/src/GNNVertexConstructorAlg.cxx
@@ -73,6 +73,7 @@ namespace Rec {
     
    
     ATH_CHECK(m_VtxTool->GNNDecoJet(jetsDecoHandle.ptr(), ctx));
+    ATH_MSG_DEBUG("Test debug");
     ATH_CHECK(m_VtxTool->readDecorJet(jetsDecoHandle.ptr(), ctx));
     //ATH_CHECK(m_VtxTool->vrtFitter(inTracks.ptr(), ctx)); 
     
diff --git a/Reconstruction/VKalVrt/GNNVertexConstructor/src/GNNVertexConstructorTool.cxx b/Reconstruction/VKalVrt/GNNVertexConstructor/src/GNNVertexConstructorTool.cxx
index d1e3820e3fc812906334a89e52bcb6a65452cc75..f516fb01e9c7afaf638b50b8b7846970b805dafd 100644
--- a/Reconstruction/VKalVrt/GNNVertexConstructor/src/GNNVertexConstructorTool.cxx
+++ b/Reconstruction/VKalVrt/GNNVertexConstructor/src/GNNVertexConstructorTool.cxx
@@ -19,6 +19,8 @@
 #include "MVAUtils/BDT.h" 
 #include "VxSecVertex/VxSecVertexInfo.h"
 #include "boost/graph/bron_kerbosch_all_cliques.hpp"
+#include "PathResolver/PathResolver.h"
+
 
 
 //#include "alorgithm"
@@ -30,12 +32,12 @@ namespace Rec {
     : AthAlgTool(type,name,parent),
       m_VrtFit("Trk::TrkVKalVrtFitter/VertexFitterTool",this),
       m_thePV(nullptr),
-      m_vertex_pos (nullptr)      
+      m_calibFileName("myGNNDecoOutputNew.pool.root")
+      //m_vertex_chi2 (nullptr)      
       
     //,      m_fillHist(true)
       
     {
-
       declareInterface< IGNNVertexConstructorInterface >(this);
       
       declareProperty("ReadKey", m_decorReadKey="InDetTrackParticles.passGNN");
@@ -46,7 +48,8 @@ namespace Rec {
       declareProperty("GNNTool",m_gnn_Tool, "The GNN Tool");
       declareProperty("VertexFitterTool", m_VrtFit, "The vertex fitting tool");
       
-      //declareProperty("
+      declareProperty("calibFileName", m_calibFileName, " GNN vertex file" );
+
       //m_instanceName="Test-Plot";
       
       ATH_MSG_DEBUG("GNNVertexConstructorTool constructor called");
@@ -55,12 +58,10 @@ namespace Rec {
      /* Destructor */
     
     GNNVertexConstructorTool::~GNNVertexConstructorTool(){
-
       ATH_MSG_DEBUG("GNNVertexConstructorTool destructor called");
     }
 
-//Initialize the decoration key
-
+//--------Initialize the decoration key
     StatusCode GNNVertexConstructorTool::initKey(const std::string &containerKey,
                               SG::WriteDecorHandleKey<xAOD::TrackParticleContainer> &decokey) const {
      
@@ -71,7 +72,7 @@ namespace Rec {
      return StatusCode::SUCCESS;
     }
 
-//Initialize 
+//---------Initialize 
     StatusCode GNNVertexConstructorTool::initialize(){
 
       ATH_MSG_DEBUG("GNNVertexConstructor Tool in initialize()");
@@ -93,36 +94,54 @@ namespace Rec {
       //ATH_CHECK(m_jetContainerKey.initialize());
       ATH_CHECK( m_eventInfoKey.initialize());
       
-
-/*      ITHistSvc*     hist_root=0;
+      //ATH_CHECK( book (TH1F("Vertex_chi2", "Vertex_chi2", 20, 0, 500)));
+      
+  
+      ITHistSvc*     hist_root=0;
       StatusCode sc = service( "THistSvc", hist_root); 
+      if( sc.isFailure() )  ATH_MSG_DEBUG("Could not find THistSvc service");
+       else                  ATH_MSG_DEBUG("GNNCONST-Tool Histograms found");
       std::string histDir;
-      histDir="GNNVertex/";
+      histDir="/myGNNVertex/";
       
       m_h = std::make_unique<Hists>();
       ATH_CHECK( m_h->book (*hist_root, histDir) );
+      
+      m_w_1 = 1.;
+      
+/*           std::string rootFilePath = PathResolver::find_calib_file("GNNBuild/run/"+m_calibFileName);
+     TFile* rootFile = TFile::Open(rootFilePath.c_str(), "READ");    
+     if (!rootFile) {
+        ATH_MSG_FATAL("Could not retrieve root file: " << m_calibFileName);
+        return StatusCode::FAILURE;
+     }
+     TTree * training = (TTree*)rootFile->Get("BDT");
 */
-
-
-
-  
-  
+      
+      
       return StatusCode::SUCCESS;
     }
     
     
-/*    //Histograms
+//------------Histograms
     StatusCode GNNVertexConstructorTool::Hists::book (ITHistSvc& histSvc,
                                                   const std::string& histDir)
   {
     
-    m_vertex_pos=new TH2F ("vertex_pos", "vertex_pos", 10, 0., 500, 10, 0., 1000);
+    m_vertex_chi2=new TH1F("Vertex_chi2", "Vertex_chi2", 20, 0, 500);
     
-    ATH_CHECK( histSvc.regHist(histDir+"vertex_pos", m_vertex_pos) );
-  }*/
-  
-  
-  
+    ATH_CHECK( histSvc.regHist(histDir+"vertex_chi2", m_vertex_chi2) );
+    
+    m_tuple = new TTree("GNNVertices","GNNVertices");
+    
+    ATH_CHECK( histSvc.regTree(histDir, m_tuple) );
+    
+    m_curTup=new DevTuple();
+    m_tuple->Branch("Chi2",       &m_curTup->chi2,    "Chi2/I");
+
+
+    return StatusCode::SUCCESS;
+  }
   
 //Finalize     
     StatusCode GNNVertexConstructorTool::finalize(){
@@ -132,79 +151,30 @@ namespace Rec {
       return StatusCode::SUCCESS;
     }
 
-//Will be called in the excute section in the Algorithm cxx file 
 
-//Dummy Tool that adds 2 numbers
-    unsigned int GNNVertexConstructorTool::addTwoNumbers( const unsigned int & NoOne, const unsigned int & NoTwo) const {
-      unsigned int sum=NoOne+NoTwo;
-      return sum;
-    }
-
-
-//Decoration Tool that adds a decoration to the container 
-    StatusCode GNNVertexConstructorTool::decorateTracks( const xAOD::TrackParticleContainer* trkCont, const EventContext& ctx ) const {
-
-      ATH_MSG_DEBUG("GNNVertexConstructor Tool decorating tracks");
-
-      int sum = trkCont->size();
-      ATH_MSG_DEBUG("Size is = " << sum );      
-
-      SG::WriteDecorHandle<xAOD::TrackParticleContainer, std::string> decorTrackKey(m_decorTrackKey, ctx );
-
-      for ( auto track : *trkCont ){
-
-        float pt = track->pt()/1000.;
-
-        if(pt > 150){
-    
-          ATH_MSG_DEBUG("Track pt is = " << pt );
-          ATH_MSG_DEBUG("Decorator added!!!!");
-          decorTrackKey( *track ) = "pass";
-
-        }
-      }
-
-      return StatusCode::SUCCESS;
-    }
-    
-    
-//Read a decoration tool from a Track Particle Container
-    StatusCode GNNVertexConstructorTool::readDecorTracks( const xAOD::TrackParticleContainer* trkCont, const EventContext& ctx ) const {
-    
-    
-      ATH_MSG_DEBUG("GNNVertexConstructor Tool reading decorations from a container");
-      
-      SG::ReadDecorHandle<xAOD::TrackParticleContainer, std::string> readTrackKey(m_decorReadKey, ctx);
-      
-      for ( auto track : *trkCont ){
-
-        float pt = track->pt()/1000.;
-
-        if(pt > 150){
-          ATH_MSG_DEBUG("Contains a decorator");
-          ATH_MSG_DEBUG("Decorator is " << readTrackKey( *track ));
-        }
-       
-      
-      }
-      return StatusCode::SUCCESS;
-    }
-//Decorating the jets using the GNN
+//-------------Decorating the jets using the GNN
     StatusCode GNNVertexConstructorTool::GNNDecoJet ( const xAOD::JetContainer* jetCont, const EventContext& ctx ) const{
     
     ATH_MSG_DEBUG("Using GNN within Tool");
     
+    ATH_MSG_DEBUG(jetCont->size());
     // apply the GNNTool to the jets
-    for (auto jet : *jetCont)
+    if (jetCont->size()!=0){
+      ATH_MSG_DEBUG(jetCont->size() << "did it work");
+      for (auto jet : *jetCont)
+      {
+        //ATH_MSG_INFO("Jet size " << (*jet)->size());
+        m_gnn_Tool->decorate(*jet);
+      }
+    }
+    else
     {
-      m_gnn_Tool->decorate(*jet);
+    ATH_MSG_DEBUG("No Jets");
     }
-
-    
     return StatusCode::SUCCESS;
     }
     
-//Read Decoration from a Jet Container
+//------------Read Decoration from a Jet Container
     StatusCode GNNVertexConstructorTool::readDecorJet ( const xAOD::JetContainer* jetCont, const EventContext& ctx ) const{
     
     //ATH_MSG_DEBUG("Reading a Decor in Jet");
@@ -215,19 +185,18 @@ namespace Rec {
     
    
     //Create a map of track links and track vertexing values (Using mutlimap)
-
     std::multimap<int, ElementLink<DataVector<xAOD::TrackParticle_v1 > >  > VertexMap;    //empty Multi Vertex Map Container
     
-    
-    
     // Create the new container and its auxiliary store.
     auto GNNvertexContainer      = std::make_unique<xAOD::VertexContainer>();
     auto GNNvertexAuxContainer   = std::make_unique<xAOD::AuxContainerBase>();
     GNNvertexContainer->setStore (GNNvertexAuxContainer.get()); //< Connect the two
 
+    //xAOD::VertexContainer* GNNvertexContainer = new xAOD::VertexContainer;
+    //xAOD::VertexAuxContainer* GNNvertexAuxContainer = new xAOD::VertexAuxContainer;
+    //GNNvertexContainer->setStore(GNNvertexAuxContainer);
 
-
-    
+   
     for (auto jet : *jetCont) {    //Loop over Jets
       VertexMap.clear();
       auto vertexCollection=readJetHandle_TV(*jet);
@@ -245,9 +214,9 @@ namespace Rec {
       //ATH_MSG_DEBUG("Printing Map");
       
       workVectorArrxAOD * tmpVectxAOD=new workVectorArrxAOD();
- //     tmpVectxAOD->inpTrk.resize(inpTrk.size());
-   //   tmpVectxAOD->inpTrk.resize(VertexMap.size());
-     // std::copy(inpTrk.begin(),inpTrk.end(), tmpVectxAOD->inpTrk.begin());
+//    tmpVectxAOD->inpTrk.resize(inpTrk.size());
+//    tmpVectxAOD->inpTrk.resize(VertexMap.size());
+//    std::copy(inpTrk.begin(),inpTrk.end(), tmpVectxAOD->inpTrk.begin());
       SG::ReadCondHandle<InDet::BeamSpotData> beamSpotHandle { m_beamSpotKey, ctx };
       tmpVectxAOD->beamX=beamSpotHandle->beamPos().x();
       tmpVectxAOD->beamY=beamSpotHandle->beamPos().y();
@@ -256,26 +225,26 @@ namespace Rec {
       tmpVectxAOD->tanBeamTiltY=tan(beamSpotHandle->beamTilt(1));
       
       
-      
       auto GNNVTX=GNNVertexConstructorTool::vrtFitter(tmpVectxAOD, VertexMap, ctx, GNNvertexContainer);
       
       delete tmpVectxAOD;
-      
-      
-    
+        
     }
     
     ATH_MSG_INFO("Vertex Container " << GNNvertexContainer->size());
     StatusCode sc;
       
+      
     sc= (evtStore()->record (GNNvertexContainer.release(), "GNNVtxs"));
     sc= (evtStore()->record (GNNvertexAuxContainer.release(), "GNNVtxsAux."));
-   
+    
+    ATH_MSG_INFO("Container WRitten?");
+    
      return StatusCode::SUCCESS;
 
     }
     
-    //Vertex Fitting
+//--------Vertex Fitting
 
   std::vector<xAOD::Vertex*> GNNVertexConstructorTool::vrtFitter( workVectorArrxAOD * xAODwrk, 
                                                                   std::multimap<int, ElementLink<DataVector<xAOD::TrackParticle_v1 > >  > & vrt, 
@@ -287,43 +256,13 @@ namespace Rec {
     std::vector<xAOD::Vertex*>finalVertices(0);
     
     ATH_MSG_DEBUG("Added Vertexes 0= " << VtxCont->size());
-    
-         
-    
-    
-/*    xAOD::VertexContainer *TestVertexContainer( nullptr );
-    ATH_CHECK( evtStore()->retrieve( TestVertexContainer, "BTagging_AntiKt4EMPFlowSecVtx" ) );
-    
-    
-     
-    xAOD::TrackParticle *Test =new xAOD::TrackParticle;
-    ATH_MSG_DEBUG("GNNblah" );
-    //Test->setTime(0.5);
-    
-    xAOD::Vertex *GNNvertex = new xAOD::Vertex;
-    ATH_MSG_DEBUG("GNNblah 2" );
-    TestVertexContainer->emplace_back(GNNvertex);
-    
-    
-    GNNvertex->setX(59.6);
-    ATH_MSG_DEBUG(GNNvertex->x());
-    //GNNvertex->setVertexType(xAOD::VxType::SecVtx);
-    ATH_MSG_DEBUG("GNNblah 3" );*/
-    
-  /*  ATH_CHECK(evtStore()->retrieve( m_vertexTES, "PrimaryVertices"));
-    
-    if( sc.isFailure()  ||  !m_vertexTES ) {
-       ATH_MSG_WARNING("No xAOD vertex container found in TDS"); 
-       return StatusCode::SUCCESS;
-     }  
-     else {
-     }
-    
-    for (auto *vertex : *m_vertexTES ){
+       
+    /*for (auto *vertex : *m_vertexTES ){
       if( xAOD::VxType::PriVtx != vertex->vertexType() ) continue;
       
       m_thePV = vertex;
     }*/
+    
     std::unique_ptr<std::vector<WrkVrt>> wrkVrtSet = std::make_unique<std::vector<WrkVrt>>();
     //int inpNPart=xAODwrk->inpTrk.size();
     //int inpNPart=xAODwrk->vrt.size();
@@ -333,8 +272,6 @@ namespace Rec {
     
     StatusCode sc;
     
-    
-    
     xAODwrk->tmpListTracks.clear();
     auto lastKey = (vrt.end())->first;          //returns next value after last key - easier for "for loop"
     
@@ -344,19 +281,9 @@ namespace Rec {
         //Need at least 2 tracks to perform a fit
         auto elements = vrt.equal_range(k);
         for (auto i = elements.first; i != elements.second; ++i){        //printing the map 
-          //ATH_MSG_DEBUG(" test " << i->first << ": " << i->second << '\n');
           xAODwrk->listSelTracks.push_back(*(i->second));
-          
-          
           auto trkLink= i->second;
-          //ATH_MSG_DEBUG(*trkLink->type());
-          //GNNvertex->addTrackAtVertex(trkLink, 1.);
-          
           } 
-        
-    
-
-      
       
       sc =(m_VrtFit->VKalVrtFit(xAODwrk->listSelTracks, neutralPartDummy,
                                              newvrt.vertex,     newvrt.vertexMom, newvrt.vertexCharge, newvrt.vertexCov,
@@ -371,15 +298,26 @@ namespace Rec {
       
       
       //m_vertex_pos->Fill(newvrt.vertex[0]);
+      Hists& h = getHists();
+      h.m_tuple->Fill();
+      h.m_vertex_chi2->Fill(newvrt.chi2, m_w_1);
       
-      //hist("Vertex_chi2")->Fill(r, newvrt.chi2);
-      // Compatibility to the primary vertex.
+      
+//----------Compatibility to the primary vertex. 
+
       Amg::Vector3D vDist = newvrt.vertex ;// - m_thePV->position();
       
       double vPos=(vDist.x()*newvrt.vertexMom.Px()+vDist.y()*newvrt.vertexMom.Py()+vDist.z()*newvrt.vertexMom.Pz())/newvrt.vertexMom.Rho();
       
       xAOD::Vertex *GNNvertex = new xAOD::Vertex;
+      
+      
+     // xAOD::Vertex * tmpVertex = nullptr;
+
+      //tmpVertex = m_VrtFit->makeXAODVertex( newvrt.vertex, newvrt.chi2PerTrk, newvrt.trkAtVrt, newvrt.chi2, state );
+      
       VtxCont->emplace_back(GNNvertex);
+      
       GNNvertex->setVertexType(xAOD::VxType::SecVtx);
       GNNvertex->setPosition( newvrt.vertex);
       GNNvertex->setFitQuality(newvrt.chi2, 1);
@@ -389,13 +327,17 @@ namespace Rec {
       GNNvertex->auxdata<float>("vPos")      = vPos;
       GNNvertex->auxdata<bool> ("isFake")    = true;
       
-      ATH_MSG_DEBUG("Test 6");
-      
-      } 
-      
+      }  
     }
-   
     return finalVertices;
-  }    
+  } 
+  
+      GNNVertexConstructorTool::Hists&
+      GNNVertexConstructorTool::getHists() const
+      {
+        // We earlier checked that no more than one thread is being used.
+        Hists* h ATLAS_THREAD_SAFE = m_h.get();
+      return *h;
+  }   
 
 }  // end Rec namespace