diff --git a/Inputs/EventGenerator/10He.reaction b/Inputs/EventGenerator/10He.reaction
index 2c89aa85c0eaa4890c09a387316198103333f977..2c1407b0f4d2339fef7a3ead00cc6e449d203b9a 100644
--- a/Inputs/EventGenerator/10He.reaction
+++ b/Inputs/EventGenerator/10He.reaction
@@ -19,7 +19,7 @@ TransfertToResonance
 	ResonanceDecayA= 8
 	CrossSectionPath= 11Li(d,3He)10He.txt	
 	ShootLight= 1
-	ShootHeavy= 0
+	ShootHeavy= 1
 	ShootDecayProduct= 0
 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
 
diff --git a/NPAnalysis/10He_Riken/src/Analysis.cc b/NPAnalysis/10He_Riken/src/Analysis.cc
index fff2be80b9eface95fc334174485f0490c498e9a..66d1094a2fdb0fe8a1f0988ac8967591c4127064 100644
--- a/NPAnalysis/10He_Riken/src/Analysis.cc
+++ b/NPAnalysis/10He_Riken/src/Analysis.cc
@@ -107,6 +107,9 @@ int main(int argc,char** argv)
 			myDetector -> BuildPhysicalEvent()				;
 			////
 			
+			
+			
+			
 /*			// Target (from initial condition)
 			XTarget = Init->GetICPositionX(0);
 			YTarget = Init->GetICPositionY(0);
diff --git a/NPDocumentation/NPTool_UserGuide.tex b/NPDocumentation/NPTool_UserGuide.tex
index 5de778589ad18ba5aaceed155d4044b2a7486748..d5c3ee79fbb40a800d52a43128d95b311de64468 100755
--- a/NPDocumentation/NPTool_UserGuide.tex
+++ b/NPDocumentation/NPTool_UserGuide.tex
@@ -38,9 +38,14 @@
 \chapter[NPTool]{NPTool}
 \section {Introduction}
 
-NPTool, Nuclear Physics Tool, aim to be a coherent set of programm usefull for Nuclear Physicist, especially those studying structure experimentally. Because each experiment is differents, people get used to exchange code and modified it to their needs. What NPT do is provinding an (try to be) universal framework so user can add their own functionnalities and share it with their collaborators. Geant4 and ROOT are now popular toolkit among the community, that's why NPTool use them widely and try to give a step by step process to use them efficiently.
+NPTool, Nuclear Physics Tool, aim to be a coherent set of programm usefull for Nuclear Physicist, especially those studying structure experimentally. 
+Because each experiment is differents, people get used to exchange code and modified it to their needs. 
+What NPT do is provinding an (try to be) universal framework so user can add their own functionnalities and share it with their collaborators. 
+Geant4 and ROOT are now popular toolkit among the community, that's why NPTool use them widely and try to give a step by step process to use them efficiently.
 
-In NPTool analysis and simulation are linked together. The proposed way of working is to generate an experiment like set of data and then annalysing with the future analysis code. Working this way help saving time by doing the biggest part of the analysis work in advance. It also help to understand what happen during analysis. 
+In NPTool analysis and simulation are linked together. The proposed way of working is to generate an experiment like set of data and then annalysing with the future analysis code. 
+Working this way help saving time by doing the biggest part of the analysis work in advance. 
+It also help to understand what happen during analysis. 
 
 				\begin{figure}[!htbp]
 					\centering
@@ -57,7 +62,9 @@ In NPTool analysis and simulation are linked together. The proposed way of worki
 				
 				
 \section{The directory layout}
-	NPTool come with a specific directory layout. The different make file and source are made to use this layout, using the environment variable. Here is the standard layout:
+	NPTool come with a specific directory layout. 
+	The different make file and source are made to use this layout, using the environment variable. 
+	Here is the standard layout:
 		\begin{itemize}
 			\item[-] NPLib : hold the libraries used both in NPA and NPS (NB: those librairies can be use in your own independant code if you need)
 			\item[-] NPSimulation : hold the NPSimulation code
diff --git a/NPLib/Plastic/TPlasticPhysics.cxx b/NPLib/Plastic/TPlasticPhysics.cxx
index 00ddd0bcf7cb5a0efefb39ca6cacb2004ab44119..093f1ee58f6e74d8d2d0b1353c2b662821bfcbe0 100644
--- a/NPLib/Plastic/TPlasticPhysics.cxx
+++ b/NPLib/Plastic/TPlasticPhysics.cxx
@@ -64,7 +64,6 @@ TPlasticPhysics::~TPlasticPhysics()
 void TPlasticPhysics::Clear()
 	{
 		DetectorNumber	.clear()	;
-		StripNumber			.clear()	;
 		Energy					.clear()	;
 		Time						.clear()	;
 	}
@@ -240,7 +239,6 @@ void TPlasticPhysics::BuildSimplePhysicalEvent()
 					{
 					
 						DetectorNumber	.push_back( EventData->GetPlasticNumber(i) )	;
-						StripNumber			.push_back( EventData->GetPlasticNumber(i)    )	;
 						
 						Energy					.push_back(
 							CalibrationManager::getInstance()->ApplyCalibration(	"Plastic/Detector" + itoa( EventData->GetPlasticNumber(i) ) +"_E",	
diff --git a/NPLib/Plastic/TPlasticPhysics.h b/NPLib/Plastic/TPlasticPhysics.h
index f1eedb765f96dee90100814473df8c6993fbc5fe..a00c34437ad3ac4caa7aee9195a241ec42fd6fdf 100644
--- a/NPLib/Plastic/TPlasticPhysics.h
+++ b/NPLib/Plastic/TPlasticPhysics.h
@@ -43,7 +43,6 @@ class TPlasticPhysics : public TObject, public NPA::VDetector
 	public:	//	Calibrated Data
 
 		vector<UShort_t>	DetectorNumber	;
-		vector<UShort_t>	StripNumber			;
 		vector<Double_t>	Energy					;
 		vector<Double_t>	Time						;
 
diff --git a/NPLib/README b/NPLib/README
index f66fd68731fd498febac8fdd513c7ba77166f0f6..b6e12f885caf54759db1f9293bc1f60988fbee99 100644
--- a/NPLib/README
+++ b/NPLib/README
@@ -70,7 +70,11 @@ VI) InteractionCoordinates
 	output TTree of the G4 simulation.
 
 VII) CalibrationManager
-
+	This directory includes one library:
+	libCalibrationManager.so
+		This folder contain the the class object for managing calibration file.
+	A caliration manager singleton is instantiate in NPAnalysis project.
+	 
 VIII) DummyDetector
 	This directory includes one library:
 		libDUMMYDetector.so
@@ -114,3 +118,7 @@ XI) GASPARD
 		obtained from NPSimulation. This library is *only* used by NPAnalysis.
 
 XII) VDetector
+		This directory includes one library:
+		libVDetector.so
+			VDetector is a virtual class used for analysis purpose. It comes with several standards method definition called in analysis programm automatically.
+			Those method need to be implemented for each detector inheritted from the VDetector class.
diff --git a/NPLib/Tools/NPReaction.cxx b/NPLib/Tools/NPReaction.cxx
index 1eaec349f49062837ab76ddcebbb9574127b1d14..13121b3ec5736bede26ffdb8bb3803707e436e9b 100644
--- a/NPLib/Tools/NPReaction.cxx
+++ b/NPLib/Tools/NPReaction.cxx
@@ -62,6 +62,7 @@ Reaction::Reaction()
    fThetaCM    = 0;
    fExcitation = 0;
    fQValue     = 0;
+   initializePrecomputeVariable();
 }
 
 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... 
@@ -113,6 +114,7 @@ void Reaction::SetEveryThing(string name1, string name2, string name3, string na
    CrossSectionSize = CrossSectionBuffer.size();
    CrossSection = new double[CrossSectionSize] ;
    for(int i = 0 ; i <CrossSectionSize ; i++ )	CrossSection[i] = CrossSectionBuffer[i];
+   initializePrecomputeVariable();
 }
 
 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... 
@@ -136,33 +138,6 @@ void Reaction::KineRelativistic(double &ThetaLab3, double &EnergieLab3,
 // 2-body relativistic kinematics: direct + inverse
 // EnergieLab3,4 : lab energy in MeV of the 2 ejectiles
 // ThetaLab3,4   : angles in rad
-
-   double m1 = fNoy1->Mass();
-   double m2 = fNoy2->Mass();
-   double m3 = fNoy3->Mass();
-   double m4 = fNoy4->Mass() + fExcitation;
-
-   // center-of-mass velocity
-   double WtotLab = (fBeamEnergy + m1) + m2;
-   double P1 = sqrt(pow(fBeamEnergy,2) + 2*m1*fBeamEnergy);
-   double B = P1 / WtotLab;
-   double G = 1 / sqrt(1 - pow(B,2));
-
-   // total energy of the ejectiles in the center-of-mass
-   double W3cm = (pow(WtotLab,2) + pow(G,2)*(pow(m3,2) - pow(m4,2)))
-   		   / (2 * G * WtotLab);
-   double W4cm = (pow(WtotLab,2) + pow(G,2)*(pow(m4,2) - pow(m3,2)))
-   		   / (2 * G * WtotLab);
-
-   // velocity of the ejectiles in the center-of-mass
-   double beta3cm  = sqrt(1 - pow(m3,2)/pow(W3cm,2));
-   double beta4cm  = sqrt(1 - pow(m4,2)/pow(W4cm,2));
-//   double gamma3cm = 1 / sqrt(1 - pow(beta3cm,2));
-//   double gamma4cm = 1 / sqrt(1 - pow(beta4cm,2));
-
-   // Constants of the kinematics
-   double K3 = B / beta3cm;
-   double K4 = B / beta4cm;
    
    // case of inverse kinematics
    double theta = fThetaCM;
@@ -194,11 +169,6 @@ double Reaction::ReconstructRelativistic(double EnergyLab, double ThetaLab) cons
 		// EnergyLab in MeV
 		// ThetaLab in rad
 
-		double m1 = fNoy1->Mass()	;
-		double m2 = fNoy2->Mass()	;
-		double m3 = fNoy3->Mass()	;
-		double m4 = fNoy4->Mass()	;	
-
 		double P1 = sqrt(2*m1*fBeamEnergy+(fBeamEnergy*fBeamEnergy))	;
 		double P3 = sqrt(2*m3*EnergyLab+(EnergyLab*EnergyLab))			;
 		double P4 = sqrt(P1*P1+P3*P3-(2*P1*P3*cos(ThetaLab)))			;
@@ -234,11 +204,7 @@ double Reaction::ReconstructRelativistic(double EnergyLab, double ThetaLab) cons
 double  Reaction::EnergyLabToThetaCM( double EnergyLab , double ExcitationEnergy ) const
 	{
 		if(ExcitationEnergy == -500) ExcitationEnergy = fExcitation; 
-	
-		double m1 = fNoy1->Mass()				;
-		double m2 = fNoy2->Mass()				;
-		double m3 = fNoy3->Mass()				;
-		double m4 = (fNoy4->Mass()+ExcitationEnergy)	;
+
 		double E1 = (fBeamEnergy+m1)			;
 		double E3 = (EnergyLab+m3)				;
 		  
@@ -398,7 +364,34 @@ void Reaction::ReadConfigurationFile(string Path)
 	}
 	
 	
+void Reaction::initializePrecomputeVariable()
+	{
+		 m1 = fNoy1->Mass();
+		 m2 = fNoy2->Mass();
+		 m3 = fNoy3->Mass();
+		 m4 = fNoy4->Mass() + fExcitation;
+
+		// center-of-mass velocity
+		 WtotLab = (fBeamEnergy + m1) + m2;
+		 P1 = sqrt(pow(fBeamEnergy,2) + 2*m1*fBeamEnergy);
+		 B = P1 / WtotLab;
+		 G = 1 / sqrt(1 - pow(B,2));
+
+		// total energy of the ejectiles in the center-of-mass
+		 W3cm = (pow(WtotLab,2) + pow(G,2)*(pow(m3,2) - pow(m4,2)))
+			   / (2 * G * WtotLab);
+		 W4cm = (pow(WtotLab,2) + pow(G,2)*(pow(m4,2) - pow(m3,2)))
+			   / (2 * G * WtotLab);
+
+		// velocity of the ejectiles in the center-of-mass
+		 beta3cm  = sqrt(1 - pow(m3,2)/pow(W3cm,2));
+		 beta4cm  = sqrt(1 - pow(m4,2)/pow(W4cm,2));
+
+		// Constants of the kinematics
+		 K3 = B / beta3cm;
+		 K4 = B / beta4cm;
 	
+	}
 	
 	
 	
diff --git a/NPLib/Tools/NPReaction.h b/NPLib/Tools/NPReaction.h
index d8d638aea81d5107513ad4d008a428af8e34bf3b..20e1136b8bbf8acd7fa5ed467cb5619b49c10640 100644
--- a/NPLib/Tools/NPReaction.h
+++ b/NPLib/Tools/NPReaction.h
@@ -63,26 +63,54 @@ namespace NPL
 			double	 		fThetaCM			;	//	Center-of-mass angle in radian
 			double	 		fExcitation			;	//	Excitation energy in MeV
 			double*			CrossSection		;	//	Differential CrossSection
-			int				CrossSectionSize	;	//	Size of array containing Differention CrossSection
+			int					CrossSectionSize	;	//	Size of array containing Differention CrossSection
 		   
 		public:
 			// Getters and Setters
 			void				SetBeamEnergy		(double efais)	{fBeamEnergy = efais;}
 			void				SetThetaCM			(double angle)	{fThetaCM = angle;}
 			void				SetExcitation		(double exci)	{fExcitation = exci;}
-			double				GetBeamEnergy() 	const		 	{return fBeamEnergy;}
-			double				GetThetaCM() 		const 			{return fThetaCM;}
-			double				GetExcitation() 	const 			{return fExcitation;}
-			double				GetQValue() 		const 			{return fQValue;}
-			Nucleus*			GetNucleus1() 		const 			{return fNoy1;}
-			Nucleus*			GetNucleus2() 		const 			{return fNoy2;}
-			Nucleus*			GetNucleus3() 		const 			{return fNoy3;}
-			Nucleus*			GetNucleus4() 		const 			{return fNoy4;}  
-			double*				GetCrossSection()	const			{return CrossSection;} 
+			double			GetBeamEnergy() 	const		 	{return fBeamEnergy;}
+			double			GetThetaCM() 		const 			{return fThetaCM;}
+			double			GetExcitation() 	const 			{return fExcitation;}
+			double			GetQValue() 		const 			{return fQValue;}
+			Nucleus*		GetNucleus1() 		const 			{return fNoy1;}
+			Nucleus*		GetNucleus2() 		const 			{return fNoy2;}
+			Nucleus*		GetNucleus3() 		const 			{return fNoy3;}
+			Nucleus*		GetNucleus4() 		const 			{return fNoy4;}  
+			double*			GetCrossSection()	const			{return CrossSection;} 
 			int					GetCrossSectionSize()		const			{return CrossSectionSize;} 
 
-			//	Kinematics	//
-		   
+
+
+
+		private:	//	intern precompute variable
+			void initializePrecomputeVariable();
+			double m1 ;
+			double m2 ;
+			double m3 ;
+			double m4 ;
+
+			// center-of-mass velocity
+			double WtotLab ;
+			double P1 ;
+			double B ;
+			double G ;
+
+			// total energy of the ejectiles in the center-of-mass
+			double W3cm ;
+			double W4cm ;
+
+			// velocity of the ejectiles in the center-of-mass
+			double beta3cm  ;
+			double beta4cm  ;
+
+			// Constants of the kinematics
+			double K3 ;
+			double K4 ;
+
+			
+		 public:	//	Kinematics
 			//	Compute ThetaLab and EnergyLab for product of reaction
 			void		KineRelativistic(	double &ThetaLab3	, 
 										 	double &EnergieLab3	,