diff --git a/Projects/T40/Analysis.cxx b/Projects/T40/Analysis.cxx
index b64ced4962b59b6cf4bdbf85aa1fd723f793284f..de207c79f2dff69e737de71ba0d441046f12249a 100644
--- a/Projects/T40/Analysis.cxx
+++ b/Projects/T40/Analysis.cxx
@@ -9,7 +9,7 @@
  * Original Author: Adrien MATTA  contact address: a.matta@surrey.ac.uk      *
  *                                                                           *
  * Creation Date  : march 2015                                               *
- * Last update    :                                                          *
+ * Last update    : December 2016 [m.moukaddam@surrey.ac.uk]                 *
  *---------------------------------------------------------------------------*
  * Decription:                                                               *
  * Class describing the property of an Analysis object                       *
@@ -21,13 +21,13 @@
  *****************************************************************************/
 #include<iostream>
 using namespace std;
-#include"Analysis.h"
-#include"NPAnalysisFactory.h"
-#include"NPDetectorManager.h"
-#include"NPOptionManager.h"
-#include"NPFunction.h" 
-#include"RootOutput.h"
-#include"RootInput.h"
+#include "Analysis.h"
+#include "NPAnalysisFactory.h"
+#include "NPDetectorManager.h"
+#include "NPOptionManager.h"
+#include "NPFunction.h" 
+#include "RootOutput.h"
+#include "RootInput.h"
 ////////////////////////////////////////////////////////////////////////////////
 Analysis::Analysis(){
 }
@@ -39,11 +39,13 @@ Analysis::~Analysis(){
 void Analysis::Init(){
   TH  = (TTiaraHyballPhysics*) m_DetectorManager -> GetDetector("TiaraHyballWedge");
   TB  = (TTiaraBarrelPhysics*) m_DetectorManager -> GetDetector("TiaraInnerBarrel=");
+  TF  = (TFPDTamuPhysics*) m_DetectorManager -> GetDetector("FPDTamu");
 
   // get reaction information
   myReaction = new NPL::Reaction();
   myReaction->ReadConfigurationFile(NPOptionManager::getInstance()->GetReactionFile());
   OriginalBeamEnergy = myReaction->GetBeamEnergy();
+  cout << "Original Beam energy (entrance of target): " << OriginalBeamEnergy << endl ;
 
   // target thickness
   TargetThickness = m_DetectorManager->GetTargetThickness()*micrometer;
@@ -58,6 +60,7 @@ void Analysis::Init(){
   LightSi = NPL::EnergyLoss(light+"_Si.G4table","G4Table",10);
   BeamTarget = NPL::EnergyLoss(beam+"_"+TargetMaterial+".G4table","G4Table",10);
   FinalBeamEnergy = BeamTarget.Slow(OriginalBeamEnergy, TargetThickness*0.5, 0);
+
   cout << "Final Beam energy (middle of target): " << FinalBeamEnergy << endl;
   myReaction->SetBeamEnergy(FinalBeamEnergy);
 
@@ -73,34 +76,40 @@ void Analysis::Init(){
   Si_E_OuterTB = 0;
   Si_E_TB = 0 ;
   Energy = 0;
+  
+  //Original_ELab=0;
+  //Original_ThetaLab=0;
 
-  Original_ELab=0;
-  Original_ThetaLab=0;
-
-  XTarget = 0;
+  XTarget =0;
   YTarget =0;
   BeamDirection = TVector3(0,0,1);
   InitOutputBranch();
   InitInputBranch();
 
+  //FPD
+  Delta_E = 0; // Energy ionisation chamber
+  Micro_E = 0; // Energy from micromega total
+  Micro_E_row1 = 0 ;// Energy from micromega row 1 
+  Micro_E_col4 = 0 ;// energy from micromega col 1 
+  Plast_E = 0; // Energy Plastic
+  XPlastic_aw = 0; // X on plastic from avalanche wire
+  Theta_aw    = 0; // ion direction in the FPD
+  XPlastic    = 0; // X on plastic from plastic PMTs
+
 }
 
 ////////////////////////////////////////////////////////////////////////////////
 void Analysis::TreatEvent(){
   // Reinitiate calculated variable
   ReInitValue();
-  
-  Original_ELab = Initial->GetKineticEnergy(0);
-  Original_ThetaLab = Initial->GetParticleDirection(0).Angle(Initial->GetBeamDirection())/deg;
+  //Original_ELab = Initial->GetKineticEnergy(0);
+  //Original_ThetaLab = Initial->GetParticleDirection(0).Angle(Initial->GetBeamDirection())/deg;
 
   ////////////////////////////////////////// LOOP on TiaraHyball + SSSD Hit //////////////////////////////////////////
   for(unsigned int countTiaraHyball = 0 ; countTiaraHyball < TH->Strip_E.size() ; countTiaraHyball++){
     /************************************************/
-
     // TiaraHyball
-
     /************************************************/
-
     // Part 1 : Impact Angle
     ThetaTHSurface = 0;
     ThetaNormalTarget = 0;
@@ -119,14 +128,13 @@ void Analysis::TreatEvent(){
     }
 
     /************************************************/
-
     // Part 2 : Impact Energy
     Energy = ELab = 0;
     Si_E_TH = TH->Strip_E[countTiaraHyball];
     Energy = Si_E_TH;
 
     // Evaluate energy using the thickness 
-//    ELab = LightAl.EvaluateInitialEnergy( Energy ,0.4*micrometer , ThetaTHSurface); 
+    //    ELab = LightAl.EvaluateInitialEnergy( Energy ,0.4*micrometer , ThetaTHSurface); 
     ELab = Energy;
     // Target Correction
     ELab = LightTarget.EvaluateInitialEnergy( ELab ,TargetThickness/2., ThetaNormalTarget); 
@@ -164,6 +172,7 @@ void Analysis::TreatEvent(){
 
   /////////////////////////// LOOP on TiaraBarrel /////////////////////////////
   for(unsigned int countTiaraBarrel = 0 ; countTiaraBarrel < TB->Strip_E.size() ; countTiaraBarrel++){
+
     /************************************************/
     // Part 1 : Impact Angle
     ThetaTBSurface = 0;
@@ -228,7 +237,38 @@ void Analysis::TreatEvent(){
     /************************************************/
 
   } // end loop TiaraBarrel
-  /////////////////////////////////////////////////////////////////////////////////////////////////////////
+
+ ////////////////////////////////////////// LOOP on FPD  //////////////////////////////////////////
+  
+  //for(unsigned int countFPD = 0 ; countFPD < TF->Delta.size() ; countFPD++) // multiplicity treated for now is zero 
+  { 
+    //TF->Dump();
+    if(0){ // hit on target or another condition
+
+      // Part 1 : Collect the energis from the different sub-detectors
+      Delta_E      = TF->DeltaEnergy[0];
+      Micro_E_row1 = TF->GetMicroGroupEnergy(1,1,1,7); // energy sum from the row 1 
+      Micro_E_col4 = TF->GetMicroGroupEnergy(1,4,4,4); // energy sum from the col 4
+      Micro_E      = TF->GetMicroGroupEnergy(1,4,1,7); // energy sum from all the pads 
+      Plast_E      = TF->PlastCharge[0];
+
+      // Part 2 : Reconstruct ion direction from Avalanche Wire
+      Theta_aw          = TF->IonDirection.Theta()/deg; // calculate Theta from AWire
+      XPlastic_aw       = TF->PlastPositionX_AW; // calculate position on plastic, provided the Ion Direction, and Z plastic 
+      XPlastic          = TF->PlastPositionX[0]; // calculate  position on plastic from Right and Left PMT signals 
+    }
+    else{
+      Delta_E      = -1000;
+      Micro_E_row1 = -1000;   
+      Micro_E_col4 = -1000; 
+      Micro_E      = -1000;  
+      Plast_E      = -1000;
+      Theta_aw     = -1000;
+      XPlastic_aw  = -1000;
+      XPlastic     = -1000;
+    }
+
+  } // end loop on FPD
 }
 
 ////////////////////////////////////////////////////////////////////////////////
@@ -241,8 +281,17 @@ void Analysis::ReInitValue(){
   ELab = -1000;
   ThetaLab = -1000;
   ThetaCM = -1000;
-  Original_ELab = -1000;
-  Original_ThetaLab = -1000;
+  //Original_ELab = -1000;
+  //Original_ThetaLab = -1000;
+  //FPD
+  Delta_E      = -1000;
+  Micro_E_row1 = -1000;   
+  Micro_E_col4 = -1000; 
+  Micro_E      = -1000;  
+  Plast_E      = -1000;
+  Theta_aw     = -1000;
+  XPlastic_aw  = -1000;
+  XPlastic     = -1000;
 }
 /////////////////////////////////////////////////////////////////////////////
 ////////////////////////////////////////////////////////////////////////////
@@ -254,14 +303,22 @@ void Analysis::InitOutputBranch() {
   RootOutput::getInstance()->GetTree()->Branch("TiaraImpactMatrixX",&TiaraIMX,"TiaraImpactMatrixX/D");
   RootOutput::getInstance()->GetTree()->Branch("TiaraImpactMatrixY",&TiaraIMY,"TiaraImpactMatrixY/D");
   RootOutput::getInstance()->GetTree()->Branch("TiaraImpactMatrixZ",&TiaraIMZ,"TiaraImpactMatrixZ/D");
-  RootOutput::getInstance()->GetTree()->Branch("Original_ELab",&Original_ELab,"Original_ELab/D");
-  RootOutput::getInstance()->GetTree()->Branch("Original_ThetaLab",&Original_ThetaLab,"Original_ThetaLab/D");
+  //RootOutput::getInstance()->GetTree()->Branch("Original_ELab",&Original_ELab,"Original_ELab/D");
+  //RootOutput::getInstance()->GetTree()->Branch("Original_ThetaLab",&Original_ThetaLab,"Original_ThetaLab/D");
+  RootOutput::getInstance()->GetTree()->Branch("Delta_E",&Delta_E,"Delta_E/D");
+  RootOutput::getInstance()->GetTree()->Branch("Micro_E_row1",&Micro_E_row1,"Micro_E_row1/D");
+  RootOutput::getInstance()->GetTree()->Branch("Micro_E_col4",&Micro_E_col4,"Micro_E_col4/D");
+  RootOutput::getInstance()->GetTree()->Branch("Micro_E",&Micro_E,"Micro_E/D");
+  RootOutput::getInstance()->GetTree()->Branch("Plast_E",&Plast_E,"Plast_E/D");
+  RootOutput::getInstance()->GetTree()->Branch("Theta_aw",&Theta_aw,"Theta_aw/D");
+  RootOutput::getInstance()->GetTree()->Branch("XPlastic_aw",&XPlastic_aw,"XPlastic_aw/D");
+  RootOutput::getInstance()->GetTree()->Branch("XPlastic",&XPlastic,"XPlastic/D");
 }
 /////////////////////////////////////////////////////////////////////////////
 void Analysis::InitInputBranch(){
-  RootInput:: getInstance()->GetChain()->SetBranchAddress("InitialConditions",&Initial );
-  RootInput:: getInstance()->GetChain()->SetBranchStatus("InitialConditions",true );
-  RootInput:: getInstance()->GetChain()->SetBranchStatus("fIC_*",true );
+  //RootInput:: getInstance()->GetChain()->SetBranchStatus("InitialConditions",true );
+  //RootInput:: getInstance()->GetChain()->SetBranchAddress("InitialConditions",&Initial );
+  //RootInput:: getInstance()->GetChain()->SetBranchStatus("fIC_*",true );
 }
 
 ////////////////////////////////////////////////////////////////////////////////
diff --git a/Projects/T40/Analysis.h b/Projects/T40/Analysis.h
index 406d04f4ef93c0b0cf5c50fa8977734f9b206491..58e134c5f5c3ebdbbc26d10dc7d633c628f551e0 100644
--- a/Projects/T40/Analysis.h
+++ b/Projects/T40/Analysis.h
@@ -10,9 +10,9 @@
 /*****************************************************************************
  * Original Author: Adrien MATTA  contact address: a.matta@surrey.ac.uk      *
  *                                                                           *
- * Creation Date  : march 2025                                               *
- * Last update    :                                                          *
- *---------------------------------------------------------------------------*
+ * Creation Date  : march 2015                                               *
+ * Last update    : December 2016 [m.moukaddam@surrey.ac.uk]                 *
+  *---------------------------------------------------------------------------*
  * Decription:                                                               *
  * Class describing the property of an Analysis object                       *
  *                                                                           *
@@ -21,9 +21,10 @@
  *                                                                           *
  *                                                                           *
  *****************************************************************************/
-#include"NPVAnalysis.h"
+#include "NPVAnalysis.h"
 #include "TTiaraHyballPhysics.h"
 #include "TTiaraBarrelPhysics.h"
+#include "TFPDTamuPhysics.h"
 #include "TInitialConditions.h"
 #include "NPEnergyLoss.h"
 #include "NPReaction.h"
@@ -71,7 +72,8 @@ class Analysis: public NPL::VAnalysis{
   double FinalBeamEnergy;
 
   TTiaraHyballPhysics* TH;
-  TTiaraBarrelPhysics* TB;
+  TTiaraBarrelPhysics* TB;  
+  TFPDTamuPhysics* TF;
 
   TRandom *Rand ;
 	double ThetaNormalTarget  ;
@@ -90,7 +92,16 @@ class Analysis: public NPL::VAnalysis{
   double XTarget ;
 	double YTarget ;
 	TVector3 BeamDirection ;
-
+  
+  //FPD
+  double Delta_E      ;
+  double Micro_E_row1 ;   
+  double Micro_E_col4 ; 
+  double Micro_E      ;  
+  double Plast_E      ;
+  double Theta_aw     ;
+  double XPlastic_aw  ;
+  double XPlastic     ;
 
 };
 #endif
diff --git a/Projects/T40/T40.detector b/Projects/T40/T40.detector
index 5a4ea3526e22574b16f2cbd3a65556508ad1a7ed..4b62d07bc80b5ff1788089529ef0726cdaf79a0e 100644
--- a/Projects/T40/T40.detector
+++ b/Projects/T40/T40.detector
@@ -41,6 +41,35 @@ Tiara
     Z= -147
     R= 0
     Phi= 300
-%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-
-
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+FPDTamu
+%%%%%%%%
+% All DELTA detectors
+  DELTA
+     UPSTREAM-LEFT=    +150   +00   +20
+     UPSTREAM-RIGHT=   -150   +00   +20
+%%%%%%%%%%%%%%%%%%%%%    
+% All MICRO detectors
+  MICRO
+     UPSTREAM-LEFT=    +154   +00   +340
+     UPSTREAM-RIGHT=   -154   +00   +340
+%%%%%%%%%%%%%%%%%%%%%
+% All AWIRE detectors
+  AWIRE
+     LEFT=             +200   +00   +20
+     RIGHT=            -200   +00   +20
+    AWIRE
+     LEFT=             +200   +00   +171
+     RIGHT=            -200   +00   +171
+    AWIRE
+     LEFT=             +200   +00   +334
+     RIGHT=            -200   +00   +334
+    AWIRE
+     LEFT=             +200   +00   +497
+     RIGHT=            -200   +00   +497
+%%%%%%%%%%%%%%%%%%%%%
+% All Plastic detectors
+  PLAST
+     UPSTREAM-LEFT=    +198   +00   +547
+     UPSTREAM-RIGHT=   -198   +00   +547
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%