diff --git a/Trigger/TrigT1/L1CaloFEX/L1CaloFEXSim/L1CaloFEXSim/jTower.h b/Trigger/TrigT1/L1CaloFEX/L1CaloFEXSim/L1CaloFEXSim/jTower.h
index 9bb6165fb30bd6df919a45e79c8909efdca9ffe8..48837d8e9c3336397cc7622da5ba6cbb56b59f01 100644
--- a/Trigger/TrigT1/L1CaloFEX/L1CaloFEXSim/L1CaloFEXSim/jTower.h
+++ b/Trigger/TrigT1/L1CaloFEX/L1CaloFEXSim/L1CaloFEXSim/jTower.h
@@ -66,10 +66,12 @@ namespace LVL1 {
     int iPhi() const;
     float eta() {return m_eta;};
     float phi() {return m_phi;};
+    
     float eta() const {return m_eta;};
     float phi() const {return m_phi;};
     float centreEta() const {return m_centre_eta;}
     float centrePhi() const {return m_centre_phi;}
+    float centrephi_toPI() const {return m_centre_phi_toPI;}
     int fcalLayer() const {return m_fcal_layer;}
     
     void setEta(const float thiseta){ m_eta = thiseta; }
@@ -140,10 +142,12 @@ namespace LVL1 {
   private:
     float m_eta;
     float m_phi;
+    
     int m_tower_id;
     int m_posneg = 0;
     float m_centre_eta =0;
     float m_centre_phi =0;
+    float m_centre_phi_toPI=0;
     std::vector<Identifier> m_EM_scID;
     std::vector<Identifier> m_HAD_scID;
     std::vector<int> m_et;    
diff --git a/Trigger/TrigT1/L1CaloFEX/L1CaloFEXSim/L1CaloFEXSim/jTowerBuilder.h b/Trigger/TrigT1/L1CaloFEX/L1CaloFEXSim/L1CaloFEXSim/jTowerBuilder.h
index 74573bb1dc7b67790c4f6bc147d378ddfd41e7be..3288dfb38431cf0cc744b90594ad499643bbff6e 100644
--- a/Trigger/TrigT1/L1CaloFEX/L1CaloFEXSim/L1CaloFEXSim/jTowerBuilder.h
+++ b/Trigger/TrigT1/L1CaloFEX/L1CaloFEXSim/L1CaloFEXSim/jTowerBuilder.h
@@ -40,6 +40,10 @@ class jTowerBuilder: public AthAlgTool, virtual public IjTowerBuilder {
   virtual void BuildHECjTowers(std::unique_ptr<jTowerContainer> & jTowerContainerRaw) const override ;
   virtual void BuildAllTowers(std::unique_ptr<jTowerContainer> & jTowerContainerRaw) const override ;
   virtual void BuildSingleTower(std::unique_ptr<jTowerContainer> & jTowerContainerRawRaw,float eta, float phi, int key_eta, float keybase, int posneg, float centre_eta = 0.0, float centre_phi = 0.0, int fcal_layer = -1) const override ;
+  
+  
+  static constexpr float m_TT_Size_phi = M_PI/32;
+  static constexpr float m_TT_Size_phi_FCAL = M_PI/16;
 
 };
 
diff --git a/Trigger/TrigT1/L1CaloFEX/L1CaloFEXSim/src/jTower.cxx b/Trigger/TrigT1/L1CaloFEX/L1CaloFEXSim/src/jTower.cxx
index bc13ef599bfa39bc93801c22b32cc5a71019a3e9..29dedfda152736352323226daff6a61f549ad0e8 100644
--- a/Trigger/TrigT1/L1CaloFEX/L1CaloFEXSim/src/jTower.cxx
+++ b/Trigger/TrigT1/L1CaloFEX/L1CaloFEXSim/src/jTower.cxx
@@ -44,9 +44,11 @@ namespace LVL1 {
     m_centre_eta(centre_eta),
     m_centre_phi(centre_phi),
     m_fcal_layer(fcal_layer)
-  {
-    this->clearET();
-  }
+    {   
+        m_centre_phi_toPI = centre_phi;
+        if(centre_phi>M_PI) m_centre_phi_toPI = centre_phi-2*M_PI;
+        this->clearET();
+    }
   
   
   /** Clear and resize ET value vector */
diff --git a/Trigger/TrigT1/L1CaloFEX/L1CaloFEXSim/src/jTowerBuilder.cxx b/Trigger/TrigT1/L1CaloFEX/L1CaloFEXSim/src/jTowerBuilder.cxx
index d3c694061c4755b4d21336e56efcc405ede2a7e8..c62faed1d70251b5e66d072318de21bf2348f71c 100644
--- a/Trigger/TrigT1/L1CaloFEX/L1CaloFEXSim/src/jTowerBuilder.cxx
+++ b/Trigger/TrigT1/L1CaloFEX/L1CaloFEXSim/src/jTowerBuilder.cxx
@@ -64,7 +64,7 @@ void jTowerBuilder::BuildEMBjTowers(std::unique_ptr<jTowerContainer> & jTowerCon
         float centre_eta = (0.1*ieta) + (0.05) ;
         for (int iphi = 0; iphi < 64; ++iphi) { // loop over 64 phi steps
             int key_eta = ieta;
-            float centre_phi = (0.1*iphi) + (0.05) ;
+            float centre_phi = (m_TT_Size_phi*iphi) + (m_TT_Size_phi/2);
             BuildSingleTower(jTowerContainerRaw, ieta, iphi, key_eta, 100000, -1, -1*centre_eta, centre_phi);
             BuildSingleTower(jTowerContainerRaw, ieta, iphi, key_eta, 200000,  1,    centre_eta, centre_phi);
         }
@@ -80,8 +80,7 @@ void jTowerBuilder::BuildTRANSjTowers(std::unique_ptr<jTowerContainer> & jTowerC
         float centre_eta = (0.1*ieta) + (0.05);
         for (int iphi = 0; iphi < 64; ++iphi) { // loop over 64 phi steps
             int key_eta = ieta;
-            //float centre_phi = (TT_Size*iphi) + (0.5*TT_Size);
-            float centre_phi = (0.1*iphi) + (0.05) ;
+            float centre_phi = (m_TT_Size_phi*iphi) + (m_TT_Size_phi/2);
             BuildSingleTower(jTowerContainerRaw, ieta, iphi, key_eta, 300000, -1,-1*centre_eta, centre_phi);
             BuildSingleTower(jTowerContainerRaw, ieta, iphi, key_eta, 400000,  1,   centre_eta, centre_phi);
         }
@@ -98,7 +97,7 @@ void jTowerBuilder::BuildEMEjTowers(std::unique_ptr<jTowerContainer> & jTowerCon
         float centre_eta =(0.1*ieta) + (0.05) ;
         for (int iphi = 0; iphi < 64; ++iphi) { // loop over 64 phi steps
             int key_eta = ieta;
-            float centre_phi = (0.1*iphi) + (0.05) ;
+            float centre_phi = (m_TT_Size_phi*iphi) + (m_TT_Size_phi/2);
             BuildSingleTower(jTowerContainerRaw, ieta, iphi, key_eta, 500000, -1, -1*centre_eta, centre_phi);
             BuildSingleTower(jTowerContainerRaw, ieta, iphi, key_eta, 600000,  1,    centre_eta, centre_phi);
         }
@@ -111,8 +110,7 @@ void jTowerBuilder::BuildEMEjTowers(std::unique_ptr<jTowerContainer> & jTowerCon
         float centre_eta = (0.1*ieta) + (0.05);
         for (int iphi = 0; iphi < 64; ++iphi) { // loop over 64 phi steps
             int key_eta = ieta;
-            //float centre_phi =(TT_Size*iphi) + (0.5*TT_Size) ;
-            float centre_phi = (0.1*iphi) + (0.05) ;
+            float centre_phi = (m_TT_Size_phi*iphi) + (m_TT_Size_phi/2);
             BuildSingleTower(jTowerContainerRaw, ieta, iphi, key_eta, 500000, -1,-1*centre_eta, centre_phi);
             BuildSingleTower(jTowerContainerRaw, ieta, iphi, key_eta, 600000,  1,   centre_eta, centre_phi);
         }
@@ -125,8 +123,7 @@ void jTowerBuilder::BuildEMEjTowers(std::unique_ptr<jTowerContainer> & jTowerCon
         float centre_eta= (0.1*ieta) + (0.05) ;
         for (int iphi = 0; iphi < 64; ++iphi) { // loop over 64 phi steps
             int key_eta = ieta;
-            //float centre_phi =(TT_Size*iphi) + (0.5*TT_Size) ;
-            float centre_phi = (0.1*iphi) + (0.05) ;
+            float centre_phi = (m_TT_Size_phi*iphi) + (m_TT_Size_phi/2);
             BuildSingleTower(jTowerContainerRaw, ieta, iphi, key_eta, 500000, -1,-1*centre_eta, centre_phi);
             BuildSingleTower(jTowerContainerRaw, ieta, iphi, key_eta, 600000,  1,   centre_eta, centre_phi);
         }
@@ -140,7 +137,7 @@ void jTowerBuilder::BuildEMEjTowers(std::unique_ptr<jTowerContainer> & jTowerCon
         for (int iphi = 0; iphi < 64; ++iphi) { // loop over 64 phi steps
             int key_eta = ieta;
             //float centre_phi =(TT_Size*iphi) + (0.5*TT_Size) ;
-            float centre_phi = (0.1*iphi) + (0.05) ;
+            float centre_phi = (m_TT_Size_phi*iphi) + (m_TT_Size_phi/2);
             BuildSingleTower(jTowerContainerRaw, ieta, iphi, key_eta, 500000, -1, -1*centre_eta, centre_phi);
             BuildSingleTower(jTowerContainerRaw, ieta, iphi, key_eta, 600000,  1,    centre_eta, centre_phi);
         }
@@ -154,7 +151,6 @@ void jTowerBuilder::BuildEMEjTowers(std::unique_ptr<jTowerContainer> & jTowerCon
 void jTowerBuilder::BuildEMIEjTowers(std::unique_ptr<jTowerContainer> & jTowerContainerRaw) const {
     int EMIE_MODIFIER = 25;
     int tmpVal = EMIE_MODIFIER;
-    float phi_width = 2.0;
     int cellCountEta = 0;
 
     for (int ieta = tmpVal; ieta < tmpVal + 3; ++ieta) { // loop over eta steps (there are 3 here, 2.5-2.7, 2.7-2.9, 2.9-3.1)
@@ -162,7 +158,7 @@ void jTowerBuilder::BuildEMIEjTowers(std::unique_ptr<jTowerContainer> & jTowerCo
         float centre_eta =(0.1*ieta) + (0.1*cellCountEta) ;
         for (int iphi = 0; iphi < 32; ++iphi) { // loop over 32 phi steps
             int key_eta = ieta;
-            float centre_phi = (2*iphi+phi_width/2.0)/10.0;
+            float centre_phi = (2*m_TT_Size_phi*iphi) + m_TT_Size_phi;
             BuildSingleTower(jTowerContainerRaw, ieta, iphi, key_eta, /*7*/500000, -1, -1*centre_eta, centre_phi);
             BuildSingleTower(jTowerContainerRaw, ieta, iphi, key_eta, /*8*/600000,  1,    centre_eta, centre_phi);
         }
@@ -174,7 +170,7 @@ void jTowerBuilder::BuildEMIEjTowers(std::unique_ptr<jTowerContainer> & jTowerCo
         float centre_eta = (0.1*ieta + 0.3) + (0.05);
         for (int iphi = 0; iphi < 32; ++iphi) { // loop over 32 phi steps
             int key_eta = ieta;
-            float centre_phi = (2*iphi+phi_width/2.0)/10.0;
+            float centre_phi = (2*m_TT_Size_phi*iphi) + m_TT_Size_phi;
             BuildSingleTower(jTowerContainerRaw, ieta, iphi, key_eta, /*7*/500000, -1, -1*centre_eta, centre_phi);
             BuildSingleTower(jTowerContainerRaw, ieta, iphi, key_eta, /*8*/600000,  1,    centre_eta, centre_phi);
         }
@@ -201,7 +197,6 @@ void jTowerBuilder::BuildFCALjTowers(std::unique_ptr<jTowerContainer> & jTowerCo
 
     //FCAL0
     float eta_width = 1.4;
-    float phi_width = 4.0;
     int cellCountEta = 0;
     int FCAL0_INITIAL = FCAL_MODIFIER;
     std::vector<int> TT_etapos{31,33,34,36,37,39,40,42,43,45,46,48}; // Eta position of each supercell, need to be change for the real coords. Future MR
@@ -211,7 +206,7 @@ void jTowerBuilder::BuildFCALjTowers(std::unique_ptr<jTowerContainer> & jTowerCo
         cellCountEta++;
 
         for (int iphi = 0; iphi < 16; ++iphi) { // loop over 16 phi steps
-            float centre_phi = (4*iphi+phi_width/2.0)/10.0;
+            float centre_phi = (2*m_TT_Size_phi_FCAL*iphi) + m_TT_Size_phi_FCAL;
             BuildSingleTower(jTowerContainerRaw, ieta, iphi, key_eta, 700000, -1, -1*centre_eta, centre_phi, 0);
             BuildSingleTower(jTowerContainerRaw, ieta, iphi, key_eta, 800000,  1,    centre_eta, centre_phi, 0);
         }
@@ -229,7 +224,7 @@ void jTowerBuilder::BuildFCALjTowers(std::unique_ptr<jTowerContainer> & jTowerCo
         float centre_eta = (TT_etapos[cellCountEta]+eta_width/2)/10.0;
         cellCountEta++;
         for (int iphi = 0; iphi < 16; ++iphi) { // loop over 16 phi steps
-            float centre_phi = (4*iphi+phi_width/2.0)/10.0;
+            float centre_phi = (2*m_TT_Size_phi_FCAL*iphi) + m_TT_Size_phi_FCAL;
             BuildSingleTower(jTowerContainerRaw, ieta, iphi, key_eta,  900000, -1, -1*centre_eta, centre_phi, 1);
             BuildSingleTower(jTowerContainerRaw, ieta, iphi, key_eta, 1000000,  1,    centre_eta, centre_phi, 1);
         }
@@ -248,7 +243,7 @@ void jTowerBuilder::BuildFCALjTowers(std::unique_ptr<jTowerContainer> & jTowerCo
         float centre_eta = (TT_etapos[cellCountEta]+eta_width/2)/10.0;
         cellCountEta++;
         for (int iphi = 0; iphi < 16; ++iphi) { // loop over 16 phi steps
-            float centre_phi = (4*iphi+phi_width/2.0)/10.0;
+            float centre_phi = (2*m_TT_Size_phi_FCAL*iphi) + m_TT_Size_phi_FCAL;
             BuildSingleTower(jTowerContainerRaw, ieta, iphi, key_eta, 1100000, -1, -1*centre_eta, centre_phi, 2);
             BuildSingleTower(jTowerContainerRaw, ieta, iphi, key_eta, 1200000,  1,    centre_eta, centre_phi, 2);
         }