diff --git a/Trigger/TrigT1/L1CaloFEX/L1CaloFEXSim/L1CaloFEXSim/jFEXFPGA.h b/Trigger/TrigT1/L1CaloFEX/L1CaloFEXSim/L1CaloFEXSim/jFEXFPGA.h
index 59f8ae5f3e971943fef0e2970e5328ab81526e47..16cfa7428ad5d7fb1232f43cd46686b0eb09113b 100644
--- a/Trigger/TrigT1/L1CaloFEX/L1CaloFEXSim/L1CaloFEXSim/jFEXFPGA.h
+++ b/Trigger/TrigT1/L1CaloFEX/L1CaloFEXSim/L1CaloFEXSim/jFEXFPGA.h
@@ -24,6 +24,7 @@
 #include "L1CaloFEXToolInterfaces/IjFEXsumETAlgo.h"
 #include "L1CaloFEXToolInterfaces/IjFEXmetAlgo.h"
 #include "L1CaloFEXToolInterfaces/IjFEXForwardJetsAlgo.h"
+#include "L1CaloFEXToolInterfaces/IjFEXForwardElecAlgo.h"
 #include "L1CaloFEXToolInterfaces/IjFEXPileupAndNoise.h"
 #include "CaloEvent/CaloCellContainer.h"
 #include "CaloIdentifier/CaloIdManager.h"
@@ -135,8 +136,7 @@ namespace LVL1 {
     ToolHandle<IjFEXsumETAlgo> m_jFEXsumETAlgoTool         {this, "jFEXsumETAlgoTool"    , "LVL1::jFEXsumETAlgo"    , "Tool that runs the jFEX sumET algorithm"};
     ToolHandle<IjFEXmetAlgo> m_jFEXmetAlgoTool             {this, "jFEXmetAlgoTool"      , "LVL1::jFEXmetAlgo"      , "Tool that runs the jFEX met algorithm"};
     ToolHandle<IjFEXForwardJetsAlgo> m_jFEXForwardJetsAlgoTool {this, "jFEXForwardJetsAlgoTool"      , "LVL1::jFEXForwardJetsAlgo"      , "Tool that runs the jFEX FCAL Jets algorithm"};
-
-    //ToolHandle<IjFEXegAlgo> m_jFEXegAlgoTool {this, "jFEXegAlgoTool", "LVL1::jFEXegAlgo", "Tool that runs the jFEX e/gamma algorithm"};
+    ToolHandle<IjFEXForwardElecAlgo> m_jFEXForwardElecAlgoTool {this, "jFEXForwardElecAlgoTool"      , "LVL1::jFEXForwardElecAlgo"      , "Tool that runs the jFEX FCAL Electrons algorithm"};
     ToolHandle<IjFEXPileupAndNoise> m_jFEXPileupAndNoiseTool {this, "jFEXPileupAndNoiseTool", "LVL1::jFEXPileupAndNoise", "Tool that applies Pileup and Noise"};
     
     int getTTowerET_SG(unsigned int TTID);
diff --git a/Trigger/TrigT1/L1CaloFEX/L1CaloFEXSim/L1CaloFEXSim/jFEXForwardElecAlgo.h b/Trigger/TrigT1/L1CaloFEX/L1CaloFEXSim/L1CaloFEXSim/jFEXForwardElecAlgo.h
new file mode 100644
index 0000000000000000000000000000000000000000..1ca8a0451ab928eb482ba0fddf33aff2af0d8ea8
--- /dev/null
+++ b/Trigger/TrigT1/L1CaloFEX/L1CaloFEXSim/L1CaloFEXSim/jFEXForwardElecAlgo.h
@@ -0,0 +1,70 @@
+/*
+  Copyright (C) 2002-2021 CERN for the benefit of the ATLAS collaboration
+*/
+//***************************************************************************
+//		jFEXForwardElecAlgo - Algorithm for Forward Electron Algorithm in jFEX
+//                              -------------------
+//     begin                : 16 11 2021
+//     email                : Sergi.Rodriguez@cern.ch
+//***************************************************************************
+
+#ifndef jFEXForwardElecAlgo_H
+#define jFEXForwardElecAlgo_H
+
+
+#include "AthenaBaseComps/AthAlgTool.h"
+#include "L1CaloFEXToolInterfaces/IjFEXForwardElecAlgo.h"
+#include "AthenaKernel/CLASS_DEF.h"
+#include "L1CaloFEXSim/jTowerContainer.h"
+
+#include "CaloEvent/CaloCellContainer.h"
+#include "CaloIdentifier/CaloIdManager.h"
+#include "CaloIdentifier/CaloCell_SuperCell_ID.h"
+#include "AthenaBaseComps/AthAlgorithm.h"
+#include "StoreGate/StoreGateSvc.h"
+
+
+namespace LVL1 {
+
+class jFEXForwardElecAlgo : public AthAlgTool, virtual public IjFEXForwardElecAlgo {
+
+    public:
+        /** Constructors **/
+        jFEXForwardElecAlgo(const std::string& type, const std::string& name, const IInterface* parent);
+
+        /** standard Athena-Algorithm method **/
+        virtual StatusCode initialize() override;
+
+        /** Destructor **/
+        virtual ~jFEXForwardElecAlgo();
+
+        virtual StatusCode safetyTest() override;
+        virtual StatusCode reset() override;
+        virtual void setup() override;
+
+
+        virtual void setFPGAEnergy(std::unordered_map<int,std::vector<int> > et_map_EM,std::unordered_map<int,std::vector<int> > et_map_HAD)  override;
+
+    protected:
+
+    private:
+
+        SG::ReadHandleKey<LVL1::jTowerContainer> m_jFEXFwElecAlgo_jTowerContainerKey {this, "MyjTowers", "jTowerContainer", "Input container for jTowers"};
+        SG::ReadHandle<jTowerContainer> m_jTowerContainer;
+        std::unordered_map<int,std::vector<int> > m_map_Etvalues_EM;
+        std::unordered_map<int,std::vector<int> > m_map_Etvalues_HAD;
+        
+        int getTTowerET_EM(unsigned int TTID );
+        int getTTowerET_HAD(unsigned int TTID );
+        int getTTowerTotalET(unsigned int TTID );
+        int getPhi(unsigned int TTID  );
+        int getEta(unsigned int TTID  );        
+        
+
+};
+
+}//end of namespace
+
+CLASS_DEF( LVL1::jFEXForwardElecAlgo, 71453331, 1 )
+
+#endif
diff --git a/Trigger/TrigT1/L1CaloFEX/L1CaloFEXSim/src/components/FEXDriver_entries.cxx b/Trigger/TrigT1/L1CaloFEX/L1CaloFEXSim/src/components/FEXDriver_entries.cxx
index 2d053fcc4c039bab6cda775be12ac980fd071ab7..7292d02ce519c307212f995989d9c2d0b0acf971 100644
--- a/Trigger/TrigT1/L1CaloFEX/L1CaloFEXSim/src/components/FEXDriver_entries.cxx
+++ b/Trigger/TrigT1/L1CaloFEX/L1CaloFEXSim/src/components/FEXDriver_entries.cxx
@@ -21,6 +21,7 @@
 #include "L1CaloFEXSim/jFEXmetAlgo.h"
 #include "L1CaloFEXSim/jFEXLargeRJetAlgo.h"
 #include "L1CaloFEXSim/jFEXForwardJetsAlgo.h"
+#include "L1CaloFEXSim/jFEXForwardElecAlgo.h"
 #include "L1CaloFEXSim/jFEXNtupleWriter.h"
 #include "L1CaloFEXSim/eFEXFPGATowerIdProvider.h"
 #include "L1CaloFEXSim/eFEXSuperCellTowerIdProvider.h"
@@ -67,6 +68,7 @@ DECLARE_COMPONENT(jFEXsumETAlgo)
 DECLARE_COMPONENT(jFEXmetAlgo)
 DECLARE_COMPONENT(jFEXLargeRJetAlgo)
 DECLARE_COMPONENT(jFEXForwardJetsAlgo)
+DECLARE_COMPONENT(jFEXForwardElecAlgo)
 DECLARE_COMPONENT(jFEXNtupleWriter)
 
 DECLARE_COMPONENT(gFEXDriver)
diff --git a/Trigger/TrigT1/L1CaloFEX/L1CaloFEXSim/src/jFEXFPGA.cxx b/Trigger/TrigT1/L1CaloFEX/L1CaloFEXSim/src/jFEXFPGA.cxx
index cc499b7f35168e261a218728ab2663262ebee3a0..847c3c21222449640e94c398dc102ece0459952e 100644
--- a/Trigger/TrigT1/L1CaloFEX/L1CaloFEXSim/src/jFEXFPGA.cxx
+++ b/Trigger/TrigT1/L1CaloFEX/L1CaloFEXSim/src/jFEXFPGA.cxx
@@ -25,6 +25,7 @@
 #include "L1CaloFEXSim/jFEXmetTOB.h"  
 #include "L1CaloFEXSim/jFEXForwardJetsAlgo.h"
 #include "L1CaloFEXSim/jFEXForwardJetsInfo.h"
+#include "L1CaloFEXSim/jFEXForwardElecAlgo.h"
 #include "L1CaloFEXSim/jFEXPileupAndNoise.h"
 #include "CaloEvent/CaloCellContainer.h"
 #include "CaloIdentifier/CaloIdManager.h"
@@ -85,6 +86,8 @@ void jFEXFPGA::reset() {
     m_sumET_tobwords.clear();
     m_Met_tobwords.clear();
     m_map_Etvalues_FPGA.clear();
+    m_map_EM_Etvalues_FPGA.clear();
+    m_map_HAD_Etvalues_FPGA.clear();
 
 }
 
@@ -324,10 +327,13 @@ StatusCode jFEXFPGA::execute(jFEXOutputCollection* inputOutputCollection) {
     inputOutputCollection->fill_smallRJet();
     inputOutputCollection->fill_largeRJet();
 
-    //**********Forward Jets***********************
+    
 
     //FCAL region algorithm
     if(m_jfexid ==0 || m_jfexid ==5) {
+        
+        
+        //**********Forward Jets***********************
         ATH_CHECK(m_jFEXForwardJetsAlgoTool->reset());
         ATH_CHECK(m_jFEXForwardJetsAlgoTool->safetyTest());
         m_jFEXForwardJetsAlgoTool->setFPGAEnergy(m_map_Etvalues_FPGA);
@@ -422,7 +428,20 @@ StatusCode jFEXFPGA::execute(jFEXOutputCollection* inputOutputCollection) {
 
         inputOutputCollection->fill_smallRJet();
         inputOutputCollection->fill_largeRJet();
-
+        
+        
+        
+        //********** Forward Electrons ***********************
+        ATH_CHECK(m_jFEXForwardElecAlgoTool->reset());
+        ATH_CHECK(m_jFEXForwardElecAlgoTool->safetyTest());
+        m_jFEXForwardElecAlgoTool->setFPGAEnergy(m_map_EM_Etvalues_FPGA,m_map_HAD_Etvalues_FPGA);
+        
+        /* This is a work in progress, PLEASE DO NOT REMOVE IT YET
+         * To enter in the algorithm, just uncomment the line below
+         * it should also enter when is a FWD FPGA so 8 times per eventloop
+        m_jFEXForwardElecAlgoTool->setup();        
+        */
+        
 
     } //end of if statement for checking if in central jfex modules
     //******************************** TAU **********************************************
diff --git a/Trigger/TrigT1/L1CaloFEX/L1CaloFEXSim/src/jFEXForwardElecAlgo.cxx b/Trigger/TrigT1/L1CaloFEX/L1CaloFEXSim/src/jFEXForwardElecAlgo.cxx
new file mode 100644
index 0000000000000000000000000000000000000000..5545314c0a79160354a56820d45f8e559b109769
--- /dev/null
+++ b/Trigger/TrigT1/L1CaloFEX/L1CaloFEXSim/src/jFEXForwardElecAlgo.cxx
@@ -0,0 +1,128 @@
+/*
+  Copyright (C) 2002-2021 CERN for the benefit of the ATLAS collaboration
+*/
+//***************************************************************************
+//		jFEXForwardElecAlgo - Algorithm for Forward Electron Algorithm in jFEX
+//                              -------------------
+//     begin                : 16 11 2021
+//     email                : Sergi.Rodriguez@cern.ch
+//***************************************************************************
+#include <iostream>
+#include <vector>
+#include <stdio.h>
+#include <math.h>
+#include "L1CaloFEXSim/jFEXForwardElecAlgo.h"
+#include "L1CaloFEXSim/jTower.h"
+#include "L1CaloFEXSim/jTowerContainer.h"
+#include "CaloEvent/CaloCellContainer.h"
+#include "CaloIdentifier/CaloIdManager.h"
+#include "CaloIdentifier/CaloCell_SuperCell_ID.h"
+#include "AthenaBaseComps/AthAlgorithm.h"
+#include "StoreGate/StoreGateSvc.h"
+
+namespace LVL1 {
+
+//Default Constructor
+LVL1::jFEXForwardElecAlgo::jFEXForwardElecAlgo(const std::string& type, const std::string& name, const IInterface* parent): AthAlgTool(type, name, parent) {
+    declareInterface<IjFEXForwardElecAlgo>(this);
+}
+
+/** Destructor */
+LVL1::jFEXForwardElecAlgo::~jFEXForwardElecAlgo() {
+}
+
+StatusCode LVL1::jFEXForwardElecAlgo::initialize() {
+    ATH_CHECK(m_jFEXFwElecAlgo_jTowerContainerKey.initialize());
+    return StatusCode::SUCCESS;
+}
+
+//calls container for TT
+StatusCode LVL1::jFEXForwardElecAlgo::safetyTest() {
+
+    if(! m_jTowerContainer.isValid()) {
+        ATH_MSG_FATAL("Could not retrieve m_jTowerContainer " << m_jFEXFwElecAlgo_jTowerContainerKey.key());
+        return StatusCode::FAILURE;
+    }
+
+    return StatusCode::SUCCESS;
+}
+
+StatusCode LVL1::jFEXForwardElecAlgo::reset() {
+    
+    m_jTowerContainer = SG::ReadHandle<jTowerContainer>(m_jFEXFwElecAlgo_jTowerContainerKey);
+    return StatusCode::SUCCESS;
+}
+
+void LVL1::jFEXForwardElecAlgo::setup() {
+    
+    // this is just to setup the algorithm, you will need more functions (you can take a look at jTau or jJ algorithms) 
+    ATH_MSG_DEBUG("---------------- jFEXForwardElecAlgo::setup ----------------");
+
+}
+
+
+
+
+//Gets the EM Et for the TT.
+int LVL1::jFEXForwardElecAlgo::getTTowerET_EM(unsigned int TTID ) {
+    if(TTID == 0) {
+        return 0;
+    }
+
+    if(m_map_Etvalues_EM.find(TTID) != m_map_Etvalues_EM.end()) {
+        return m_map_Etvalues_EM[TTID][0];
+    }
+
+    //we shouldn't arrive here
+    return 0;
+
+}
+
+//Gets the HAD Et for the TT.
+int LVL1::jFEXForwardElecAlgo::getTTowerET_HAD(unsigned int TTID ) {
+    if(TTID == 0) {
+        return 0;
+    }
+
+    if(m_map_Etvalues_HAD.find(TTID) != m_map_Etvalues_HAD.end()) {
+        return m_map_Etvalues_HAD[TTID][0];
+    }
+
+    //we shouldn't arrive here
+    return 0;
+
+}
+
+//Gets the Total Et for the TT.
+int LVL1::jFEXForwardElecAlgo::getTTowerTotalET(unsigned int TTID ) {
+    return getTTowerET_HAD(TTID) + getTTowerET_EM(TTID);
+
+}
+
+//Gets Phi of the TT
+int LVL1::jFEXForwardElecAlgo::getPhi(unsigned int TTID ) {
+    if(TTID == 0) {
+        return 0;
+    }
+
+    const LVL1::jTower * tmpTower = m_jTowerContainer->findTower(TTID);
+    return tmpTower->centrePhi();
+}
+//Gets Eta of the TT
+int LVL1::jFEXForwardElecAlgo::getEta(unsigned int TTID ) {
+    if(TTID == 0) {
+        return 0;
+    }
+
+    const LVL1::jTower * tmpTower = m_jTowerContainer->findTower(TTID);
+    return tmpTower->centreEta();
+}
+
+void LVL1::jFEXForwardElecAlgo::setFPGAEnergy(std::unordered_map<int,std::vector<int> > et_map_EM,std::unordered_map<int,std::vector<int> > et_map_HAD) {
+    m_map_Etvalues_EM=et_map_EM;
+    m_map_Etvalues_HAD=et_map_HAD;
+}
+
+
+
+}// end of namespace LVL1
diff --git a/Trigger/TrigT1/L1CaloFEXToolInterfaces/L1CaloFEXToolInterfaces/IjFEXForwardElecAlgo.h b/Trigger/TrigT1/L1CaloFEXToolInterfaces/L1CaloFEXToolInterfaces/IjFEXForwardElecAlgo.h
new file mode 100644
index 0000000000000000000000000000000000000000..36d7546143d662bcbb63e5b3c67e40be600f341d
--- /dev/null
+++ b/Trigger/TrigT1/L1CaloFEXToolInterfaces/L1CaloFEXToolInterfaces/IjFEXForwardElecAlgo.h
@@ -0,0 +1,43 @@
+/*
+ Copyright (C) 2002-2021 CERN for the benefit of the ATLAS collaboration
+*/
+//***************************************************************************
+//             Interface for jFEXForwardElecAlgo - Algorithm for Forward Electron Algorithm in jFEX
+//                              -------------------
+//     begin                : 16 11 2021
+//     email                : Sergi.Rodriguez@cern.ch
+//***************************************************************************
+
+#ifndef IjFEXForwardElecAlgo_H
+#define IjFEXForwardElecAlgo_H
+
+#include "GaudiKernel/IAlgTool.h"
+#include "L1CaloFEXSim/jTowerContainer.h"
+
+
+namespace LVL1 {
+
+static const InterfaceID IID_IjFEXForwardElecAlgo("LVL1::IjFEXForwardElecAlgo",1, 0);
+
+class IjFEXForwardElecAlgo : virtual public IAlgTool {
+    public:
+        static const InterfaceID& interfaceID ( ) ;
+        virtual StatusCode safetyTest() = 0;
+        virtual StatusCode reset() =0;
+        virtual void setup() = 0;
+
+        virtual void setFPGAEnergy(std::unordered_map<int,std::vector<int> >,std::unordered_map<int,std::vector<int> > )  =0;
+
+
+
+    private:
+
+};
+inline const InterfaceID& LVL1::IjFEXForwardElecAlgo::interfaceID()
+{
+    return IID_IjFEXForwardElecAlgo;
+}
+
+}
+#endif
+
diff --git a/Trigger/TrigT1/L1CaloFEXToolInterfaces/L1CaloFEXToolInterfaces/IjFEXtauAlgo.h b/Trigger/TrigT1/L1CaloFEXToolInterfaces/L1CaloFEXToolInterfaces/IjFEXtauAlgo.h
index 293c4bf6f8ea281e35128f61f4b7c0938805ba5c..af19a639b467e7c56a89860f659894d8a69106e2 100644
--- a/Trigger/TrigT1/L1CaloFEXToolInterfaces/L1CaloFEXToolInterfaces/IjFEXtauAlgo.h
+++ b/Trigger/TrigT1/L1CaloFEXToolInterfaces/L1CaloFEXToolInterfaces/IjFEXtauAlgo.h
@@ -24,7 +24,6 @@ class IjFEXtauAlgo : virtual public IAlgTool {
         static const InterfaceID& interfaceID ( ) ;
         virtual StatusCode safetyTest() = 0;
         virtual void setup(int TTwindow[5][5], int seed[3][3]) = 0;
-        //virtual void setupCluster(int inputTable[4][5]) =0;
         virtual bool isSeedLocalMaxima() = 0;
         virtual void buildSeeds() = 0;
         virtual void setFirstEtRing(int First_ETring[]) =0;