diff --git a/NPLib/Detectors/PISTA/TPISTAPhysics.cxx b/NPLib/Detectors/PISTA/TPISTAPhysics.cxx
index 7266d3d536f5b3d8325076a69385e997e9362e56..c0893cc90e0c4512e5ce865c93031b880fa948ee 100644
--- a/NPLib/Detectors/PISTA/TPISTAPhysics.cxx
+++ b/NPLib/Detectors/PISTA/TPISTAPhysics.cxx
@@ -67,6 +67,15 @@ void TPISTAPhysics::AddDetector(TVector3){
 void TPISTAPhysics::AddDetector(double R, double Theta, double Phi){
   m_NumberOfDetectors++;
 
+  //double Height = 118; // mm
+  double Height = 61.8; // mm
+  //double Base = 95; // mm
+  double Base = 78.1; // mm
+  double NumberOfStrips = 128;
+  double StripPitchHeight = Height / NumberOfStrips; // mm
+  double StripPitchBase = Base / NumberOfStrips; // mm
+
+
   // Vector U on detector face (parallel to Y strips) Y strips are along X axis
   TVector3 U;
   // Vector V on detector face (parallel to X strips)
@@ -78,7 +87,7 @@ void TPISTAPhysics::AddDetector(double R, double Theta, double Phi){
 
   C = TVector3(R*sin(Theta)*cos(Phi),
         R*sin(Theta)*sin(Phi),
-        R*cos(Theta));
+        Height*0.5+R*cos(Theta));
 
   TVector3 P = TVector3(cos(Theta)*cos(Phi),
       cos(Theta)*sin(Phi),
@@ -91,12 +100,6 @@ void TPISTAPhysics::AddDetector(double R, double Theta, double Phi){
   U = U.Unit();
   V = V.Unit();
 
-  double Height = 118; // mm
-  double Base = 95; // mm
-  double NumberOfStrips = 128;
-  double StripPitchHeight = Height / NumberOfStrips; // mm
-  double StripPitchBase = Base / NumberOfStrips; // mm
-
   vector<double> lineX;
   vector<double> lineY;
   vector<double> lineZ;
diff --git a/NPSimulation/Core/MaterialManager.cc b/NPSimulation/Core/MaterialManager.cc
index e66bc6168a3e9aa0269523fcf3bf3732af3b4bd2..cb9e2933807bc7907dd4bd378f419ab27cbc6be3 100644
--- a/NPSimulation/Core/MaterialManager.cc
+++ b/NPSimulation/Core/MaterialManager.cc
@@ -278,6 +278,35 @@ G4Material* MaterialManager::GetMaterialFromLibrary(string Name,
       return material;
     }
 
+    else if(Name == "235U"){
+      if(!density)
+        density = 19.1 * g / cm3;
+      G4Element* U235 = new G4Element("U235","U235",1);
+      
+      G4Isotope* isotope = new G4Isotope("235U",92,235);
+      U235->AddIsotope(isotope,1);
+
+      G4Material* material = new G4Material("NPS_" + Name, density, 1, kStateSolid, 293.15*kelvin);
+      material->AddElement(U235,1);
+      m_Material[Name] = material;
+      return material;
+    }
+
+    else if(Name == "238U"){
+      if(!density)
+        density = 19.1 * g / cm3;
+      G4Element* U238 = new G4Element("U238","U238",1);
+      
+      G4Isotope* isotope = new G4Isotope("238U",92,238);
+      U238->AddIsotope(isotope,1);
+
+      G4Material* material = new G4Material("NPS_" + Name, density, 1, kStateSolid, 293.15*kelvin);
+      material->AddElement(U238,1);
+      m_Material[Name] = material;
+      return material;
+    }
+
+
     else if (Name == "Gd") {
       if (!density)
         density            = 7.90 * g / cm3;
diff --git a/NPSimulation/Detectors/PISTA/PISTA.cc b/NPSimulation/Detectors/PISTA/PISTA.cc
index 0a02fb280cd0201f8d7fa0f46c2ee74e747111bf..420612ff28788053c7732d3c59f08ae9dadc0567 100644
--- a/NPSimulation/Detectors/PISTA/PISTA.cc
+++ b/NPSimulation/Detectors/PISTA/PISTA.cc
@@ -63,9 +63,12 @@ namespace PISTA_NS{
   const double ResoEnergy = 0.015*MeV ;
 
   // Trapezoid dimension
-  const double TrapezoidBaseLarge = 95*mm;
-  const double TrapezoidBaseSmall = 45*mm;
-  const double TrapezoidHeight = 118*mm;
+  //const double TrapezoidBaseLarge = 95*mm;
+  const double TrapezoidBaseLarge = 78.1*mm;
+  //const double TrapezoidBaseSmall = 45*mm;
+  const double TrapezoidBaseSmall = 43.3*mm;
+  //const double TrapezoidHeight = 118*mm;
+  const double TrapezoidHeight = 61.8*mm;
   const double TrapezoidLength = 1*cm;
   const double FirstStageThickness = 100*um;
   const double SecondStageThickness = 1*mm;
@@ -226,7 +229,7 @@ void PISTA::ConstructDetector(G4LogicalVolume* world){
 
     G4double wX = m_R[i] * sin(m_Theta[i] ) * cos(m_Phi[i] ) ;
     G4double wY = m_R[i] * sin(m_Theta[i] ) * sin(m_Phi[i] ) ;
-    G4double wZ = m_R[i] * cos(m_Theta[i] ) ;
+    G4double wZ = TrapezoidHeight*0.5 + m_R[i] * cos(m_Theta[i] ) ;
     G4ThreeVector Det_pos = G4ThreeVector(wX, wY, wZ) ;
     // So the face of the detector is at R instead of the middle
     Det_pos+=Det_pos.unit()*PISTA_NS::TrapezoidLength*0.5;
diff --git a/Projects/PISTA/Analysis.cxx b/Projects/PISTA/Analysis.cxx
index ed8955b67a5196df8a1ff48574375837dddae3a2..e01382896d6ca5ed8be1a5efe048d68754402ff9 100644
--- a/Projects/PISTA/Analysis.cxx
+++ b/Projects/PISTA/Analysis.cxx
@@ -39,6 +39,7 @@ void Analysis::Init(){
   PISTA= (TPISTAPhysics*) m_DetectorManager->GetDetector("PISTA");
   InitialConditions = new TInitialConditions();
   ReactionConditions = new TReactionConditions();
+  InteractionCoordinates = new TInteractionCoordinates();
   InitOutputBranch();
   InitInputBranch();
   Rand = TRandom3();
@@ -60,14 +61,25 @@ void Analysis::TreatEvent(){
   OriginalElab = ReactionConditions->GetKineticEnergy(0);
   OriginalBeamEnergy = ReactionConditions->GetBeamEnergy();
 
+  int mult = InteractionCoordinates->GetDetectedMultiplicity();
+  if(mult>0){
+    for(int i=0; i<mult; i++){
+      double Xpista = InteractionCoordinates->GetDetectedPositionX(i);
+      double Ypista = InteractionCoordinates->GetDetectedPositionY(i);
+      double Zpista = InteractionCoordinates->GetDetectedPositionZ(i);
+      R = sqrt(Xpista*Xpista + Ypista*Ypista + Zpista*Zpista);
+    }
+  }
   XTarget = InitialConditions->GetIncidentPositionX();
   YTarget = InitialConditions->GetIncidentPositionY();
   ZTarget = InitialConditions->GetIncidentPositionZ();
 
   TVector3 BeamDirection = InitialConditions->GetBeamDirection();
   TVector3 BeamPosition(XTarget,YTarget,ZTarget);
+  //TVector3 PositionOnTarget(0,0,0);
+  TVector3 PositionOnTarget(Rand.Gaus(XTarget, 0.6/2.35), Rand.Gaus(YTarget, 0.6/2.35), 0);
 
-  BeamEnergy = InitialConditions->GetIncidentInitialKineticEnergy();
+  BeamEnergy = 1428.;//InitialConditions->GetIncidentInitialKineticEnergy();
   BeamEnergy = U238C.Slow(BeamEnergy,TargetThickness*0.5,0);
 
   Transfer->SetBeamEnergy(BeamEnergy);
@@ -75,8 +87,7 @@ void Analysis::TreatEvent(){
   for(unsigned int i = 0; i<PISTA->EventMultiplicity; i++){
     if(PISTA->E.size()>0){
       double Energy = PISTA->DE[i] + PISTA->E[i];
-
-      TVector3 HitDirection = PISTA->GetPositionOfInteraction(i);
+      TVector3 HitDirection = PISTA->GetPositionOfInteraction(i)-PositionOnTarget;
       //ThetaLab = HitDirection.Angle(BeamDirection);
       ThetaLab = HitDirection.Angle(TVector3(0,0,1));
 
@@ -107,6 +118,7 @@ void Analysis::InitOutputBranch(){
   RootOutput::getInstance()->GetTree()->Branch("ThetaLab",&ThetaLab,"ThetaLab/D");
   RootOutput::getInstance()->GetTree()->Branch("OriginalThetaLab",&OriginalThetaLab,"OriginalThetaLab/D");
   RootOutput::getInstance()->GetTree()->Branch("ThetaCM",&ThetaCM,"ThetaCM/D");
+  RootOutput::getInstance()->GetTree()->Branch("R",&R,"R/D");
 }
 
 ////////////////////////////////////////////////////////////////////////////////
@@ -117,6 +129,9 @@ void Analysis::InitInputBranch(){
   RootInput::getInstance()->GetChain()->SetBranchStatus("ReactionConditions",true);
   RootInput::getInstance()->GetChain()->SetBranchStatus("fRC_*",true);
   RootInput::getInstance()->GetChain()->SetBranchAddress("ReactionConditions",&ReactionConditions);
+  RootInput::getInstance()->GetChain()->SetBranchStatus("InteractionCoordinates",true);
+  RootInput::getInstance()->GetChain()->SetBranchStatus("fDetected_*",true);
+  RootInput::getInstance()->GetChain()->SetBranchAddress("InteractionCoordinates",&InteractionCoordinates);
 }
 
 ////////////////////////////////////////////////////////////////////////////////
@@ -134,6 +149,7 @@ void Analysis::ReInitValue(){
   YTarget = -1000;
   ZTarget = -1000;
   OriginalThetaLab = -1000;
+  R = -1000;
 }
 
 ////////////////////////////////////////////////////////////////////////////////
diff --git a/Projects/PISTA/Analysis.h b/Projects/PISTA/Analysis.h
index 3ec3cf61893310cc6e5a272963e05a2bee31b792..f5b182ca138522491ca781ec07f754d1b87583af 100644
--- a/Projects/PISTA/Analysis.h
+++ b/Projects/PISTA/Analysis.h
@@ -25,6 +25,7 @@
 #include "TPISTAPhysics.h"
 #include "TInitialConditions.h"
 #include "TReactionConditions.h"
+#include "TInteractionCoordinates.h"
 #include "NPEnergyLoss.h"
 #include "NPReaction.h"
 #include "TRandom3.h"
@@ -46,6 +47,7 @@ class Analysis: public NPL::VAnalysis{
   private:
     double OriginalBeamEnergy;
     double BeamEnergy;
+    double R;
     double XTarget;
     double YTarget;
     double ZTarget;
@@ -68,6 +70,7 @@ class Analysis: public NPL::VAnalysis{
 
   private:
     TPISTAPhysics* PISTA;
+    TInteractionCoordinates* InteractionCoordinates;
     TInitialConditions* InitialConditions;
     TReactionConditions* ReactionConditions;
 
diff --git a/Projects/PISTA/PISTA.detector b/Projects/PISTA/PISTA.detector
index bc33042c2a7a66e9f543302264bf1f56b9298a04..d815893669198c4db742f88ce2ee87578f35b6b1 100644
--- a/Projects/PISTA/PISTA.detector
+++ b/Projects/PISTA/PISTA.detector
@@ -9,42 +9,42 @@ Target
  Z= 0 mm
 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
 PISTA
- R= 100 mm
+ R= 85 mm
  THETA= 60 deg
  PHI= 315 deg
 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
 PISTA
- R= 100 mm
+ R= 85 mm
  THETA= 60 deg
  PHI= 270 deg
 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
 PISTA
- R= 100 mm
+ R= 85 mm
  THETA= 60 deg
  PHI= 225 deg
 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
 PISTA
- R= 100 mm
+ R= 85 mm
  THETA= 60 deg
  PHI= 180 deg
 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
 PISTA
- R= 100 mm
+ R= 85 mm
  THETA= 60 deg
  PHI= 135 deg
 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
 PISTA
- R= 100 mm
+ R= 85 mm
  THETA= 60 deg
  PHI= 90 deg
 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
 PISTA
- R= 100 mm
+ R= 85 mm
  THETA= 60 deg
  PHI= 45 deg
 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
 PISTA
- R= 100 mm
+ R= 85 mm
  THETA= 60 deg
  PHI= 0 deg
 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%