diff --git a/NPSimulation/Detectors/Catana/Catana.cc b/NPSimulation/Detectors/Catana/Catana.cc
index 29d0221d2b0a30d120855eea4dccb60e7d5adbab..40775790c2931076a0914bded0edeb3da2658685 100644
--- a/NPSimulation/Detectors/Catana/Catana.cc
+++ b/NPSimulation/Detectors/Catana/Catana.cc
@@ -60,9 +60,9 @@ namespace Catana_NS{
   const double EnergyThreshold = 0.1*MeV;
   const double ResoTime = 4.5*ns ;
   const double ResoEnergy = 1.0*MeV ;
-  double DummyInnerRadius = 80*mm ; 
-  double DummyOuterRadius = 160*mm ; 
-  double Length = 200*mm ;
+  double DummyInnerRadius = 200*mm ; 
+  double DummyOuterRadius = 600*mm ; 
+  double Length = 600*mm ;
   string Material = "CsI";
 }
 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
@@ -75,7 +75,7 @@ Catana::Catana(){
   m_DummyDetector = 0;
 
   // RGB Color + Transparency
-  m_VisCrystal = new G4VisAttributes(G4Colour(1, 0.8, 0, 0.5));   
+  m_VisCrystal = new G4VisAttributes(G4Colour(1, 0.8, 0, 0.2));   
 
 }
 
diff --git a/NPSimulation/Detectors/Strasse/Strasse.cc b/NPSimulation/Detectors/Strasse/Strasse.cc
index 571b4f5f4e1d0016e1cef88e7d9464e35ee25b97..1d8cde5fec8fbc7454d2ace218d5f83b5400c8ef 100644
--- a/NPSimulation/Detectors/Strasse/Strasse.cc
+++ b/NPSimulation/Detectors/Strasse/Strasse.cc
@@ -25,9 +25,8 @@
 #include <limits>
 //G4 Geometry object
 #include "G4Tubs.hh"
-#include "G4Trap.hh"
 #include "G4Box.hh"
-#include "G4Cons.hh"
+#include "G4Sphere.hh"
 #include "G4UnionSolid.hh"
 #include "G4ExtrudedSolid.hh"
 #include "G4SubtractionSolid.hh"
@@ -115,9 +114,15 @@ namespace Strasse_NS{
   ////////////////////
   // Vacuum Chamber //
   ////////////////////
-  double Chamber_Thickness=3*mm;
-  double Chamber_Length=500*mm;
-  double Chamber_Radius=100*mm;
+  double Chamber_Thickness= 3*mm;
+  double Chamber_Cylinder_Length= 400*mm;
+  double Chamber_Radius= 180*mm;
+  double Chamber_ExitTube_Radius= 79.5*mm ;
+  double Chamber_ExitTube_Length= 100*mm;
+  double Chamber_Flange_Inner_Radius= 150*mm;
+  double Chamber_Sphere_Radius= 220*mm ;
+  double Chamber_Sphere_Shift= 60*mm;
+
 }
 
 using namespace Strasse_NS;
@@ -146,7 +151,7 @@ Strasse::Strasse(){
   // Light Grey
   FrameVisAtt = new G4VisAttributes(G4Colour(0.5, 0.5, 0.5)) ;
   // Space transparent
-  ChamberVisAtt = new G4VisAttributes(G4Colour(0.3, 0.4, 0.5,0.1)) ;
+  ChamberVisAtt = new G4VisAttributes(G4Colour(0.3, 0.4, 0.5,0.2)) ;
   // Light Blue
   GuardRingVisAtt = new G4VisAttributes(G4Colour(0, 0, 0,0.5)) ;
 }
@@ -279,7 +284,7 @@ G4LogicalVolume* Strasse::BuildInnerDetector(){
         false,0);
 
     // Sub volume Active Wafer
-        G4Box*  ActiveWaferShape = new G4Box("InnerActiveWaferShape",
+    G4Box*  ActiveWaferShape = new G4Box("InnerActiveWaferShape",
         0.5*m_Active_InnerWafer_Width,
         0.5*Inner_Wafer_Thickness,
         0.5*m_Active_InnerWafer_Length);
@@ -412,7 +417,7 @@ G4LogicalVolume* Strasse::BuildOuterDetector(){
         false,0);
 
     // Sub volume Active Wafer
-        G4Box*  ActiveWaferShape = new G4Box("OuterActiveWaferShape",
+    G4Box*  ActiveWaferShape = new G4Box("OuterActiveWaferShape",
         0.5*m_Active_OuterWafer_Width,
         0.5*Outer_Wafer_Thickness,
         0.5*m_Active_OuterWafer_Length);
@@ -444,17 +449,74 @@ G4LogicalVolume* Strasse::BuildOuterDetector(){
 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
 G4LogicalVolume* Strasse::BuildChamber(){
   if(!m_Chamber){
-   G4Tubs* tub = new G4Tubs("StrasseChamberVolume",
-    Chamber_Radius-Chamber_Thickness,
-    Chamber_Radius,Chamber_Length*0.5,
-    0,360*deg);
+    // Needed Element
     G4Material* Material = MaterialManager::getInstance()->GetMaterialFromLibrary("Al");
-    m_Chamber = new G4LogicalVolume(tub,Material,"logic_Strasse_Chamber",0,0,0);
+    G4RotationMatrix* Rot = new G4RotationMatrix();
+
+    // Main Cylinder
+    G4Tubs* Cylinder = new G4Tubs("StrasseCylinderVolume",
+        Chamber_Radius-Chamber_Thickness,
+        Chamber_Radius,Chamber_Cylinder_Length*0.5,
+        0,360*deg);
+    // for substraction
+    G4Tubs* DummyCyl = new G4Tubs("StrasseDummyCylVolume",
+        0,
+        Chamber_Sphere_Radius*1.1,Chamber_Cylinder_Length*0.5,
+        0,360*deg);
+
+
+  //  G4LogicalVolume* ChamberCyl = new G4LogicalVolume(Cyl,Material,"logic_Strasse_Chamber",0,0,0);
+
+    // Entrance Flange
+    G4Tubs* Flange = new G4Tubs("StrasseFlangeVolume",
+        Chamber_Flange_Inner_Radius,
+        Chamber_Radius,1*cm,
+        0,360*deg);
+
+   // G4LogicalVolume* ChamberFlange = new G4LogicalVolume(Flange,Material,"logic_Strasse_Flange",0,0,0);
+
+    // Spherial Portion
+    G4Sphere* Sphere= new G4Sphere("StrasseSphereVolume",
+        Chamber_Sphere_Radius-Chamber_Thickness,
+        Chamber_Sphere_Radius,
+        0,360*deg,
+        0,180*deg);
+    
+    // Exit tube portion
+    G4Tubs* Tube = new G4Tubs("StrasseTubeVolume",
+        Chamber_ExitTube_Radius-Chamber_Thickness,
+        Chamber_ExitTube_Radius,Chamber_ExitTube_Length*0.5,
+        0,360*deg);
+    G4Tubs* DummyTube = new G4Tubs("StrasseDummyTubeVolume",
+        0,
+        Chamber_ExitTube_Radius*0.99,Chamber_ExitTube_Length*0.5,
+        0,360*deg);
+    
+    //Partial Sphere
+    
+    G4SubtractionSolid* Sphere1= new G4SubtractionSolid("Sphere1",Sphere,DummyCyl,
+      Rot,G4ThreeVector(0,0,-Chamber_Sphere_Shift));
+    G4SubtractionSolid* Sphere2= new G4SubtractionSolid("Sphere2",Sphere1,DummyTube,
+      Rot,G4ThreeVector(0,0,Chamber_Sphere_Radius+Chamber_ExitTube_Length*0.5-2*cm));
+    
+    // Building the whole chamber
+    G4UnionSolid* Chamber1= new G4UnionSolid("Chamber1",Cylinder,Flange,
+      Rot,G4ThreeVector(0,0,-Chamber_Cylinder_Length*0.5));
+
+    G4UnionSolid* Chamber2= new G4UnionSolid("Chamber2",Chamber1,Sphere2,
+      Rot,G4ThreeVector(0,0,Chamber_Sphere_Shift));
+
+    G4UnionSolid* Chamber3= new G4UnionSolid("Chamber3",Chamber2,Tube,
+      Rot,G4ThreeVector(0,0,Chamber_Sphere_Shift+Chamber_Sphere_Radius+Chamber_ExitTube_Length*0.5-2*cm));
+
+    m_Chamber = new G4LogicalVolume(Chamber3,Material,"logic_Strasse_Chamber",0,0,0);
+
+
     m_Chamber->SetVisAttributes(ChamberVisAtt);
   }
 
 
-return m_Chamber;
+  return m_Chamber;
 
 }
 
@@ -510,8 +572,13 @@ void Strasse::ReadConfiguration(NPL::InputParser parser){
     "Outer_Wafer_TransverseStrips",
     "Outer_Wafer_LongitudinalStrips",
     "Chamber_Thickness",
-    "Chamber_Length",
-    "Chamber_Radius"
+    "Chamber_Cylinder_Length",
+    "Chamber_Radius",
+    "Chamber_ExitTube_Radius",
+    "Chamber_ExitTube_Length",
+    "Chamber_Flange_Inner_Radius",
+    "Chamber_Sphere_Radius",
+    "Chamber_Sphere_Shift"
   };
 
   if(blocks_info[0]->HasTokenList(info)){
@@ -549,8 +616,13 @@ void Strasse::ReadConfiguration(NPL::InputParser parser){
     Outer_PCB_MidWidth = blocks_info[0]->GetDouble("Outer_PCB_MidWidth","mm");        
     Outer_PCB_Thickness = blocks_info[0]->GetDouble("Outer_PCB_Thickness","mm");       
     Chamber_Thickness= blocks_info[0]->GetDouble("Chamber_Thickness","mm"); 
-    Chamber_Length= blocks_info[0]->GetDouble("Chamber_Length","mm");        
+    Chamber_Cylinder_Length= blocks_info[0]->GetDouble("Chamber_Cylinder_Length","mm");        
     Chamber_Radius= blocks_info[0]->GetDouble("Chamber_Radius","mm");       
+    Chamber_ExitTube_Radius=blocks_info[0]->GetDouble("Chamber_ExitTube_Radius","mm");
+    Chamber_ExitTube_Length=blocks_info[0]->GetDouble("Chamber_ExitTube_Length","mm");
+    Chamber_Flange_Inner_Radius=blocks_info[0]->GetDouble("Chamber_Flange_Inner_Radius","mm");
+    Chamber_Sphere_Radius=blocks_info[0]->GetDouble("Chamber_Sphere_Radius","mm");
+    Chamber_Sphere_Shift=blocks_info[0]->GetDouble("Chamber_Sphere_Shift","mm");
   }
 
   else{
@@ -605,7 +677,7 @@ void Strasse::ReadConfiguration(NPL::InputParser parser){
       exit(1);
     }
   }
-  
+
   // Chamber
   vector<std::string> token = {"Z"};
   vector<NPL::InputBlock*> blocks_chamber = parser.GetAllBlocksWithTokenAndValue("Strasse","Chamber");
@@ -636,7 +708,7 @@ void Strasse::ReadConfiguration(NPL::InputParser parser){
 // Construct detector and inialise sensitive part.
 // Called After DetecorConstruction::AddDetector Method
 void Strasse::ConstructDetector(G4LogicalVolume* world){
- 
+
   // Inner Barrel
   for (unsigned short i = 0 ; i < m_Inner_R.size() ; i++) {
     G4ThreeVector Det_pos = G4ThreeVector(m_Inner_Shift[i],m_Inner_R[i]+0.5*Inner_PCB_Thickness,m_Inner_Z[i]) ;
@@ -661,7 +733,7 @@ void Strasse::ConstructDetector(G4LogicalVolume* world){
 
   // Chamber 
   for (unsigned short i = 0 ; i < m_Chamber_Z.size() ; i++) {
-    G4ThreeVector Det_pos = G4ThreeVector(0,0,m_Chamber_Z[i]) ;
+    G4ThreeVector Det_pos = G4ThreeVector(0,0,-m_Chamber_Z[i]) ;
     G4RotationMatrix* Rot =  new G4RotationMatrix();
 
     new G4PVPlacement(G4Transform3D(*Rot,Det_pos),
@@ -700,7 +772,7 @@ void Strasse::ReadSensitive(const G4Event* ){
       m_Event->SetInnerTE(DetNbr, StripTransverse, Energy);
     }
   }
-  
+
   size = InnerScorer1->GetLengthMult(); 
   for(unsigned int i = 0 ; i < size ; i++){
     double Energy = RandGauss::shoot(InnerScorer1->GetEnergyLength(i), ResoEnergy);   
@@ -734,9 +806,9 @@ void Strasse::ReadSensitive(const G4Event* ){
     }
   }
   InnerScorer2->clear();
-  
 
-  
+
+
   ///////////
   // Outer barrel scorer
   DSSDScorers::PS_Rectangle* OuterScorer1= (DSSDScorers::PS_Rectangle*) m_OuterScorer1->GetPrimitive(0);
@@ -797,15 +869,14 @@ void Strasse::InitializeScorers() {
   m_InnerScorer2 = CheckScorer("InnerScorer2",already_exist) ;
   m_OuterScorer2 = CheckScorer("OuterScorer2",already_exist) ;
 
-
   if(already_exist) 
     return ;
 
   // Otherwise the scorer is initialised
   m_Active_InnerWafer_Width= Inner_Wafer_Width-2.*Inner_Wafer_GuardRing;
   m_Active_InnerWafer_Length= 
-  Inner_Wafer_Length-Inner_Wafer_PADExternal-Inner_Wafer_PADInternal-2*Inner_Wafer_GuardRing;
-    
+    Inner_Wafer_Length-Inner_Wafer_PADExternal-Inner_Wafer_PADInternal-2*Inner_Wafer_GuardRing;
+
 
   G4VPrimitiveScorer* InnerScorer1 = new DSSDScorers::PS_Rectangle("InnerScorer1",2,
       m_Active_InnerWafer_Width,
@@ -820,10 +891,9 @@ void Strasse::InitializeScorers() {
       Inner_Wafer_TransverseStrips,0,"xz");
 
 
-
   m_Active_OuterWafer_Width=Outer_Wafer_Width-2.*Outer_Wafer_GuardRing;
   m_Active_OuterWafer_Length=
-  Outer_Wafer_Length-Outer_Wafer_PADExternal-Outer_Wafer_PADInternal-2*Outer_Wafer_GuardRing;
+    Outer_Wafer_Length-Outer_Wafer_PADExternal-Outer_Wafer_PADInternal-2*Outer_Wafer_GuardRing;
 
 
   G4VPrimitiveScorer* OuterScorer1 = new DSSDScorers::PS_Rectangle("OuterScorer1",2,
diff --git a/Projects/Strasse/Analysis.cxx b/Projects/Strasse/Analysis.cxx
index 9dcea923c3147fc710dfbf27541f454e3981d779..2ad26b6c1093b352337f3bdfc27aa5131e29e769 100644
--- a/Projects/Strasse/Analysis.cxx
+++ b/Projects/Strasse/Analysis.cxx
@@ -67,11 +67,12 @@ void Analysis::TreatEvent(){
     TVector3 Proton2 = OuterPos2-InnerPos2;
 
     double deltaPhi = abs(Proton1.Phi()/deg-Proton2.Phi()/deg);
-    double sumTheta = Proton1.Theta()/deg+Proton2.Theta()/deg
-    
+    double sumTheta = Proton1.Theta()/deg+Proton2.Theta()/deg;
+    double OpeningAngle = Proton1.Angle(Proton2)/deg;
+   cout << OpeningAngle << endl;  
     // reject event that make no physical sense
     if(deltaPhi<170 && sumTheta<80){
-      return
+      return;
       }
     
     // computing minimum distance of the two lines
diff --git a/Projects/Strasse/alias.detector b/Projects/Strasse/alias.detector
index 78a416f93c29856b0b5b589693298342a0814b1a..af1844cf94cb18f7c4e891f3d2604425564f52e6 100644
--- a/Projects/Strasse/alias.detector
+++ b/Projects/Strasse/alias.detector
@@ -43,9 +43,15 @@ Strasse Info
   Outer_PCB_Thickness= 1.6 mm
   Outer_Wafer_TransverseStrips= 605
   Outer_Wafer_LongitudinalStrips= 325
+  % all radius are external, internal deduced from thickness
   Chamber_Thickness= 3 mm
-  Chamber_Length= 500 mm
-  Chamber_Radius= 100 mm
+  Chamber_Cylinder_Length= 360 mm
+  Chamber_Radius= 180 mm
+  Chamber_ExitTube_Radius= 79.5 mm 
+  Chamber_ExitTube_Length= 100 mm
+  Chamber_Flange_Inner_Radius= 50 mm
+  Chamber_Sphere_Radius= 220 mm 
+  Chamber_Sphere_Shift= 60 mm
 
 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%1
 Alias InnerShift
@@ -89,4 +95,8 @@ Strasse Outer
 
 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%1
 Strasse Chamber
-  Z= 0 mm
+  Z= -30 mm
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+Catana Dummy
+ Z= 100 mm
+
diff --git a/Projects/Strasse/strasse_optimized.detector b/Projects/Strasse/strasse_optimized.detector
index 4a7752678e5a54aaa3dd0ba2284b9dfe863babe6..986bac241f56b238b63401ed288c68068cd3352b 100644
--- a/Projects/Strasse/strasse_optimized.detector
+++ b/Projects/Strasse/strasse_optimized.detector
@@ -43,9 +43,16 @@ Strasse Info
   Outer_PCB_Thickness= 1.6 mm
   Outer_Wafer_TransverseStrips= 605
   Outer_Wafer_LongitudinalStrips= 325
+  % all radius are external, internal deduced from thickness
   Chamber_Thickness= 3 mm
-  Chamber_Length= 500 mm
-  Chamber_Radius= 100 mm
+  Chamber_Cylinder_Length= 360 mm
+  Chamber_Radius= 180 mm
+  Chamber_ExitTube_Radius= 79.5 mm 
+  Chamber_ExitTube_Length= 100 mm
+  Chamber_Flange_Inner_Radius= 50 mm
+  Chamber_Sphere_Radius= 220 mm 
+  Chamber_Sphere_Shift= 60 mm
+
 
 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%1
 Alias InnerShift
@@ -89,4 +96,9 @@ Strasse Outer
 
 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%1
 Strasse Chamber
-  Z= 0 mm
+  Z= -30 mm
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+Catana Dummy
+ Z= 300 mm
+
diff --git a/Projects/Strasse/strasse_ref.detector b/Projects/Strasse/strasse_ref.detector
index 30ee9c309158c99eb7bf4e9091b0a4216104582b..8789c5858e4bc6c4e565fe2ee3046981ec74bd97 100644
--- a/Projects/Strasse/strasse_ref.detector
+++ b/Projects/Strasse/strasse_ref.detector
@@ -89,4 +89,9 @@ Strasse Outer
 
 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%1
 Strasse Chamber
-  Z= 0 mm
+  Z= -30 mm
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+Catana Dummy
+ Z= 300 mm
+