diff --git a/Inputs/DetectorConfiguration/sharc.detector b/Inputs/DetectorConfiguration/sharc.detector
index 3d176264401e2b57083ad0cdbddb1b46ec4a07bf..45541fea70a76832652bc5a8156935bc69333ddf 100644
--- a/Inputs/DetectorConfiguration/sharc.detector
+++ b/Inputs/DetectorConfiguration/sharc.detector
@@ -14,22 +14,22 @@ Target
 Sharc
 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%
   %Upstream CD
-  SharcQQQ
+  %SharcQQQ
     Z= -100
     R= 0
     Phi= 0
     ThicknessDector= 100
-  SharcQQQ
+  %SharcQQQ
     Z= -100
     R= 0
     Phi= 90
     ThicknessDector= 100
-  SharcQQQ
+  %SharcQQQ
     Z= -100
     R= 0
     Phi= 180
     ThicknessDector= 100
-  SharcQQQ
+  %SharcQQQ
     Z= -100
     R= 0
     Phi= 270
@@ -38,7 +38,7 @@ Sharc
   % Upstream Box
   SharcBOX
     Z= -40
-    ThicknessDector1= 0
+    ThicknessDector1= 100
     ThicknessDector2= 100
     ThicknessDector3= 100
     ThicknessDector4= 100
@@ -48,7 +48,7 @@ Sharc
     ThicknessPAD4= 0
 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%
   % Down Stream Box
-  SharcBOX
+  %SharcBOX
     Z= 40
     ThicknessDector1= 100
     ThicknessDector2= 100
@@ -60,22 +60,22 @@ Sharc
     ThicknessPAD4= 1000
 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%
   %Downstream CD
-  SharcQQQ
+  %SharcQQQ
     Z= 100
     R= 0
     Phi= 0
     ThicknessDector= 100
-  SharcQQQ
+  %SharcQQQ
     Z= 100
     R= 0
     Phi= 90
     ThicknessDector= 100
-  SharcQQQ
+  %SharcQQQ
     Z= 100
     R= 0
     Phi= 180
     ThicknessDector= 100
-  SharcQQQ
+  %SharcQQQ
     Z= 100
     R= 0
     Phi= 270
diff --git a/NPLib/Sharc/Makefile b/NPLib/Sharc/Makefile
new file mode 100644
index 0000000000000000000000000000000000000000..403a56ae7f7cf08f43984604ace1e29c199f867f
--- /dev/null
+++ b/NPLib/Sharc/Makefile
@@ -0,0 +1,43 @@
+include ../Makefile.arch
+ 
+#------------------------------------------------------------------------------
+SHARELIB      =  libSharcData.so 
+#libSharcPhysics.so
+
+all:            $(SHARELIB)
+#------------------------------------------------------------------------------
+############### Detector ##############
+
+## Sharc ##
+libSharcData.so:	TSharcData.o	TSharcDataDict.o
+		$(LD) $(SOFLAGS) $^ $(OutPutOpt) $@
+
+TSharcDataDict.cxx:	TSharcData.h
+			rootcint -f $@ -c $^
+
+#libSharcPhysics.so:	TSharcPhysics.o	TSharcPhysicsDict.o
+#		$(LD) $(SOFLAGS) $^ $(OutPutOpt) $@
+
+#TSharcPhysicsDict.cxx:	TSharcPhysics.h
+#			rootcint -f $@ -c $^
+			
+# dependances
+TSharcData.o:		TSharcData.cxx	TSharcData.h
+#TSharcPhysics.o:	TSharcPhysics.cxx	TSharcPhysics.h
+#######################################
+
+############# Clean and More ##########
+clean:
+	@rm -f core *~ *.o *Dict*
+
+distclean:
+	  make clean; rm -f *.so
+
+.SUFFIXES: .$(SrcSuf)
+
+###
+
+.$(SrcSuf).$(ObjSuf):
+	$(CXX) $(CXXFLAGS) $(INCLUDE) -c $<
+
+
diff --git a/NPLib/Sharc/TSharcData.cxx b/NPLib/Sharc/TSharcData.cxx
new file mode 100644
index 0000000000000000000000000000000000000000..c57d9b2e5fe28e5658da3052697f5b578ab62bac
--- /dev/null
+++ b/NPLib/Sharc/TSharcData.cxx
@@ -0,0 +1,75 @@
+/*****************************************************************************
+ * Copyright (C) 2009-2010   this file is part of the NPTool Project         *
+ *                                                                           *
+ * For the licensing terms see $NPTOOL/Licence/NPTool_Licence                *
+ * For the list of contributors see $NPTOOL/Licence/Contributors             *
+ *****************************************************************************/
+
+/*****************************************************************************
+ * Original Author: Adrien MATTA  contact address: matta@ipno.in2p3.fr       *
+ *                                                                           *
+ * Creation Date  : febuary 2009                                             *
+ * Last update    :                                                          *
+ *---------------------------------------------------------------------------*
+ * Decription:                                                               *
+ *  This class hold Sharc Raw data                                           *
+ *                                                                           *
+ *---------------------------------------------------------------------------*
+ * Comment:                                                                  *
+ *                                                                           *
+ *                                                                           *
+ *****************************************************************************/
+#include <iostream>
+using namespace std;
+
+#include "TSharcData.h"
+
+ClassImp(TSharcData)
+
+/////////////////////////
+TSharcData::TSharcData()
+{
+  // Default constructor
+  Clear();
+}
+
+/////////////////////////
+TSharcData::~TSharcData()
+{
+  Clear();
+}
+
+/////////////////////////
+void TSharcData::Clear()
+{
+  fSharc_StripFront_DetectorNbr.clear();
+  fSharc_StripFront_StripNbr.clear();
+  fSharc_StripFront_Energy.clear();
+  fSharc_StripFront_Time.clear();
+  
+  fSharc_StripBack_DetectorNbr.clear();
+  fSharc_StripBack_StripNbr.clear();
+  fSharc_StripBack_Energy.clear();
+  fSharc_StripBack_Time.clear();
+}
+
+/////////////////////////
+void TSharcData::Dump() const
+{
+  // Energy
+  cout << "Sharc_StripFront_Mult = " << fSharc_StripFront_DetectorNbr.size() << endl;
+  
+  // Front
+  for (UShort_t i = 0; i < fSharc_StripFront_DetectorNbr.size(); i++){
+    cout << "DetNbr: " << fSharc_StripFront_DetectorNbr[i]
+         << " Strip: " << fSharc_StripFront_StripNbr[i]
+         << " Energy: " << fSharc_StripFront_Energy[i] << endl;
+  }
+  
+  // Back
+  for (UShort_t i = 0; i < fSharc_StripFront_DetectorNbr.size(); i++){
+    cout << "DetNbr: " << fSharc_StripFront_DetectorNbr[i]
+    << " Strip: " << fSharc_StripFront_StripNbr[i]
+    << " Energy: " << fSharc_StripFront_Energy[i] << endl;
+  }
+}
\ No newline at end of file
diff --git a/NPLib/Sharc/TSharcData.h b/NPLib/Sharc/TSharcData.h
new file mode 100644
index 0000000000000000000000000000000000000000..a0ac1063d86daab03189b89b94e0539a4292a5de
--- /dev/null
+++ b/NPLib/Sharc/TSharcData.h
@@ -0,0 +1,75 @@
+#ifndef __SharcDATA__
+#define __SharcDATA__
+/*****************************************************************************
+ * Copyright (C) 2009-2010   this file is part of the NPTool Project         *
+ *                                                                           *
+ * For the licensing terms see $NPTOOL/Licence/NPTool_Licence                *
+ * For the list of contributors see $NPTOOL/Licence/Contributors             *
+ *****************************************************************************/
+
+/*****************************************************************************
+ * Original Author: Adrien MATTA  contact address: a.matta@surrey.ac.uk      *
+ *                                                                           *
+ * Creation Date  : November 2012                                            *
+ * Last update    :                                                          *
+ *---------------------------------------------------------------------------*
+ * Decription:                                                               *
+ *  This class hold the Sharc Silicon array raw data (Made for TIG64 card)   *
+ *                                                                           *
+ *---------------------------------------------------------------------------*
+ * Comment:                                                                  *
+ *                                                                           *
+ *                                                                           *
+ *****************************************************************************/
+#include <vector>
+#include "TObject.h"
+using namespace std ;
+
+class TSharcData : public TObject {
+private:
+  // Sharc
+  // Energy
+  vector<UShort_t>   fSharc_StripFront_DetectorNbr;
+  vector<UShort_t>   fSharc_StripFront_StripNbr;
+  vector<Double_t>   fSharc_StripFront_Energy;
+  vector<Double_t>   fSharc_StripFront_Time;
+  
+  vector<UShort_t>   fSharc_StripBack_DetectorNbr;
+  vector<UShort_t>   fSharc_StripBack_StripNbr;
+  vector<Double_t>   fSharc_StripBack_Energy;
+  vector<Double_t>   fSharc_StripBack_Time;
+  
+public:
+  TSharcData();
+  virtual ~TSharcData();
+  
+  void Clear();
+  void Clear(const Option_t*) {};
+  void Dump() const;
+  
+  /////////////////////           SETTERS           ////////////////////////
+  void SetFrontE_DetectorNbr(UShort_t DetNbr){fSharc_StripFront_DetectorNbr.push_back(DetNbr);}
+  void SetFrontE_StripNbr(UShort_t StripNbr){fSharc_StripFront_StripNbr.push_back(StripNbr);}
+  void SetFrontE_Energy(Double_t Energy){fSharc_StripFront_Energy.push_back(Energy);}
+  void SetFrontE_Time(Double_t Time){fSharc_StripFront_Time.push_back(Time);}
+  
+  void SetBackE_DetectorNbr(UShort_t DetNbr){fSharc_StripBack_DetectorNbr.push_back(DetNbr);}
+  void SetBackE_StripNbr(UShort_t StripNbr){fSharc_StripBack_StripNbr.push_back(StripNbr);}
+  void SetBackE_Energy(Double_t Energy){fSharc_StripBack_Energy.push_back(Energy);}
+  void SetBackE_Time(Double_t Time){fSharc_StripBack_Time.push_back(Time);}
+  
+  /////////////////////           GETTERS           ////////////////////////
+  UShort_t GetFrontE_DetectorNbr(unsigned int i){return fSharc_StripFront_DetectorNbr[i];}
+  UShort_t GetFrontE_StripNbr(unsigned int i)   {return fSharc_StripFront_StripNbr[i];}
+  Double_t GetFrontE_Energy(unsigned int i)     {return fSharc_StripFront_Energy[i];}
+  Double_t GetFrontE_Time(unsigned int i)       {return fSharc_StripFront_Time[i];}
+  
+  UShort_t GetBackE_DetectorNbr(unsigned int i) {return fSharc_StripFront_DetectorNbr[i];}
+  UShort_t GetBackE_StripNbr(unsigned int i)    {return fSharc_StripFront_StripNbr[i];}
+  Double_t GetBackE_Energy(unsigned int i)      {return fSharc_StripFront_Energy[i];}
+  Double_t GetBackE_Time(unsigned int i)        {return fSharc_StripFront_Time[i];}
+  
+  ClassDef(TSharcData,1)  // SharcData structure
+};
+
+#endif
diff --git a/NPLib/Sharc/TSharcDataDict.cxx b/NPLib/Sharc/TSharcDataDict.cxx
new file mode 100644
index 0000000000000000000000000000000000000000..27df52633e0506377ff93686f079f624dd2a439e
--- /dev/null
+++ b/NPLib/Sharc/TSharcDataDict.cxx
@@ -0,0 +1,1090 @@
+//
+// File generated by rootcint at Sat Nov 17 13:59:38 2012
+
+// Do NOT change. Changes will be lost next time file is generated
+//
+
+#define R__DICTIONARY_FILENAME TSharcDataDict
+#include "RConfig.h" //rootcint 4834
+#if !defined(R__ACCESS_IN_SYMBOL)
+//Break the privacy of classes -- Disabled for the moment
+#define private public
+#define protected public
+#endif
+
+// Since CINT ignores the std namespace, we need to do so in this file.
+namespace std {} using namespace std;
+#include "TSharcDataDict.h"
+
+#include "TCollectionProxyInfo.h"
+#include "TClass.h"
+#include "TBuffer.h"
+#include "TMemberInspector.h"
+#include "TError.h"
+
+#ifndef G__ROOT
+#define G__ROOT
+#endif
+
+#include "RtypesImp.h"
+#include "TIsAProxy.h"
+#include "TFileMergeInfo.h"
+
+// START OF SHADOWS
+
+namespace ROOT {
+   namespace Shadow {
+   } // of namespace Shadow
+} // of namespace ROOT
+// END OF SHADOWS
+
+namespace ROOT {
+   void TSharcData_ShowMembers(void *obj, TMemberInspector &R__insp);
+   static void *new_TSharcData(void *p = 0);
+   static void *newArray_TSharcData(Long_t size, void *p);
+   static void delete_TSharcData(void *p);
+   static void deleteArray_TSharcData(void *p);
+   static void destruct_TSharcData(void *p);
+   static void streamer_TSharcData(TBuffer &buf, void *obj);
+
+   // Function generating the singleton type initializer
+   static TGenericClassInfo *GenerateInitInstanceLocal(const ::TSharcData*)
+   {
+      ::TSharcData *ptr = 0;
+      static ::TVirtualIsAProxy* isa_proxy = new ::TInstrumentedIsAProxy< ::TSharcData >(0);
+      static ::ROOT::TGenericClassInfo 
+         instance("TSharcData", ::TSharcData::Class_Version(), "./TSharcData.h", 28,
+                  typeid(::TSharcData), DefineBehavior(ptr, ptr),
+                  &::TSharcData::Dictionary, isa_proxy, 0,
+                  sizeof(::TSharcData) );
+      instance.SetNew(&new_TSharcData);
+      instance.SetNewArray(&newArray_TSharcData);
+      instance.SetDelete(&delete_TSharcData);
+      instance.SetDeleteArray(&deleteArray_TSharcData);
+      instance.SetDestructor(&destruct_TSharcData);
+      instance.SetStreamerFunc(&streamer_TSharcData);
+      return &instance;
+   }
+   TGenericClassInfo *GenerateInitInstance(const ::TSharcData*)
+   {
+      return GenerateInitInstanceLocal((::TSharcData*)0);
+   }
+   // Static variable to force the class initialization
+   static ::ROOT::TGenericClassInfo *_R__UNIQUE_(Init) = GenerateInitInstanceLocal((const ::TSharcData*)0x0); R__UseDummy(_R__UNIQUE_(Init));
+} // end of namespace ROOT
+
+//______________________________________________________________________________
+TClass *TSharcData::fgIsA = 0;  // static to hold class pointer
+
+//______________________________________________________________________________
+const char *TSharcData::Class_Name()
+{
+   return "TSharcData";
+}
+
+//______________________________________________________________________________
+const char *TSharcData::ImplFileName()
+{
+   return ::ROOT::GenerateInitInstanceLocal((const ::TSharcData*)0x0)->GetImplFileName();
+}
+
+//______________________________________________________________________________
+int TSharcData::ImplFileLine()
+{
+   return ::ROOT::GenerateInitInstanceLocal((const ::TSharcData*)0x0)->GetImplFileLine();
+}
+
+//______________________________________________________________________________
+void TSharcData::Dictionary()
+{
+   fgIsA = ::ROOT::GenerateInitInstanceLocal((const ::TSharcData*)0x0)->GetClass();
+}
+
+//______________________________________________________________________________
+TClass *TSharcData::Class()
+{
+   if (!fgIsA) fgIsA = ::ROOT::GenerateInitInstanceLocal((const ::TSharcData*)0x0)->GetClass();
+   return fgIsA;
+}
+
+//______________________________________________________________________________
+void TSharcData::Streamer(TBuffer &R__b)
+{
+   // Stream an object of class TSharcData.
+
+   UInt_t R__s, R__c;
+   if (R__b.IsReading()) {
+      Version_t R__v = R__b.ReadVersion(&R__s, &R__c); if (R__v) { }
+      TObject::Streamer(R__b);
+      {
+         vector<UShort_t> &R__stl =  fSharc_StripFront_DetectorNbr;
+         R__stl.clear();
+         int R__i, R__n;
+         R__b >> R__n;
+         R__stl.reserve(R__n);
+         for (R__i = 0; R__i < R__n; R__i++) {
+            unsigned short R__t;
+            R__b >> R__t;
+            R__stl.push_back(R__t);
+         }
+      }
+      {
+         vector<UShort_t> &R__stl =  fSharc_StripFront_StripNbr;
+         R__stl.clear();
+         int R__i, R__n;
+         R__b >> R__n;
+         R__stl.reserve(R__n);
+         for (R__i = 0; R__i < R__n; R__i++) {
+            unsigned short R__t;
+            R__b >> R__t;
+            R__stl.push_back(R__t);
+         }
+      }
+      {
+         vector<Double_t> &R__stl =  fSharc_StripFront_Energy;
+         R__stl.clear();
+         int R__i, R__n;
+         R__b >> R__n;
+         R__stl.reserve(R__n);
+         for (R__i = 0; R__i < R__n; R__i++) {
+            double R__t;
+            R__b >> R__t;
+            R__stl.push_back(R__t);
+         }
+      }
+      {
+         vector<Double_t> &R__stl =  fSharc_StripFront_Time;
+         R__stl.clear();
+         int R__i, R__n;
+         R__b >> R__n;
+         R__stl.reserve(R__n);
+         for (R__i = 0; R__i < R__n; R__i++) {
+            double R__t;
+            R__b >> R__t;
+            R__stl.push_back(R__t);
+         }
+      }
+      {
+         vector<UShort_t> &R__stl =  fSharc_StripBack_DetectorNbr;
+         R__stl.clear();
+         int R__i, R__n;
+         R__b >> R__n;
+         R__stl.reserve(R__n);
+         for (R__i = 0; R__i < R__n; R__i++) {
+            unsigned short R__t;
+            R__b >> R__t;
+            R__stl.push_back(R__t);
+         }
+      }
+      {
+         vector<UShort_t> &R__stl =  fSharc_StripBack_StripNbr;
+         R__stl.clear();
+         int R__i, R__n;
+         R__b >> R__n;
+         R__stl.reserve(R__n);
+         for (R__i = 0; R__i < R__n; R__i++) {
+            unsigned short R__t;
+            R__b >> R__t;
+            R__stl.push_back(R__t);
+         }
+      }
+      {
+         vector<Double_t> &R__stl =  fSharc_StripBack_Energy;
+         R__stl.clear();
+         int R__i, R__n;
+         R__b >> R__n;
+         R__stl.reserve(R__n);
+         for (R__i = 0; R__i < R__n; R__i++) {
+            double R__t;
+            R__b >> R__t;
+            R__stl.push_back(R__t);
+         }
+      }
+      {
+         vector<Double_t> &R__stl =  fSharc_StripBack_Time;
+         R__stl.clear();
+         int R__i, R__n;
+         R__b >> R__n;
+         R__stl.reserve(R__n);
+         for (R__i = 0; R__i < R__n; R__i++) {
+            double R__t;
+            R__b >> R__t;
+            R__stl.push_back(R__t);
+         }
+      }
+      R__b.CheckByteCount(R__s, R__c, TSharcData::IsA());
+   } else {
+      R__c = R__b.WriteVersion(TSharcData::IsA(), kTRUE);
+      TObject::Streamer(R__b);
+      {
+         vector<UShort_t> &R__stl =  fSharc_StripFront_DetectorNbr;
+         int R__n=(&R__stl) ? int(R__stl.size()) : 0;
+         R__b << R__n;
+         if(R__n) {
+            vector<UShort_t>::iterator R__k;
+            for (R__k = R__stl.begin(); R__k != R__stl.end(); ++R__k) {
+            R__b << (*R__k);
+            }
+         }
+      }
+      {
+         vector<UShort_t> &R__stl =  fSharc_StripFront_StripNbr;
+         int R__n=(&R__stl) ? int(R__stl.size()) : 0;
+         R__b << R__n;
+         if(R__n) {
+            vector<UShort_t>::iterator R__k;
+            for (R__k = R__stl.begin(); R__k != R__stl.end(); ++R__k) {
+            R__b << (*R__k);
+            }
+         }
+      }
+      {
+         vector<Double_t> &R__stl =  fSharc_StripFront_Energy;
+         int R__n=(&R__stl) ? int(R__stl.size()) : 0;
+         R__b << R__n;
+         if(R__n) {
+            vector<Double_t>::iterator R__k;
+            for (R__k = R__stl.begin(); R__k != R__stl.end(); ++R__k) {
+            R__b << (*R__k);
+            }
+         }
+      }
+      {
+         vector<Double_t> &R__stl =  fSharc_StripFront_Time;
+         int R__n=(&R__stl) ? int(R__stl.size()) : 0;
+         R__b << R__n;
+         if(R__n) {
+            vector<Double_t>::iterator R__k;
+            for (R__k = R__stl.begin(); R__k != R__stl.end(); ++R__k) {
+            R__b << (*R__k);
+            }
+         }
+      }
+      {
+         vector<UShort_t> &R__stl =  fSharc_StripBack_DetectorNbr;
+         int R__n=(&R__stl) ? int(R__stl.size()) : 0;
+         R__b << R__n;
+         if(R__n) {
+            vector<UShort_t>::iterator R__k;
+            for (R__k = R__stl.begin(); R__k != R__stl.end(); ++R__k) {
+            R__b << (*R__k);
+            }
+         }
+      }
+      {
+         vector<UShort_t> &R__stl =  fSharc_StripBack_StripNbr;
+         int R__n=(&R__stl) ? int(R__stl.size()) : 0;
+         R__b << R__n;
+         if(R__n) {
+            vector<UShort_t>::iterator R__k;
+            for (R__k = R__stl.begin(); R__k != R__stl.end(); ++R__k) {
+            R__b << (*R__k);
+            }
+         }
+      }
+      {
+         vector<Double_t> &R__stl =  fSharc_StripBack_Energy;
+         int R__n=(&R__stl) ? int(R__stl.size()) : 0;
+         R__b << R__n;
+         if(R__n) {
+            vector<Double_t>::iterator R__k;
+            for (R__k = R__stl.begin(); R__k != R__stl.end(); ++R__k) {
+            R__b << (*R__k);
+            }
+         }
+      }
+      {
+         vector<Double_t> &R__stl =  fSharc_StripBack_Time;
+         int R__n=(&R__stl) ? int(R__stl.size()) : 0;
+         R__b << R__n;
+         if(R__n) {
+            vector<Double_t>::iterator R__k;
+            for (R__k = R__stl.begin(); R__k != R__stl.end(); ++R__k) {
+            R__b << (*R__k);
+            }
+         }
+      }
+      R__b.SetByteCount(R__c, kTRUE);
+   }
+}
+
+//______________________________________________________________________________
+void TSharcData::ShowMembers(TMemberInspector &R__insp)
+{
+      // Inspect the data members of an object of class TSharcData.
+      TClass *R__cl = ::TSharcData::IsA();
+      if (R__cl || R__insp.IsA()) { }
+      R__insp.Inspect(R__cl, R__insp.GetParent(), "fSharc_StripFront_DetectorNbr", (void*)&fSharc_StripFront_DetectorNbr);
+      R__insp.InspectMember("vector<UShort_t>", (void*)&fSharc_StripFront_DetectorNbr, "fSharc_StripFront_DetectorNbr.", false);
+      R__insp.Inspect(R__cl, R__insp.GetParent(), "fSharc_StripFront_StripNbr", (void*)&fSharc_StripFront_StripNbr);
+      R__insp.InspectMember("vector<UShort_t>", (void*)&fSharc_StripFront_StripNbr, "fSharc_StripFront_StripNbr.", false);
+      R__insp.Inspect(R__cl, R__insp.GetParent(), "fSharc_StripFront_Energy", (void*)&fSharc_StripFront_Energy);
+      R__insp.InspectMember("vector<Double_t>", (void*)&fSharc_StripFront_Energy, "fSharc_StripFront_Energy.", false);
+      R__insp.Inspect(R__cl, R__insp.GetParent(), "fSharc_StripFront_Time", (void*)&fSharc_StripFront_Time);
+      R__insp.InspectMember("vector<Double_t>", (void*)&fSharc_StripFront_Time, "fSharc_StripFront_Time.", false);
+      R__insp.Inspect(R__cl, R__insp.GetParent(), "fSharc_StripBack_DetectorNbr", (void*)&fSharc_StripBack_DetectorNbr);
+      R__insp.InspectMember("vector<UShort_t>", (void*)&fSharc_StripBack_DetectorNbr, "fSharc_StripBack_DetectorNbr.", false);
+      R__insp.Inspect(R__cl, R__insp.GetParent(), "fSharc_StripBack_StripNbr", (void*)&fSharc_StripBack_StripNbr);
+      R__insp.InspectMember("vector<UShort_t>", (void*)&fSharc_StripBack_StripNbr, "fSharc_StripBack_StripNbr.", false);
+      R__insp.Inspect(R__cl, R__insp.GetParent(), "fSharc_StripBack_Energy", (void*)&fSharc_StripBack_Energy);
+      R__insp.InspectMember("vector<Double_t>", (void*)&fSharc_StripBack_Energy, "fSharc_StripBack_Energy.", false);
+      R__insp.Inspect(R__cl, R__insp.GetParent(), "fSharc_StripBack_Time", (void*)&fSharc_StripBack_Time);
+      R__insp.InspectMember("vector<Double_t>", (void*)&fSharc_StripBack_Time, "fSharc_StripBack_Time.", false);
+      TObject::ShowMembers(R__insp);
+}
+
+namespace ROOT {
+   // Wrappers around operator new
+   static void *new_TSharcData(void *p) {
+      return  p ? new(p) ::TSharcData : new ::TSharcData;
+   }
+   static void *newArray_TSharcData(Long_t nElements, void *p) {
+      return p ? new(p) ::TSharcData[nElements] : new ::TSharcData[nElements];
+   }
+   // Wrapper around operator delete
+   static void delete_TSharcData(void *p) {
+      delete ((::TSharcData*)p);
+   }
+   static void deleteArray_TSharcData(void *p) {
+      delete [] ((::TSharcData*)p);
+   }
+   static void destruct_TSharcData(void *p) {
+      typedef ::TSharcData current_t;
+      ((current_t*)p)->~current_t();
+   }
+   // Wrapper around a custom streamer member function.
+   static void streamer_TSharcData(TBuffer &buf, void *obj) {
+      ((::TSharcData*)obj)->::TSharcData::Streamer(buf);
+   }
+} // end of namespace ROOT for class ::TSharcData
+
+namespace ROOT {
+   void vectorlEdoublegR_ShowMembers(void *obj, TMemberInspector &R__insp);
+   static void vectorlEdoublegR_Dictionary();
+   static void *new_vectorlEdoublegR(void *p = 0);
+   static void *newArray_vectorlEdoublegR(Long_t size, void *p);
+   static void delete_vectorlEdoublegR(void *p);
+   static void deleteArray_vectorlEdoublegR(void *p);
+   static void destruct_vectorlEdoublegR(void *p);
+
+   // Function generating the singleton type initializer
+   static TGenericClassInfo *GenerateInitInstanceLocal(const vector<double>*)
+   {
+      vector<double> *ptr = 0;
+      static ::TVirtualIsAProxy* isa_proxy = new ::TIsAProxy(typeid(vector<double>),0);
+      static ::ROOT::TGenericClassInfo 
+         instance("vector<double>", -2, "vector.dll", 0,
+                  typeid(vector<double>), DefineBehavior(ptr, ptr),
+                  0, &vectorlEdoublegR_Dictionary, isa_proxy, 0,
+                  sizeof(vector<double>) );
+      instance.SetNew(&new_vectorlEdoublegR);
+      instance.SetNewArray(&newArray_vectorlEdoublegR);
+      instance.SetDelete(&delete_vectorlEdoublegR);
+      instance.SetDeleteArray(&deleteArray_vectorlEdoublegR);
+      instance.SetDestructor(&destruct_vectorlEdoublegR);
+      instance.AdoptCollectionProxyInfo(TCollectionProxyInfo::Generate(TCollectionProxyInfo::Pushback< vector<double> >()));
+      return &instance;
+   }
+   // Static variable to force the class initialization
+   static ::ROOT::TGenericClassInfo *_R__UNIQUE_(Init) = GenerateInitInstanceLocal((const vector<double>*)0x0); R__UseDummy(_R__UNIQUE_(Init));
+
+   // Dictionary for non-ClassDef classes
+   static void vectorlEdoublegR_Dictionary() {
+      ::ROOT::GenerateInitInstanceLocal((const vector<double>*)0x0)->GetClass();
+   }
+
+} // end of namespace ROOT
+
+namespace ROOT {
+   // Wrappers around operator new
+   static void *new_vectorlEdoublegR(void *p) {
+      return  p ? ::new((::ROOT::TOperatorNewHelper*)p) vector<double> : new vector<double>;
+   }
+   static void *newArray_vectorlEdoublegR(Long_t nElements, void *p) {
+      return p ? ::new((::ROOT::TOperatorNewHelper*)p) vector<double>[nElements] : new vector<double>[nElements];
+   }
+   // Wrapper around operator delete
+   static void delete_vectorlEdoublegR(void *p) {
+      delete ((vector<double>*)p);
+   }
+   static void deleteArray_vectorlEdoublegR(void *p) {
+      delete [] ((vector<double>*)p);
+   }
+   static void destruct_vectorlEdoublegR(void *p) {
+      typedef vector<double> current_t;
+      ((current_t*)p)->~current_t();
+   }
+} // end of namespace ROOT for class vector<double>
+
+namespace ROOT {
+   void vectorlEunsignedsPshortgR_ShowMembers(void *obj, TMemberInspector &R__insp);
+   static void vectorlEunsignedsPshortgR_Dictionary();
+   static void *new_vectorlEunsignedsPshortgR(void *p = 0);
+   static void *newArray_vectorlEunsignedsPshortgR(Long_t size, void *p);
+   static void delete_vectorlEunsignedsPshortgR(void *p);
+   static void deleteArray_vectorlEunsignedsPshortgR(void *p);
+   static void destruct_vectorlEunsignedsPshortgR(void *p);
+
+   // Function generating the singleton type initializer
+   static TGenericClassInfo *GenerateInitInstanceLocal(const vector<unsigned short>*)
+   {
+      vector<unsigned short> *ptr = 0;
+      static ::TVirtualIsAProxy* isa_proxy = new ::TIsAProxy(typeid(vector<unsigned short>),0);
+      static ::ROOT::TGenericClassInfo 
+         instance("vector<unsigned short>", -2, "vector.dll", 0,
+                  typeid(vector<unsigned short>), DefineBehavior(ptr, ptr),
+                  0, &vectorlEunsignedsPshortgR_Dictionary, isa_proxy, 0,
+                  sizeof(vector<unsigned short>) );
+      instance.SetNew(&new_vectorlEunsignedsPshortgR);
+      instance.SetNewArray(&newArray_vectorlEunsignedsPshortgR);
+      instance.SetDelete(&delete_vectorlEunsignedsPshortgR);
+      instance.SetDeleteArray(&deleteArray_vectorlEunsignedsPshortgR);
+      instance.SetDestructor(&destruct_vectorlEunsignedsPshortgR);
+      instance.AdoptCollectionProxyInfo(TCollectionProxyInfo::Generate(TCollectionProxyInfo::Pushback< vector<unsigned short> >()));
+      return &instance;
+   }
+   // Static variable to force the class initialization
+   static ::ROOT::TGenericClassInfo *_R__UNIQUE_(Init) = GenerateInitInstanceLocal((const vector<unsigned short>*)0x0); R__UseDummy(_R__UNIQUE_(Init));
+
+   // Dictionary for non-ClassDef classes
+   static void vectorlEunsignedsPshortgR_Dictionary() {
+      ::ROOT::GenerateInitInstanceLocal((const vector<unsigned short>*)0x0)->GetClass();
+   }
+
+} // end of namespace ROOT
+
+namespace ROOT {
+   // Wrappers around operator new
+   static void *new_vectorlEunsignedsPshortgR(void *p) {
+      return  p ? ::new((::ROOT::TOperatorNewHelper*)p) vector<unsigned short> : new vector<unsigned short>;
+   }
+   static void *newArray_vectorlEunsignedsPshortgR(Long_t nElements, void *p) {
+      return p ? ::new((::ROOT::TOperatorNewHelper*)p) vector<unsigned short>[nElements] : new vector<unsigned short>[nElements];
+   }
+   // Wrapper around operator delete
+   static void delete_vectorlEunsignedsPshortgR(void *p) {
+      delete ((vector<unsigned short>*)p);
+   }
+   static void deleteArray_vectorlEunsignedsPshortgR(void *p) {
+      delete [] ((vector<unsigned short>*)p);
+   }
+   static void destruct_vectorlEunsignedsPshortgR(void *p) {
+      typedef vector<unsigned short> current_t;
+      ((current_t*)p)->~current_t();
+   }
+} // end of namespace ROOT for class vector<unsigned short>
+
+/********************************************************
+* TSharcDataDict.cxx
+* CAUTION: DON'T CHANGE THIS FILE. THIS FILE IS AUTOMATICALLY GENERATED
+*          FROM HEADER FILES LISTED IN G__setup_cpp_environmentXXX().
+*          CHANGE THOSE HEADER FILES AND REGENERATE THIS FILE.
+********************************************************/
+
+#ifdef G__MEMTEST
+#undef malloc
+#undef free
+#endif
+
+#if defined(__GNUC__) && __GNUC__ >= 4 && ((__GNUC_MINOR__ == 2 && __GNUC_PATCHLEVEL__ >= 1) || (__GNUC_MINOR__ >= 3))
+#pragma GCC diagnostic ignored "-Wstrict-aliasing"
+#endif
+
+extern "C" void G__cpp_reset_tagtableTSharcDataDict();
+
+extern "C" void G__set_cpp_environmentTSharcDataDict() {
+  G__add_compiledheader("TObject.h");
+  G__add_compiledheader("TMemberInspector.h");
+  G__add_compiledheader("TSharcData.h");
+  G__cpp_reset_tagtableTSharcDataDict();
+}
+#include <new>
+extern "C" int G__cpp_dllrevTSharcDataDict() { return(30051515); }
+
+/*********************************************************
+* Member function Interface Method
+*********************************************************/
+
+/* TSharcData */
+static int G__TSharcDataDict_162_0_1(G__value* result7, G__CONST char* funcname, struct G__param* libp, int hash)
+{
+   TSharcData* p = NULL;
+   char* gvp = (char*) G__getgvp();
+   int n = G__getaryconstruct();
+   if (n) {
+     if ((gvp == (char*)G__PVOID) || (gvp == 0)) {
+       p = new TSharcData[n];
+     } else {
+       p = new((void*) gvp) TSharcData[n];
+     }
+   } else {
+     if ((gvp == (char*)G__PVOID) || (gvp == 0)) {
+       p = new TSharcData;
+     } else {
+       p = new((void*) gvp) TSharcData;
+     }
+   }
+   result7->obj.i = (long) p;
+   result7->ref = (long) p;
+   G__set_tagnum(result7,G__get_linked_tagnum(&G__TSharcDataDictLN_TSharcData));
+   return(1 || funcname || hash || result7 || libp) ;
+}
+
+static int G__TSharcDataDict_162_0_2(G__value* result7, G__CONST char* funcname, struct G__param* libp, int hash)
+{
+      ((TSharcData*) G__getstructoffset())->Clear();
+      G__setnull(result7);
+   return(1 || funcname || hash || result7 || libp) ;
+}
+
+static int G__TSharcDataDict_162_0_5(G__value* result7, G__CONST char* funcname, struct G__param* libp, int hash)
+{
+      ((TSharcData*) G__getstructoffset())->SetFrontE_DetectorNbr((UShort_t) G__int(libp->para[0]));
+      G__setnull(result7);
+   return(1 || funcname || hash || result7 || libp) ;
+}
+
+static int G__TSharcDataDict_162_0_6(G__value* result7, G__CONST char* funcname, struct G__param* libp, int hash)
+{
+      ((TSharcData*) G__getstructoffset())->SetFrontE_StripNbr((UShort_t) G__int(libp->para[0]));
+      G__setnull(result7);
+   return(1 || funcname || hash || result7 || libp) ;
+}
+
+static int G__TSharcDataDict_162_0_7(G__value* result7, G__CONST char* funcname, struct G__param* libp, int hash)
+{
+      ((TSharcData*) G__getstructoffset())->SetFrontE_Energy((Double_t) G__double(libp->para[0]));
+      G__setnull(result7);
+   return(1 || funcname || hash || result7 || libp) ;
+}
+
+static int G__TSharcDataDict_162_0_8(G__value* result7, G__CONST char* funcname, struct G__param* libp, int hash)
+{
+      ((TSharcData*) G__getstructoffset())->SetFrontE_Time((Double_t) G__double(libp->para[0]));
+      G__setnull(result7);
+   return(1 || funcname || hash || result7 || libp) ;
+}
+
+static int G__TSharcDataDict_162_0_9(G__value* result7, G__CONST char* funcname, struct G__param* libp, int hash)
+{
+      ((TSharcData*) G__getstructoffset())->SetBackE_DetectorNbr((UShort_t) G__int(libp->para[0]));
+      G__setnull(result7);
+   return(1 || funcname || hash || result7 || libp) ;
+}
+
+static int G__TSharcDataDict_162_0_10(G__value* result7, G__CONST char* funcname, struct G__param* libp, int hash)
+{
+      ((TSharcData*) G__getstructoffset())->SetBackE_StripNbr((UShort_t) G__int(libp->para[0]));
+      G__setnull(result7);
+   return(1 || funcname || hash || result7 || libp) ;
+}
+
+static int G__TSharcDataDict_162_0_11(G__value* result7, G__CONST char* funcname, struct G__param* libp, int hash)
+{
+      ((TSharcData*) G__getstructoffset())->SetBackE_Energy((Double_t) G__double(libp->para[0]));
+      G__setnull(result7);
+   return(1 || funcname || hash || result7 || libp) ;
+}
+
+static int G__TSharcDataDict_162_0_12(G__value* result7, G__CONST char* funcname, struct G__param* libp, int hash)
+{
+      ((TSharcData*) G__getstructoffset())->SetBackE_Time((Double_t) G__double(libp->para[0]));
+      G__setnull(result7);
+   return(1 || funcname || hash || result7 || libp) ;
+}
+
+static int G__TSharcDataDict_162_0_13(G__value* result7, G__CONST char* funcname, struct G__param* libp, int hash)
+{
+      G__letint(result7, 114, (long) ((TSharcData*) G__getstructoffset())->GetFrontE_DetectorNbr((unsigned int) G__int(libp->para[0])));
+   return(1 || funcname || hash || result7 || libp) ;
+}
+
+static int G__TSharcDataDict_162_0_14(G__value* result7, G__CONST char* funcname, struct G__param* libp, int hash)
+{
+      G__letint(result7, 114, (long) ((TSharcData*) G__getstructoffset())->GetFrontE_StripNbr((unsigned int) G__int(libp->para[0])));
+   return(1 || funcname || hash || result7 || libp) ;
+}
+
+static int G__TSharcDataDict_162_0_15(G__value* result7, G__CONST char* funcname, struct G__param* libp, int hash)
+{
+      G__letdouble(result7, 100, (double) ((TSharcData*) G__getstructoffset())->GetFrontE_Energy((unsigned int) G__int(libp->para[0])));
+   return(1 || funcname || hash || result7 || libp) ;
+}
+
+static int G__TSharcDataDict_162_0_16(G__value* result7, G__CONST char* funcname, struct G__param* libp, int hash)
+{
+      G__letdouble(result7, 100, (double) ((TSharcData*) G__getstructoffset())->GetFrontE_Time((unsigned int) G__int(libp->para[0])));
+   return(1 || funcname || hash || result7 || libp) ;
+}
+
+static int G__TSharcDataDict_162_0_17(G__value* result7, G__CONST char* funcname, struct G__param* libp, int hash)
+{
+      G__letint(result7, 114, (long) ((TSharcData*) G__getstructoffset())->GetBackE_DetectorNbr((unsigned int) G__int(libp->para[0])));
+   return(1 || funcname || hash || result7 || libp) ;
+}
+
+static int G__TSharcDataDict_162_0_18(G__value* result7, G__CONST char* funcname, struct G__param* libp, int hash)
+{
+      G__letint(result7, 114, (long) ((TSharcData*) G__getstructoffset())->GetBackE_StripNbr((unsigned int) G__int(libp->para[0])));
+   return(1 || funcname || hash || result7 || libp) ;
+}
+
+static int G__TSharcDataDict_162_0_19(G__value* result7, G__CONST char* funcname, struct G__param* libp, int hash)
+{
+      G__letdouble(result7, 100, (double) ((TSharcData*) G__getstructoffset())->GetBackE_Energy((unsigned int) G__int(libp->para[0])));
+   return(1 || funcname || hash || result7 || libp) ;
+}
+
+static int G__TSharcDataDict_162_0_20(G__value* result7, G__CONST char* funcname, struct G__param* libp, int hash)
+{
+      G__letdouble(result7, 100, (double) ((TSharcData*) G__getstructoffset())->GetBackE_Time((unsigned int) G__int(libp->para[0])));
+   return(1 || funcname || hash || result7 || libp) ;
+}
+
+static int G__TSharcDataDict_162_0_21(G__value* result7, G__CONST char* funcname, struct G__param* libp, int hash)
+{
+      G__letint(result7, 85, (long) TSharcData::Class());
+   return(1 || funcname || hash || result7 || libp) ;
+}
+
+static int G__TSharcDataDict_162_0_22(G__value* result7, G__CONST char* funcname, struct G__param* libp, int hash)
+{
+      G__letint(result7, 67, (long) TSharcData::Class_Name());
+   return(1 || funcname || hash || result7 || libp) ;
+}
+
+static int G__TSharcDataDict_162_0_23(G__value* result7, G__CONST char* funcname, struct G__param* libp, int hash)
+{
+      G__letint(result7, 115, (long) TSharcData::Class_Version());
+   return(1 || funcname || hash || result7 || libp) ;
+}
+
+static int G__TSharcDataDict_162_0_24(G__value* result7, G__CONST char* funcname, struct G__param* libp, int hash)
+{
+      TSharcData::Dictionary();
+      G__setnull(result7);
+   return(1 || funcname || hash || result7 || libp) ;
+}
+
+static int G__TSharcDataDict_162_0_28(G__value* result7, G__CONST char* funcname, struct G__param* libp, int hash)
+{
+      ((TSharcData*) G__getstructoffset())->StreamerNVirtual(*(TBuffer*) libp->para[0].ref);
+      G__setnull(result7);
+   return(1 || funcname || hash || result7 || libp) ;
+}
+
+static int G__TSharcDataDict_162_0_29(G__value* result7, G__CONST char* funcname, struct G__param* libp, int hash)
+{
+      G__letint(result7, 67, (long) TSharcData::DeclFileName());
+   return(1 || funcname || hash || result7 || libp) ;
+}
+
+static int G__TSharcDataDict_162_0_30(G__value* result7, G__CONST char* funcname, struct G__param* libp, int hash)
+{
+      G__letint(result7, 105, (long) TSharcData::ImplFileLine());
+   return(1 || funcname || hash || result7 || libp) ;
+}
+
+static int G__TSharcDataDict_162_0_31(G__value* result7, G__CONST char* funcname, struct G__param* libp, int hash)
+{
+      G__letint(result7, 67, (long) TSharcData::ImplFileName());
+   return(1 || funcname || hash || result7 || libp) ;
+}
+
+static int G__TSharcDataDict_162_0_32(G__value* result7, G__CONST char* funcname, struct G__param* libp, int hash)
+{
+      G__letint(result7, 105, (long) TSharcData::DeclFileLine());
+   return(1 || funcname || hash || result7 || libp) ;
+}
+
+// automatic copy constructor
+static int G__TSharcDataDict_162_0_33(G__value* result7, G__CONST char* funcname, struct G__param* libp, int hash)
+
+{
+   TSharcData* p;
+   void* tmp = (void*) G__int(libp->para[0]);
+   p = new TSharcData(*(TSharcData*) tmp);
+   result7->obj.i = (long) p;
+   result7->ref = (long) p;
+   G__set_tagnum(result7,G__get_linked_tagnum(&G__TSharcDataDictLN_TSharcData));
+   return(1 || funcname || hash || result7 || libp) ;
+}
+
+// automatic destructor
+typedef TSharcData G__TTSharcData;
+static int G__TSharcDataDict_162_0_34(G__value* result7, G__CONST char* funcname, struct G__param* libp, int hash)
+{
+   char* gvp = (char*) G__getgvp();
+   long soff = G__getstructoffset();
+   int n = G__getaryconstruct();
+   //
+   //has_a_delete: 1
+   //has_own_delete1arg: 0
+   //has_own_delete2arg: 0
+   //
+   if (!soff) {
+     return(1);
+   }
+   if (n) {
+     if (gvp == (char*)G__PVOID) {
+       delete[] (TSharcData*) soff;
+     } else {
+       G__setgvp((long) G__PVOID);
+       for (int i = n - 1; i >= 0; --i) {
+         ((TSharcData*) (soff+(sizeof(TSharcData)*i)))->~G__TTSharcData();
+       }
+       G__setgvp((long)gvp);
+     }
+   } else {
+     if (gvp == (char*)G__PVOID) {
+       delete (TSharcData*) soff;
+     } else {
+       G__setgvp((long) G__PVOID);
+       ((TSharcData*) (soff))->~G__TTSharcData();
+       G__setgvp((long)gvp);
+     }
+   }
+   G__setnull(result7);
+   return(1 || funcname || hash || result7 || libp) ;
+}
+
+// automatic assignment operator
+static int G__TSharcDataDict_162_0_35(G__value* result7, G__CONST char* funcname, struct G__param* libp, int hash)
+{
+   TSharcData* dest = (TSharcData*) G__getstructoffset();
+   *dest = *(TSharcData*) libp->para[0].ref;
+   const TSharcData& obj = *dest;
+   result7->ref = (long) (&obj);
+   result7->obj.i = (long) (&obj);
+   return(1 || funcname || hash || result7 || libp) ;
+}
+
+
+/* Setting up global function */
+
+/*********************************************************
+* Member function Stub
+*********************************************************/
+
+/* TSharcData */
+
+/*********************************************************
+* Global function Stub
+*********************************************************/
+
+/*********************************************************
+* Get size of pointer to member function
+*********************************************************/
+class G__Sizep2memfuncTSharcDataDict {
+ public:
+  G__Sizep2memfuncTSharcDataDict(): p(&G__Sizep2memfuncTSharcDataDict::sizep2memfunc) {}
+    size_t sizep2memfunc() { return(sizeof(p)); }
+  private:
+    size_t (G__Sizep2memfuncTSharcDataDict::*p)();
+};
+
+size_t G__get_sizep2memfuncTSharcDataDict()
+{
+  G__Sizep2memfuncTSharcDataDict a;
+  G__setsizep2memfunc((int)a.sizep2memfunc());
+  return((size_t)a.sizep2memfunc());
+}
+
+
+/*********************************************************
+* virtual base class offset calculation interface
+*********************************************************/
+
+   /* Setting up class inheritance */
+
+/*********************************************************
+* Inheritance information setup/
+*********************************************************/
+extern "C" void G__cpp_setup_inheritanceTSharcDataDict() {
+
+   /* Setting up class inheritance */
+   if(0==G__getnumbaseclass(G__get_linked_tagnum(&G__TSharcDataDictLN_TSharcData))) {
+     TSharcData *G__Lderived;
+     G__Lderived=(TSharcData*)0x1000;
+     {
+       TObject *G__Lpbase=(TObject*)G__Lderived;
+       G__inheritance_setup(G__get_linked_tagnum(&G__TSharcDataDictLN_TSharcData),G__get_linked_tagnum(&G__TSharcDataDictLN_TObject),(long)G__Lpbase-(long)G__Lderived,1,1);
+     }
+   }
+}
+
+/*********************************************************
+* typedef information setup/
+*********************************************************/
+extern "C" void G__cpp_setup_typetableTSharcDataDict() {
+
+   /* Setting up typedef entry */
+   G__search_typename2("UShort_t",114,-1,0,-1);
+   G__setnewtype(-1,"Unsigned Short integer 2 bytes (unsigned short)",0);
+   G__search_typename2("Double_t",100,-1,0,-1);
+   G__setnewtype(-1,"Double 8 bytes",0);
+   G__search_typename2("Version_t",115,-1,0,-1);
+   G__setnewtype(-1,"Class version identifier (short)",0);
+   G__search_typename2("vector<ROOT::TSchemaHelper>",117,G__get_linked_tagnum(&G__TSharcDataDictLN_vectorlEROOTcLcLTSchemaHelpercOallocatorlEROOTcLcLTSchemaHelpergRsPgR),0,-1);
+   G__setnewtype(-1,NULL,0);
+   G__search_typename2("reverse_iterator<const_iterator>",117,G__get_linked_tagnum(&G__TSharcDataDictLN_reverse_iteratorlEvectorlEROOTcLcLTSchemaHelpercOallocatorlEROOTcLcLTSchemaHelpergRsPgRcLcLiteratorgR),0,G__get_linked_tagnum(&G__TSharcDataDictLN_vectorlEROOTcLcLTSchemaHelpercOallocatorlEROOTcLcLTSchemaHelpergRsPgR));
+   G__setnewtype(-1,NULL,0);
+   G__search_typename2("reverse_iterator<iterator>",117,G__get_linked_tagnum(&G__TSharcDataDictLN_reverse_iteratorlEvectorlEROOTcLcLTSchemaHelpercOallocatorlEROOTcLcLTSchemaHelpergRsPgRcLcLiteratorgR),0,G__get_linked_tagnum(&G__TSharcDataDictLN_vectorlEROOTcLcLTSchemaHelpercOallocatorlEROOTcLcLTSchemaHelpergRsPgR));
+   G__setnewtype(-1,NULL,0);
+   G__search_typename2("vector<TVirtualArray*>",117,G__get_linked_tagnum(&G__TSharcDataDictLN_vectorlETVirtualArraymUcOallocatorlETVirtualArraymUgRsPgR),0,-1);
+   G__setnewtype(-1,NULL,0);
+   G__search_typename2("reverse_iterator<const_iterator>",117,G__get_linked_tagnum(&G__TSharcDataDictLN_reverse_iteratorlEvectorlETVirtualArraymUcOallocatorlETVirtualArraymUgRsPgRcLcLiteratorgR),0,G__get_linked_tagnum(&G__TSharcDataDictLN_vectorlETVirtualArraymUcOallocatorlETVirtualArraymUgRsPgR));
+   G__setnewtype(-1,NULL,0);
+   G__search_typename2("reverse_iterator<iterator>",117,G__get_linked_tagnum(&G__TSharcDataDictLN_reverse_iteratorlEvectorlETVirtualArraymUcOallocatorlETVirtualArraymUgRsPgRcLcLiteratorgR),0,G__get_linked_tagnum(&G__TSharcDataDictLN_vectorlETVirtualArraymUcOallocatorlETVirtualArraymUgRsPgR));
+   G__setnewtype(-1,NULL,0);
+   G__search_typename2("vector<UShort_t>",117,G__get_linked_tagnum(&G__TSharcDataDictLN_vectorlEunsignedsPshortcOallocatorlEunsignedsPshortgRsPgR),0,-1);
+   G__setnewtype(-1,NULL,0);
+   G__search_typename2("vector<Double_t>",117,G__get_linked_tagnum(&G__TSharcDataDictLN_vectorlEdoublecOallocatorlEdoublegRsPgR),0,-1);
+   G__setnewtype(-1,NULL,0);
+}
+
+/*********************************************************
+* Data Member information setup/
+*********************************************************/
+
+   /* Setting up class,struct,union tag member variable */
+
+   /* TSharcData */
+static void G__setup_memvarTSharcData(void) {
+   G__tag_memvar_setup(G__get_linked_tagnum(&G__TSharcDataDictLN_TSharcData));
+   { TSharcData *p; p=(TSharcData*)0x1000; if (p) { }
+   G__memvar_setup((void*)0,117,0,0,G__get_linked_tagnum(&G__TSharcDataDictLN_vectorlEunsignedsPshortcOallocatorlEunsignedsPshortgRsPgR),G__defined_typename("vector<UShort_t>"),-1,4,"fSharc_StripFront_DetectorNbr=",0,(char*)NULL);
+   G__memvar_setup((void*)0,117,0,0,G__get_linked_tagnum(&G__TSharcDataDictLN_vectorlEunsignedsPshortcOallocatorlEunsignedsPshortgRsPgR),G__defined_typename("vector<UShort_t>"),-1,4,"fSharc_StripFront_StripNbr=",0,(char*)NULL);
+   G__memvar_setup((void*)0,117,0,0,G__get_linked_tagnum(&G__TSharcDataDictLN_vectorlEdoublecOallocatorlEdoublegRsPgR),G__defined_typename("vector<Double_t>"),-1,4,"fSharc_StripFront_Energy=",0,(char*)NULL);
+   G__memvar_setup((void*)0,117,0,0,G__get_linked_tagnum(&G__TSharcDataDictLN_vectorlEdoublecOallocatorlEdoublegRsPgR),G__defined_typename("vector<Double_t>"),-1,4,"fSharc_StripFront_Time=",0,(char*)NULL);
+   G__memvar_setup((void*)0,117,0,0,G__get_linked_tagnum(&G__TSharcDataDictLN_vectorlEunsignedsPshortcOallocatorlEunsignedsPshortgRsPgR),G__defined_typename("vector<UShort_t>"),-1,4,"fSharc_StripBack_DetectorNbr=",0,(char*)NULL);
+   G__memvar_setup((void*)0,117,0,0,G__get_linked_tagnum(&G__TSharcDataDictLN_vectorlEunsignedsPshortcOallocatorlEunsignedsPshortgRsPgR),G__defined_typename("vector<UShort_t>"),-1,4,"fSharc_StripBack_StripNbr=",0,(char*)NULL);
+   G__memvar_setup((void*)0,117,0,0,G__get_linked_tagnum(&G__TSharcDataDictLN_vectorlEdoublecOallocatorlEdoublegRsPgR),G__defined_typename("vector<Double_t>"),-1,4,"fSharc_StripBack_Energy=",0,(char*)NULL);
+   G__memvar_setup((void*)0,117,0,0,G__get_linked_tagnum(&G__TSharcDataDictLN_vectorlEdoublecOallocatorlEdoublegRsPgR),G__defined_typename("vector<Double_t>"),-1,4,"fSharc_StripBack_Time=",0,(char*)NULL);
+   G__memvar_setup((void*)0,85,0,0,G__get_linked_tagnum(&G__TSharcDataDictLN_TClass),-1,-2,4,"fgIsA=",0,(char*)NULL);
+   }
+   G__tag_memvar_reset();
+}
+
+extern "C" void G__cpp_setup_memvarTSharcDataDict() {
+}
+/***********************************************************
+************************************************************
+************************************************************
+************************************************************
+************************************************************
+************************************************************
+************************************************************
+***********************************************************/
+
+/*********************************************************
+* Member function information setup for each class
+*********************************************************/
+static void G__setup_memfuncTSharcData(void) {
+   /* TSharcData */
+   G__tag_memfunc_setup(G__get_linked_tagnum(&G__TSharcDataDictLN_TSharcData));
+   G__memfunc_setup("TSharcData",959,G__TSharcDataDict_162_0_1, 105, G__get_linked_tagnum(&G__TSharcDataDictLN_TSharcData), -1, 0, 0, 1, 1, 0, "", (char*)NULL, (void*) NULL, 0);
+   G__memfunc_setup("Clear",487,G__TSharcDataDict_162_0_2, 121, -1, -1, 0, 0, 1, 1, 0, "", (char*)NULL, (void*) NULL, 0);
+   G__memfunc_setup("Clear",487,(G__InterfaceMethod) NULL,121, -1, -1, 0, 1, 1, 1, 0, "C - 'Option_t' 10 - -", (char*)NULL, (void*) NULL, 1);
+   G__memfunc_setup("Dump",406,(G__InterfaceMethod) NULL,121, -1, -1, 0, 0, 1, 1, 8, "", (char*)NULL, (void*) NULL, 1);
+   G__memfunc_setup("SetFrontE_DetectorNbr",2101,G__TSharcDataDict_162_0_5, 121, -1, -1, 0, 1, 1, 1, 0, "r - 'UShort_t' 0 - DetNbr", (char*)NULL, (void*) NULL, 0);
+   G__memfunc_setup("SetFrontE_StripNbr",1805,G__TSharcDataDict_162_0_6, 121, -1, -1, 0, 1, 1, 1, 0, "r - 'UShort_t' 0 - StripNbr", (char*)NULL, (void*) NULL, 0);
+   G__memfunc_setup("SetFrontE_Energy",1603,G__TSharcDataDict_162_0_7, 121, -1, -1, 0, 1, 1, 1, 0, "d - 'Double_t' 0 - Energy", (char*)NULL, (void*) NULL, 0);
+   G__memfunc_setup("SetFrontE_Time",1384,G__TSharcDataDict_162_0_8, 121, -1, -1, 0, 1, 1, 1, 0, "d - 'Double_t' 0 - Time", (char*)NULL, (void*) NULL, 0);
+   G__memfunc_setup("SetBackE_DetectorNbr",1949,G__TSharcDataDict_162_0_9, 121, -1, -1, 0, 1, 1, 1, 0, "r - 'UShort_t' 0 - DetNbr", (char*)NULL, (void*) NULL, 0);
+   G__memfunc_setup("SetBackE_StripNbr",1653,G__TSharcDataDict_162_0_10, 121, -1, -1, 0, 1, 1, 1, 0, "r - 'UShort_t' 0 - StripNbr", (char*)NULL, (void*) NULL, 0);
+   G__memfunc_setup("SetBackE_Energy",1451,G__TSharcDataDict_162_0_11, 121, -1, -1, 0, 1, 1, 1, 0, "d - 'Double_t' 0 - Energy", (char*)NULL, (void*) NULL, 0);
+   G__memfunc_setup("SetBackE_Time",1232,G__TSharcDataDict_162_0_12, 121, -1, -1, 0, 1, 1, 1, 0, "d - 'Double_t' 0 - Time", (char*)NULL, (void*) NULL, 0);
+   G__memfunc_setup("GetFrontE_DetectorNbr",2089,G__TSharcDataDict_162_0_13, 114, -1, G__defined_typename("UShort_t"), 0, 1, 1, 1, 0, "h - - 0 - i", (char*)NULL, (void*) NULL, 0);
+   G__memfunc_setup("GetFrontE_StripNbr",1793,G__TSharcDataDict_162_0_14, 114, -1, G__defined_typename("UShort_t"), 0, 1, 1, 1, 0, "h - - 0 - i", (char*)NULL, (void*) NULL, 0);
+   G__memfunc_setup("GetFrontE_Energy",1591,G__TSharcDataDict_162_0_15, 100, -1, G__defined_typename("Double_t"), 0, 1, 1, 1, 0, "h - - 0 - i", (char*)NULL, (void*) NULL, 0);
+   G__memfunc_setup("GetFrontE_Time",1372,G__TSharcDataDict_162_0_16, 100, -1, G__defined_typename("Double_t"), 0, 1, 1, 1, 0, "h - - 0 - i", (char*)NULL, (void*) NULL, 0);
+   G__memfunc_setup("GetBackE_DetectorNbr",1937,G__TSharcDataDict_162_0_17, 114, -1, G__defined_typename("UShort_t"), 0, 1, 1, 1, 0, "h - - 0 - i", (char*)NULL, (void*) NULL, 0);
+   G__memfunc_setup("GetBackE_StripNbr",1641,G__TSharcDataDict_162_0_18, 114, -1, G__defined_typename("UShort_t"), 0, 1, 1, 1, 0, "h - - 0 - i", (char*)NULL, (void*) NULL, 0);
+   G__memfunc_setup("GetBackE_Energy",1439,G__TSharcDataDict_162_0_19, 100, -1, G__defined_typename("Double_t"), 0, 1, 1, 1, 0, "h - - 0 - i", (char*)NULL, (void*) NULL, 0);
+   G__memfunc_setup("GetBackE_Time",1220,G__TSharcDataDict_162_0_20, 100, -1, G__defined_typename("Double_t"), 0, 1, 1, 1, 0, "h - - 0 - i", (char*)NULL, (void*) NULL, 0);
+   G__memfunc_setup("Class",502,G__TSharcDataDict_162_0_21, 85, G__get_linked_tagnum(&G__TSharcDataDictLN_TClass), -1, 0, 0, 3, 1, 0, "", (char*)NULL, (void*) G__func2void( (TClass* (*)())(&TSharcData::Class) ), 0);
+   G__memfunc_setup("Class_Name",982,G__TSharcDataDict_162_0_22, 67, -1, -1, 0, 0, 3, 1, 1, "", (char*)NULL, (void*) G__func2void( (const char* (*)())(&TSharcData::Class_Name) ), 0);
+   G__memfunc_setup("Class_Version",1339,G__TSharcDataDict_162_0_23, 115, -1, G__defined_typename("Version_t"), 0, 0, 3, 1, 0, "", (char*)NULL, (void*) G__func2void( (Version_t (*)())(&TSharcData::Class_Version) ), 0);
+   G__memfunc_setup("Dictionary",1046,G__TSharcDataDict_162_0_24, 121, -1, -1, 0, 0, 3, 1, 0, "", (char*)NULL, (void*) G__func2void( (void (*)())(&TSharcData::Dictionary) ), 0);
+   G__memfunc_setup("IsA",253,(G__InterfaceMethod) NULL,85, G__get_linked_tagnum(&G__TSharcDataDictLN_TClass), -1, 0, 0, 1, 1, 8, "", (char*)NULL, (void*) NULL, 1);
+   G__memfunc_setup("ShowMembers",1132,(G__InterfaceMethod) NULL,121, -1, -1, 0, 1, 1, 1, 0, "u 'TMemberInspector' - 1 - insp", (char*)NULL, (void*) NULL, 1);
+   G__memfunc_setup("Streamer",835,(G__InterfaceMethod) NULL,121, -1, -1, 0, 1, 1, 1, 0, "u 'TBuffer' - 1 - b", (char*)NULL, (void*) NULL, 1);
+   G__memfunc_setup("StreamerNVirtual",1656,G__TSharcDataDict_162_0_28, 121, -1, -1, 0, 1, 1, 1, 0, "u 'TBuffer' - 1 - b", (char*)NULL, (void*) NULL, 0);
+   G__memfunc_setup("DeclFileName",1145,G__TSharcDataDict_162_0_29, 67, -1, -1, 0, 0, 3, 1, 1, "", (char*)NULL, (void*) G__func2void( (const char* (*)())(&TSharcData::DeclFileName) ), 0);
+   G__memfunc_setup("ImplFileLine",1178,G__TSharcDataDict_162_0_30, 105, -1, -1, 0, 0, 3, 1, 0, "", (char*)NULL, (void*) G__func2void( (int (*)())(&TSharcData::ImplFileLine) ), 0);
+   G__memfunc_setup("ImplFileName",1171,G__TSharcDataDict_162_0_31, 67, -1, -1, 0, 0, 3, 1, 1, "", (char*)NULL, (void*) G__func2void( (const char* (*)())(&TSharcData::ImplFileName) ), 0);
+   G__memfunc_setup("DeclFileLine",1152,G__TSharcDataDict_162_0_32, 105, -1, -1, 0, 0, 3, 1, 0, "", (char*)NULL, (void*) G__func2void( (int (*)())(&TSharcData::DeclFileLine) ), 0);
+   // automatic copy constructor
+   G__memfunc_setup("TSharcData", 959, G__TSharcDataDict_162_0_33, (int) ('i'), G__get_linked_tagnum(&G__TSharcDataDictLN_TSharcData), -1, 0, 1, 1, 1, 0, "u 'TSharcData' - 11 - -", (char*) NULL, (void*) NULL, 0);
+   // automatic destructor
+   G__memfunc_setup("~TSharcData", 1085, G__TSharcDataDict_162_0_34, (int) ('y'), -1, -1, 0, 0, 1, 1, 0, "", (char*) NULL, (void*) NULL, 1);
+   // automatic assignment operator
+   G__memfunc_setup("operator=", 937, G__TSharcDataDict_162_0_35, (int) ('u'), G__get_linked_tagnum(&G__TSharcDataDictLN_TSharcData), -1, 1, 1, 1, 1, 0, "u 'TSharcData' - 11 - -", (char*) NULL, (void*) NULL, 0);
+   G__tag_memfunc_reset();
+}
+
+
+/*********************************************************
+* Member function information setup
+*********************************************************/
+extern "C" void G__cpp_setup_memfuncTSharcDataDict() {
+}
+
+/*********************************************************
+* Global variable information setup for each class
+*********************************************************/
+static void G__cpp_setup_global0() {
+
+   /* Setting up global variables */
+   G__resetplocal();
+
+}
+
+static void G__cpp_setup_global1() {
+}
+
+static void G__cpp_setup_global2() {
+
+   G__resetglobalenv();
+}
+extern "C" void G__cpp_setup_globalTSharcDataDict() {
+  G__cpp_setup_global0();
+  G__cpp_setup_global1();
+  G__cpp_setup_global2();
+}
+
+/*********************************************************
+* Global function information setup for each class
+*********************************************************/
+static void G__cpp_setup_func0() {
+   G__lastifuncposition();
+
+}
+
+static void G__cpp_setup_func1() {
+}
+
+static void G__cpp_setup_func2() {
+}
+
+static void G__cpp_setup_func3() {
+}
+
+static void G__cpp_setup_func4() {
+}
+
+static void G__cpp_setup_func5() {
+}
+
+static void G__cpp_setup_func6() {
+}
+
+static void G__cpp_setup_func7() {
+}
+
+static void G__cpp_setup_func8() {
+}
+
+static void G__cpp_setup_func9() {
+}
+
+static void G__cpp_setup_func10() {
+}
+
+static void G__cpp_setup_func11() {
+}
+
+static void G__cpp_setup_func12() {
+
+   G__resetifuncposition();
+}
+
+extern "C" void G__cpp_setup_funcTSharcDataDict() {
+  G__cpp_setup_func0();
+  G__cpp_setup_func1();
+  G__cpp_setup_func2();
+  G__cpp_setup_func3();
+  G__cpp_setup_func4();
+  G__cpp_setup_func5();
+  G__cpp_setup_func6();
+  G__cpp_setup_func7();
+  G__cpp_setup_func8();
+  G__cpp_setup_func9();
+  G__cpp_setup_func10();
+  G__cpp_setup_func11();
+  G__cpp_setup_func12();
+}
+
+/*********************************************************
+* Class,struct,union,enum tag information setup
+*********************************************************/
+/* Setup class/struct taginfo */
+G__linked_taginfo G__TSharcDataDictLN_TClass = { "TClass" , 99 , -1 };
+G__linked_taginfo G__TSharcDataDictLN_TBuffer = { "TBuffer" , 99 , -1 };
+G__linked_taginfo G__TSharcDataDictLN_TMemberInspector = { "TMemberInspector" , 99 , -1 };
+G__linked_taginfo G__TSharcDataDictLN_TObject = { "TObject" , 99 , -1 };
+G__linked_taginfo G__TSharcDataDictLN_vectorlEunsignedsPshortcOallocatorlEunsignedsPshortgRsPgR = { "vector<unsigned short,allocator<unsigned short> >" , 99 , -1 };
+G__linked_taginfo G__TSharcDataDictLN_vectorlEdoublecOallocatorlEdoublegRsPgR = { "vector<double,allocator<double> >" , 99 , -1 };
+G__linked_taginfo G__TSharcDataDictLN_vectorlEROOTcLcLTSchemaHelpercOallocatorlEROOTcLcLTSchemaHelpergRsPgR = { "vector<ROOT::TSchemaHelper,allocator<ROOT::TSchemaHelper> >" , 99 , -1 };
+G__linked_taginfo G__TSharcDataDictLN_reverse_iteratorlEvectorlEROOTcLcLTSchemaHelpercOallocatorlEROOTcLcLTSchemaHelpergRsPgRcLcLiteratorgR = { "reverse_iterator<vector<ROOT::TSchemaHelper,allocator<ROOT::TSchemaHelper> >::iterator>" , 99 , -1 };
+G__linked_taginfo G__TSharcDataDictLN_vectorlETVirtualArraymUcOallocatorlETVirtualArraymUgRsPgR = { "vector<TVirtualArray*,allocator<TVirtualArray*> >" , 99 , -1 };
+G__linked_taginfo G__TSharcDataDictLN_reverse_iteratorlEvectorlETVirtualArraymUcOallocatorlETVirtualArraymUgRsPgRcLcLiteratorgR = { "reverse_iterator<vector<TVirtualArray*,allocator<TVirtualArray*> >::iterator>" , 99 , -1 };
+G__linked_taginfo G__TSharcDataDictLN_TSharcData = { "TSharcData" , 99 , -1 };
+
+/* Reset class/struct taginfo */
+extern "C" void G__cpp_reset_tagtableTSharcDataDict() {
+  G__TSharcDataDictLN_TClass.tagnum = -1 ;
+  G__TSharcDataDictLN_TBuffer.tagnum = -1 ;
+  G__TSharcDataDictLN_TMemberInspector.tagnum = -1 ;
+  G__TSharcDataDictLN_TObject.tagnum = -1 ;
+  G__TSharcDataDictLN_vectorlEunsignedsPshortcOallocatorlEunsignedsPshortgRsPgR.tagnum = -1 ;
+  G__TSharcDataDictLN_vectorlEdoublecOallocatorlEdoublegRsPgR.tagnum = -1 ;
+  G__TSharcDataDictLN_vectorlEROOTcLcLTSchemaHelpercOallocatorlEROOTcLcLTSchemaHelpergRsPgR.tagnum = -1 ;
+  G__TSharcDataDictLN_reverse_iteratorlEvectorlEROOTcLcLTSchemaHelpercOallocatorlEROOTcLcLTSchemaHelpergRsPgRcLcLiteratorgR.tagnum = -1 ;
+  G__TSharcDataDictLN_vectorlETVirtualArraymUcOallocatorlETVirtualArraymUgRsPgR.tagnum = -1 ;
+  G__TSharcDataDictLN_reverse_iteratorlEvectorlETVirtualArraymUcOallocatorlETVirtualArraymUgRsPgRcLcLiteratorgR.tagnum = -1 ;
+  G__TSharcDataDictLN_TSharcData.tagnum = -1 ;
+}
+
+
+extern "C" void G__cpp_setup_tagtableTSharcDataDict() {
+
+   /* Setting up class,struct,union tag entry */
+   G__get_linked_tagnum_fwd(&G__TSharcDataDictLN_TClass);
+   G__get_linked_tagnum_fwd(&G__TSharcDataDictLN_TBuffer);
+   G__get_linked_tagnum_fwd(&G__TSharcDataDictLN_TMemberInspector);
+   G__get_linked_tagnum_fwd(&G__TSharcDataDictLN_TObject);
+   G__get_linked_tagnum_fwd(&G__TSharcDataDictLN_vectorlEunsignedsPshortcOallocatorlEunsignedsPshortgRsPgR);
+   G__get_linked_tagnum_fwd(&G__TSharcDataDictLN_vectorlEdoublecOallocatorlEdoublegRsPgR);
+   G__get_linked_tagnum_fwd(&G__TSharcDataDictLN_vectorlEROOTcLcLTSchemaHelpercOallocatorlEROOTcLcLTSchemaHelpergRsPgR);
+   G__get_linked_tagnum_fwd(&G__TSharcDataDictLN_reverse_iteratorlEvectorlEROOTcLcLTSchemaHelpercOallocatorlEROOTcLcLTSchemaHelpergRsPgRcLcLiteratorgR);
+   G__get_linked_tagnum_fwd(&G__TSharcDataDictLN_vectorlETVirtualArraymUcOallocatorlETVirtualArraymUgRsPgR);
+   G__get_linked_tagnum_fwd(&G__TSharcDataDictLN_reverse_iteratorlEvectorlETVirtualArraymUcOallocatorlETVirtualArraymUgRsPgRcLcLiteratorgR);
+   G__tagtable_setup(G__get_linked_tagnum_fwd(&G__TSharcDataDictLN_TSharcData),sizeof(TSharcData),-1,29952,"SharcData structure",G__setup_memvarTSharcData,G__setup_memfuncTSharcData);
+}
+extern "C" void G__cpp_setupTSharcDataDict(void) {
+  G__check_setup_version(30051515,"G__cpp_setupTSharcDataDict()");
+  G__set_cpp_environmentTSharcDataDict();
+  G__cpp_setup_tagtableTSharcDataDict();
+
+  G__cpp_setup_inheritanceTSharcDataDict();
+
+  G__cpp_setup_typetableTSharcDataDict();
+
+  G__cpp_setup_memvarTSharcDataDict();
+
+  G__cpp_setup_memfuncTSharcDataDict();
+  G__cpp_setup_globalTSharcDataDict();
+  G__cpp_setup_funcTSharcDataDict();
+
+   if(0==G__getsizep2memfunc()) G__get_sizep2memfuncTSharcDataDict();
+  return;
+}
+class G__cpp_setup_initTSharcDataDict {
+  public:
+    G__cpp_setup_initTSharcDataDict() { G__add_setup_func("TSharcDataDict",(G__incsetup)(&G__cpp_setupTSharcDataDict)); G__call_setup_funcs(); }
+   ~G__cpp_setup_initTSharcDataDict() { G__remove_setup_func("TSharcDataDict"); }
+};
+G__cpp_setup_initTSharcDataDict G__cpp_setup_initializerTSharcDataDict;
+
diff --git a/NPLib/Sharc/TSharcDataDict.h b/NPLib/Sharc/TSharcDataDict.h
new file mode 100644
index 0000000000000000000000000000000000000000..8356ea9d2bf7649f2733d602189e2a6c318680ed
--- /dev/null
+++ b/NPLib/Sharc/TSharcDataDict.h
@@ -0,0 +1,54 @@
+/********************************************************************
+* TSharcDataDict.h
+* CAUTION: DON'T CHANGE THIS FILE. THIS FILE IS AUTOMATICALLY GENERATED
+*          FROM HEADER FILES LISTED IN G__setup_cpp_environmentXXX().
+*          CHANGE THOSE HEADER FILES AND REGENERATE THIS FILE.
+********************************************************************/
+#ifdef __CINT__
+#error TSharcDataDict.h/C is only for compilation. Abort cint.
+#endif
+#include <stddef.h>
+#include <stdio.h>
+#include <stdlib.h>
+#include <math.h>
+#include <string.h>
+#define G__ANSIHEADER
+#define G__DICTIONARY
+#define G__PRIVATE_GVALUE
+#include "G__ci.h"
+#include "FastAllocString.h"
+extern "C" {
+extern void G__cpp_setup_tagtableTSharcDataDict();
+extern void G__cpp_setup_inheritanceTSharcDataDict();
+extern void G__cpp_setup_typetableTSharcDataDict();
+extern void G__cpp_setup_memvarTSharcDataDict();
+extern void G__cpp_setup_globalTSharcDataDict();
+extern void G__cpp_setup_memfuncTSharcDataDict();
+extern void G__cpp_setup_funcTSharcDataDict();
+extern void G__set_cpp_environmentTSharcDataDict();
+}
+
+
+#include "TObject.h"
+#include "TMemberInspector.h"
+#include "TSharcData.h"
+#include <algorithm>
+namespace std { }
+using namespace std;
+
+#ifndef G__MEMFUNCBODY
+#endif
+
+extern G__linked_taginfo G__TSharcDataDictLN_TClass;
+extern G__linked_taginfo G__TSharcDataDictLN_TBuffer;
+extern G__linked_taginfo G__TSharcDataDictLN_TMemberInspector;
+extern G__linked_taginfo G__TSharcDataDictLN_TObject;
+extern G__linked_taginfo G__TSharcDataDictLN_vectorlEunsignedsPshortcOallocatorlEunsignedsPshortgRsPgR;
+extern G__linked_taginfo G__TSharcDataDictLN_vectorlEdoublecOallocatorlEdoublegRsPgR;
+extern G__linked_taginfo G__TSharcDataDictLN_vectorlEROOTcLcLTSchemaHelpercOallocatorlEROOTcLcLTSchemaHelpergRsPgR;
+extern G__linked_taginfo G__TSharcDataDictLN_reverse_iteratorlEvectorlEROOTcLcLTSchemaHelpercOallocatorlEROOTcLcLTSchemaHelpergRsPgRcLcLiteratorgR;
+extern G__linked_taginfo G__TSharcDataDictLN_vectorlETVirtualArraymUcOallocatorlETVirtualArraymUgRsPgR;
+extern G__linked_taginfo G__TSharcDataDictLN_reverse_iteratorlEvectorlETVirtualArraymUcOallocatorlETVirtualArraymUgRsPgRcLcLiteratorgR;
+extern G__linked_taginfo G__TSharcDataDictLN_TSharcData;
+
+/* STUB derived class for protected member access */
diff --git a/NPSimulation/include/Sharc.hh b/NPSimulation/include/Sharc.hh
index 3d9afe5012d2eb36153584cc587b370726ad2c82..03e84caf925b1887a04cf793c90c07d6dce92626 100644
--- a/NPSimulation/include/Sharc.hh
+++ b/NPSimulation/include/Sharc.hh
@@ -51,26 +51,20 @@ namespace SHARC
   
   // BOX //
   // BOX PCB
-  const G4double BOX_PCB_Width  = 61.0*mm;
+  const G4double BOX_PCB_Width  = 61.10*mm;
   const G4double BOX_PCB_Length = 104.00*mm;
-  const G4double BOX_PCB_Thickness = 3.5*mm;
+  const G4double BOX_PCB_Thickness = 3.4*mm;
   const G4double BOX_PCB_Border_LongSide = 1*mm;
   const G4double BOX_PCB_Border_ShortSide = 2*mm;
   
   // Single stage box case (DSSD only)
-  const G4double BOX_PCB_Slot1_Width = 3.5*mm;
-  const G4double BOX_PCB_Slot1_Border = 5*mm;
-  const G4double BOX_PCB_Slot1_Deepness = 0.75*mm;
-  
-  // Double stage box case (DSSD+PAD)
-  const G4double BOX_PCB_Slot2_Width = 7*mm;
-  const G4double BOX_PCB_Slot2_Border = 3*mm;
-  const G4double BOX_PCB_Slot2_Deepness = 0.75*mm;
+  const G4double BOX_PCB_Slot1_Width = BOX_PCB_Thickness;
+  const G4double BOX_PCB_Slot1_Border = 4*mm;
+  const G4double BOX_PCB_Slot1_Deepness = 0.8*mm;
   
   // BOX Wafer
-  const G4double BOX_Wafer_Width  = 51.00*mm;
-  const G4double BOX_Wafer_Length = 77.00*mm;
-  const G4double BOX_Wafer_Thickness = 100*um;
+  const G4double BOX_Wafer_Width  = 52.20*mm;
+  const G4double BOX_Wafer_Length = 76.20*mm;
   
   const G4double BOX_Wafer_DeadLayer_Thickness = 0.1*um;
   const G4int    BOX_Wafer_Front_NumberOfStrip = 16 ;
@@ -81,25 +75,20 @@ namespace SHARC
   BOX_PCB_Width/2. - BOX_PCB_Border_LongSide - BOX_Wafer_Width/2.;
   const G4double BOX_Wafer_Length_Offset =
   BOX_PCB_Length/2. - BOX_PCB_Border_ShortSide - BOX_Wafer_Length/2.;
-  const G4double BOX_PCB_Slot1_Position =(BOX_Wafer_Length/2.-BOX_Wafer_Length_Offset) + BOX_PCB_Slot1_Border + BOX_PCB_Slot1_Width/2.;
-  const G4double BOX_PCB_Slot2_Position =(BOX_Wafer_Length/2.-BOX_Wafer_Length_Offset) + BOX_PCB_Slot2_Border + BOX_PCB_Slot2_Width/2.;
+  const G4double BOX_PCB_Slot1_Position =-(BOX_Wafer_Length_Offset-BOX_Wafer_Length/2.-BOX_PCB_Slot1_Border - BOX_PCB_Slot1_Width/2.);
+  
   
   // PAD //
   // PAD PCB
-  const G4double PAD_PCB_Width  = 61.0*mm;
+  const G4double PAD_PCB_Width  = 61.10*mm;
   const G4double PAD_PCB_Length = 104.00*mm;
-  const G4double PAD_PCB_Thickness = 3.5*mm;
+  const G4double PAD_PCB_Thickness = 3.4*mm;
   const G4double PAD_PCB_Border_LongSide = 1*mm;
-  const G4double PAD_PCB_Border_ShortSide = 2*mm;
-  
-  const G4double PAD_PCB_Slot_Width = 3*mm;
-  const G4double PAD_PCB_Slot_Border = 5*mm;
-  const G4double PAD_PCB_Slot_Deepness = 1*mm;
+  const G4double PAD_PCB_Border_ShortSide = 2.5*mm;
   
   // PAD Wafer
   const G4double PAD_Wafer_Width  = 51.00*mm;
   const G4double PAD_Wafer_Length = 77.00*mm;
-  const G4double PAD_Wafer_Thickness = 100*um;
   const G4double PAD_Wafer_DeadLayer_Thickness = 0.1*um;
   
   // Compute
@@ -107,6 +96,11 @@ namespace SHARC
   PAD_PCB_Width/2. - PAD_PCB_Border_LongSide - PAD_Wafer_Width/2.;
   const G4double PAD_Wafer_Length_Offset =
   PAD_PCB_Length/2. - PAD_PCB_Border_ShortSide - PAD_Wafer_Length/2.;
+  // Double stage box case (DSSD+PAD)
+  const G4double BOX_PCB_Slot2_Width = BOX_PCB_Thickness+PAD_PCB_Thickness;
+  const G4double BOX_PCB_Slot2_Border = 2.7*mm;
+  const G4double BOX_PCB_Slot2_Deepness = 0.8*mm;
+  const G4double BOX_PCB_Slot2_Position =(BOX_Wafer_Length/2.-BOX_Wafer_Length_Offset) + BOX_PCB_Slot2_Border + BOX_PCB_Slot2_Width/2.;
   
   // QQQ //
   // QQQ PCB
diff --git a/NPSimulation/src/Sharc.cc b/NPSimulation/src/Sharc.cc
index 88f8718a34f8d2b38099768a9cd68ea64375b0da..d3341fa750c0104a21af45c8e67757717e31d6f5 100644
--- a/NPSimulation/src/Sharc.cc
+++ b/NPSimulation/src/Sharc.cc
@@ -342,13 +342,7 @@ void Sharc::ConstructBOXDetector(G4LogicalVolume* world)
   for(unsigned int i = 0 ; i < m_Z.size() ; i++){
     for (unsigned int j = 0 ; j < 4; j++) {
       // create the Box DSSD
-      
       // Make the a single detector geometry
-      G4Box*  BoxDetector = new G4Box("BoxDetector"  ,
-                                      BOX_PCB_Length/2.,
-                                      BOX_PCB_Width/2.,
-                                      BOX_PCB_Thickness/2.);
-      
       G4Box*  PCBFull = new G4Box("PCBFull"  ,
                                   BOX_PCB_Length/2.,
                                   BOX_PCB_Width/2.,
@@ -364,27 +358,48 @@ void Sharc::ConstructBOXDetector(G4LogicalVolume* world)
                                       BOX_Wafer_Width/2.,
                                       m_ThicknessBOX[i][j]/2.);
       
+      
+      G4double BOX_PCB_Slot_Width;
+      G4double BOX_PCB_Slot_Deepness;
+      G4double BOX_PCB_Slot_Border;
+      G4double BOX_PCB_Slot_Position;
+      
+      if(m_ThicknessPAD[i][j]>0){
+        BOX_PCB_Slot_Width = BOX_PCB_Slot2_Width;
+        BOX_PCB_Slot_Deepness = BOX_PCB_Slot2_Deepness;
+        BOX_PCB_Slot_Border = BOX_PCB_Slot2_Border;
+        BOX_PCB_Slot_Position = BOX_PCB_Slot2_Position;
+      }
+      
+      else{
+        BOX_PCB_Slot_Width = BOX_PCB_Slot1_Width;
+        BOX_PCB_Slot_Deepness = BOX_PCB_Slot1_Deepness;
+        BOX_PCB_Slot_Border = BOX_PCB_Slot1_Border;
+        BOX_PCB_Slot_Position = BOX_PCB_Slot1_Position;
+      }
+      
       G4Box*  SlotShape = new G4Box("SlotShape",
-                                    BOX_PCB_Slot1_Width/2.,
+                                    BOX_PCB_Slot_Width/2.,
                                     BOX_PCB_Width/2.+0.1*mm,
-                                    BOX_PCB_Slot1_Deepness);
+                                    BOX_PCB_Slot_Deepness);
       
       G4ThreeVector Box_Wafer_Offset =
       G4ThreeVector(BOX_Wafer_Length_Offset, BOX_Wafer_Width_Offset,0 );
       
-      G4SubtractionSolid* PCB1 = new G4SubtractionSolid("PCB1", PCBFull, WaferShape,new G4RotationMatrix,Box_Wafer_Offset);
+      G4SubtractionSolid* PCB1 = new G4SubtractionSolid("PCB", PCBFull, SlotShape,new G4RotationMatrix,G4ThreeVector(-BOX_PCB_Slot_Position, 0,0.5*BOX_PCB_Thickness));
       
-      G4SubtractionSolid* PCB = new G4SubtractionSolid("PCB", PCB1, SlotShape,new G4RotationMatrix,G4ThreeVector(-BOX_PCB_Slot1_Position, 0,BOX_PCB_Slot1_Deepness));
+      G4SubtractionSolid* PCB = new G4SubtractionSolid("PCB", PCB1, WaferShape,new G4RotationMatrix,Box_Wafer_Offset);
       
       // Master Volume
       G4LogicalVolume* logicBoxDetector =
-      new G4LogicalVolume(BoxDetector,m_MaterialVacuum,"logicBoxDetector", 0, 0, 0);
+      new G4LogicalVolume(PCB1,m_MaterialVacuum,"logicBoxDetector", 0, 0, 0);
       logicBoxDetector->SetVisAttributes(G4VisAttributes::Invisible);
       // Sub Volume PCB
       G4LogicalVolume* logicPCB =
       new G4LogicalVolume(PCB,m_MaterialPCB,"logicPCB", 0, 0, 0);
-      logicPCB->SetVisAttributes(PCBVisAtt);
-      
+      //logicPCB->SetVisAttributes(PCBVisAtt);
+      logicPCB->SetVisAttributes(new G4VisAttributes(G4Colour(j/4., (4-j)/4., 0.5)) );
+
       // Sub Volume Wafer
       G4LogicalVolume* logicWafer =
       new G4LogicalVolume(Wafer,m_MaterialSilicon,"logicWafer", 0, 0, 0);
@@ -394,20 +409,105 @@ void Sharc::ConstructBOXDetector(G4LogicalVolume* world)
       new G4PVPlacement(new G4RotationMatrix(0,0,0),
                         G4ThreeVector(0,0,0),
                         logicPCB,"Box_PCB",logicBoxDetector,false,i*4+j+1);
+      
       if(m_ThicknessBOX[i][j]>0)
       new G4PVPlacement(new G4RotationMatrix(0,0,0),
                         Box_Wafer_Offset,
                         logicWafer,"Box_Wafer",logicBoxDetector,false,i*4+j+1);
       
-       // Place the detector in the world
+      // create the PAD
+      
+      // Make the a single detector geometry
+      G4LogicalVolume* logicPADDetector;
+      G4ThreeVector PAD_Wafer_Offset =
+      G4ThreeVector(PAD_Wafer_Length_Offset, PAD_Wafer_Width_Offset,0 );
+      if(m_ThicknessPAD[i][j]>0){
+      G4Box*  PADDetector = new G4Box("PADDetector"  ,
+                                      PAD_PCB_Length/2.,
+                                      PAD_PCB_Width/2.,
+                                      PAD_PCB_Thickness/2.);
+      
+      G4Box*  PADPCBFull = new G4Box("PCBFull"  ,
+                                     PAD_PCB_Length/2.,
+                                     PAD_PCB_Width/2.,
+                                     PAD_PCB_Thickness/2.);
+      
+      G4Box*  PADWaferShape = new G4Box("PADWaferShape",
+                                        PAD_Wafer_Length/2.,
+                                        PAD_Wafer_Width/2.,
+                                        PAD_PCB_Thickness/2.+0.1*mm);
+      
+      G4Box*  PADWafer       = new G4Box("PADWafer",
+                                         PAD_Wafer_Length/2.,
+                                         PAD_Wafer_Width/2.,
+                                         m_ThicknessPAD[i][j]/2.);
+      
+      G4SubtractionSolid* PADPCB = new G4SubtractionSolid("PADPCB", PADPCBFull, PADWaferShape,new G4RotationMatrix,PAD_Wafer_Offset);
+      
+      // Master Volume
+      logicPADDetector =
+      new G4LogicalVolume(PADDetector,m_MaterialVacuum,"logicPADDetector", 0, 0, 0);
+      logicPADDetector->SetVisAttributes(G4VisAttributes::Invisible);
+      
+      // Sub Volume PCB
+      G4LogicalVolume* logicPADPCB =
+      new G4LogicalVolume(PADPCB,m_MaterialPCB,"logicPADPCB", 0, 0, 0);
+      logicPADPCB->SetVisAttributes(PADVisAtt);
+      
+      // Sub Volume Wafer
+      G4LogicalVolume* logicPADWafer =
+      new G4LogicalVolume(PADWafer,m_MaterialSilicon,"logicPADWafer", 0, 0, 0);
+      logicPADWafer->SetVisAttributes(SiliconVisAtt);
+        
+      
+      // Place the sub volume in the master volume
+      new G4PVPlacement(new G4RotationMatrix(0,0,0),
+                        G4ThreeVector(0,0,0),
+                        logicPADPCB,"PAD_PCB",logicPADDetector,false,i*4+j+1);
+      
+      new G4PVPlacement(new G4RotationMatrix(0,0,0),
+                        PAD_Wafer_Offset,
+                        logicPADWafer,"PAD_Wafer",logicPADDetector,false,i*4+j+1);
+      }
+      
+      ///////////////////////////////////////////////////////////////////////////////////
+      // Place the detector in the world
+      // Position of the center of the PCB
+      G4double Exposed_Length= BOX_PCB_Border_ShortSide - BOX_PCB_Slot_Deepness
+                              + BOX_Wafer_Length
+                              + BOX_PCB_Slot_Border + BOX_PCB_Slot_Width*0.5;
+      G4double DetectorOffset= -0.5*(BOX_PCB_Length-Exposed_Length);
+      
       G4ThreeVector DetectorPosition =
-      -Box_Wafer_Offset+0.5*G4ThreeVector(BOX_PCB_Slot1_Border + 0.5*BOX_PCB_Slot1_Width -(BOX_PCB_Border_ShortSide - BOX_PCB_Slot1_Deepness),0,0);
+      G4ThreeVector(DetectorOffset,-Box_Wafer_Offset.y(),0);
+
       
-      G4ThreeVector DetectorSpacing =
-      -G4ThreeVector(0, 0,0.5*(BOX_Wafer_Length+(BOX_PCB_Border_ShortSide- BOX_PCB_Slot1_Deepness)+BOX_PCB_Slot1_Border+0.5*BOX_PCB_Slot1_Width));
+      cout << "PCB Length " << BOX_PCB_Length << endl;
+      cout << " Sum " << BOX_Wafer_Length+BOX_PCB_Border_ShortSide+BOX_PCB_Slot_Border+BOX_PCB_Slot_Width << endl;
+      //-Box_Wafer_Offset+G4ThreeVector(DetectorOffset,0,0);
+      //-Box_Wafer_Offset+G4ThreeVector(BOX_PCB_Slot_Border + 0.5*BOX_PCB_Slot_Width +(BOX_PCB_Border_ShortSide - BOX_PCB_Slot_Deepness),0,0);
+     
+      // Distance of the PCB to the target
+       G4ThreeVector DetectorSpacing =
+      -G4ThreeVector(0, 0,0.5*Exposed_Length);
+      // -G4ThreeVector(0, 0,0.5*(BOX_Wafer_Length+(BOX_PCB_Border_ShortSide- BOX_PCB_Slot_Deepness)+BOX_PCB_Slot_Border+0.5*BOX_PCB_Slot_Width));
       
+      // If a PAD is present, DSSD is not in the center of the Slot:
+      G4ThreeVector PAD_OFFSET=-G4ThreeVector(0.5*PAD_PCB_Thickness,0,0);
+      if(m_ThicknessPAD[i][j]>0) DetectorPosition+=PAD_OFFSET;
+  
       DetectorPosition+=DetectorSpacing;
       
+      G4ThreeVector PADDetectorPosition =
+      -PAD_Wafer_Offset+0.5*G4ThreeVector(BOX_PCB_Slot_Border + 0.5*BOX_PCB_Slot_Width -(BOX_PCB_Border_ShortSide - BOX_PCB_Slot_Deepness),0,-BOX_PCB_Thickness-PAD_PCB_Thickness+(BOX_PCB_Slot_Width-BOX_PCB_Thickness));
+      
+      G4ThreeVector PADDetectorSpacing =
+      -G4ThreeVector(0, 0,0.5*(PAD_Wafer_Length+(PAD_PCB_Border_ShortSide- BOX_PCB_Slot_Deepness)+BOX_PCB_Slot_Border+BOX_PCB_Slot_Width));
+      
+      if(m_ThicknessPAD[i][j]>0) PADDetectorPosition+=PAD_OFFSET;
+      
+      PADDetectorPosition+=PADDetectorSpacing;
+      
       G4RotationMatrix* DetectorRotation= new G4RotationMatrix;
       // The Rotation Matrix is different for each detector
       if(j==0){
@@ -431,271 +531,17 @@ void Sharc::ConstructBOXDetector(G4LogicalVolume* world)
       DetectorPosition.transform(*DetectorRotation);
       DetectorPosition+=G4ThreeVector(0,0,m_Z[i]);
       
-      new G4PVPlacement(G4Transform3D(*DetectorRotation,DetectorPosition), logicBoxDetector,"Box",world,true,i*4+j+1);
+      PADDetectorPosition.transform(*DetectorRotation);
+      PADDetectorPosition+=G4ThreeVector(0,0,m_Z[i]);
+      
+      new G4PVPlacement(G4Transform3D(*DetectorRotation,DetectorPosition), logicBoxDetector,"Box",world,false,i*4+j+1);
+      
+      if(logicPADDetector!=NULL)
+        new G4PVPlacement(G4Transform3D(*DetectorRotation, PADDetectorPosition),
+                          logicPADDetector,"PAD",world,false,i*4+j+1);
     }
   }
 }
-///////////////////////////////////////////////////
-/*void Sharc::ConstructBOXDetector(G4LogicalVolume* world)
-{
-  // Vis Attribute:
-  // Visual Attribute:
-  // Dark Grey
-  const G4VisAttributes* SiliconVisAtt = new G4VisAttributes(G4Colour(0.3, 0.3, 0.3)) ;
-  // Green
-  const G4VisAttributes* PCBVisAtt = new G4VisAttributes(G4Colour(0.2, 0.5, 0.2)) ;
-  // Gold Yellow
-  const G4VisAttributes* PADVisAtt = new G4VisAttributes(G4Colour(0.5, 0.5, 0.2)) ;
-  // Light Grey
-  const G4VisAttributes* FrameVisAtt = new G4VisAttributes(G4Colour(0.5, 0.5, 0.5)) ;
- 
-  
-  // create the Box DSSD
-  
-  // Make the a single detector geometry
-  G4Box*  BoxDetector = new G4Box("BoxDetector"  ,
-                                  BOX_PCB_Length/2.,
-                                  BOX_PCB_Width/2.,
-                                  BOX_PCB_Thickness/2.);
-  
-  G4Box*  PCBFull = new G4Box("PCBFull"  ,
-                              BOX_PCB_Length/2.,
-                              BOX_PCB_Width/2.,
-                              BOX_PCB_Thickness/2.);
-  
-  G4Box*  WaferShape = new G4Box("WaferShape",
-                                 BOX_Wafer_Length/2.,
-                                 BOX_Wafer_Width/2.,
-                                 BOX_PCB_Thickness/2.+0.1*mm);
-  
-  G4Box*  Wafer       = new G4Box("Wafer",
-                                  BOX_Wafer_Length/2.,
-                                  BOX_Wafer_Width/2.,
-                                  BOX_Wafer_Thickness/2.);
-  
-  G4Box*  SlotShape = new G4Box("SlotShape",
-                                BOX_PCB_Slot1_Width/2.,
-                                BOX_PCB_Width/2.+0.1*mm,
-                                BOX_PCB_Slot1_Deepness);
-  
-  G4ThreeVector Box_Wafer_Offset =
-    G4ThreeVector(BOX_Wafer_Length_Offset, BOX_Wafer_Width_Offset,0 );
-  
-  G4SubtractionSolid* PCB1 = new G4SubtractionSolid("PCB1", PCBFull, WaferShape,new G4RotationMatrix,Box_Wafer_Offset);
-  
-  G4SubtractionSolid* PCB = new G4SubtractionSolid("PCB", PCB1, SlotShape,new G4RotationMatrix,G4ThreeVector(-BOX_PCB_Slot1_Position, 0,BOX_PCB_Slot1_Deepness));
-  
-  // Master Volume
-  G4LogicalVolume* logicBoxDetector =
-  new G4LogicalVolume(BoxDetector,m_MaterialVacuum,"logicBoxDetector", 0, 0, 0);
-  logicBoxDetector->SetVisAttributes(G4VisAttributes::Invisible);
-  // Sub Volume PCB
-  G4LogicalVolume* logicPCB =
-  new G4LogicalVolume(PCB,m_MaterialPCB,"logicPCB", 0, 0, 0);
-  logicPCB->SetVisAttributes(PCBVisAtt);
-  
-  // Sub Volume Wafer
-  G4LogicalVolume* logicWafer =
-  new G4LogicalVolume(Wafer,m_MaterialSilicon,"logicWafer", 0, 0, 0);
-  logicWafer->SetVisAttributes(SiliconVisAtt);
-
-  // Place the sub volume in the master volume
-  new G4PVPlacement(new G4RotationMatrix(0,0,0),
-                    G4ThreeVector(0,0,0),
-                    logicPCB,"Box_PCB",logicBoxDetector,false,0);
-  
-  new G4PVPlacement(new G4RotationMatrix(0,0,0),
-                    Box_Wafer_Offset,
-                    logicWafer,"Box_Wafer",logicBoxDetector,false,0);
-  
-  // Place the detector in the world
-  for(unsigned int i = 0 ; i < m_Z.size() ; i++){
-    G4ThreeVector DetectorPosition =
-    -Box_Wafer_Offset+0.5*G4ThreeVector(BOX_PCB_Slot1_Border + 0.5*BOX_PCB_Slot1_Width -(BOX_PCB_Border_ShortSide - BOX_PCB_Slot1_Deepness),0,0);
-    
-    G4ThreeVector DetectorSpacing =
-    -G4ThreeVector(0, 0,0.5*(BOX_Wafer_Length+(BOX_PCB_Border_ShortSide- BOX_PCB_Slot1_Deepness)+BOX_PCB_Slot1_Border+0.5*BOX_PCB_Slot1_Width));
-    
-    DetectorPosition+=DetectorSpacing;
-    
-    // Det 1
-    G4RotationMatrix* DetectorRotation1= new G4RotationMatrix;
-    DetectorRotation1->rotateX(90*deg);
-    if(m_Z[i]>0) DetectorRotation1->rotateY(180*deg);
-    G4ThreeVector DetectorPosition1=DetectorPosition;
-    DetectorPosition1.transform(*DetectorRotation1);
-    DetectorPosition1+=G4ThreeVector(0,0,m_Z[i]);
-    
-    G4PVPlacement* detector1 = new G4PVPlacement(G4Transform3D(*DetectorRotation1,DetectorPosition1), logicBoxDetector,"Box",world,true,i+0);
-    
-    new G4PVPlacement(new G4RotationMatrix(0,0,0),
-                      Box_Wafer_Offset,
-                      logicWafer,"Box_Wafer",detector1->GetLogicalVolume(),false,0);
-    
-    // Det2
-    G4RotationMatrix* DetectorRotation2= new G4RotationMatrix;
-    DetectorRotation2->rotateZ(180*deg);
-    DetectorRotation2->rotateX(-90*deg);
-    if(m_Z[i]>0) DetectorRotation2->rotateY(180*deg);
-    G4ThreeVector DetectorPosition2=DetectorPosition;
-    DetectorPosition2.transform(*DetectorRotation2);
-    DetectorPosition2+=G4ThreeVector(0,0,m_Z[i]);
-    
-    new G4PVPlacement(G4Transform3D(*DetectorRotation2, DetectorPosition2),
-                      logicBoxDetector,"Box",world,false,i+1);
-   
-    G4RotationMatrix* DetectorRotation3= new G4RotationMatrix;
-    DetectorRotation3->rotateX(90*deg);
-    DetectorRotation3->rotateZ(90*deg);
-    if(m_Z[i]>0) DetectorRotation3->rotateY(180*deg);
-    G4ThreeVector DetectorPosition3=DetectorPosition;
-    DetectorPosition3.transform(*DetectorRotation3);
-    DetectorPosition3+=G4ThreeVector(0,0,m_Z[i]);
-    
-    new G4PVPlacement(G4Transform3D(*DetectorRotation3, DetectorPosition3),
-                      logicBoxDetector,"Box",world,false,i+2);
-    
-    // Det 4
-    G4RotationMatrix* DetectorRotation4= new G4RotationMatrix;
-    DetectorRotation4->rotateX(90*deg);
-    DetectorRotation4->rotateZ(-90*deg);
-    if(m_Z[i]>0) DetectorRotation4->rotateY(180*deg);
-    G4ThreeVector DetectorPosition4=DetectorPosition;
-    DetectorPosition4.transform(*DetectorRotation4);
-    DetectorPosition4+=G4ThreeVector(0,0,m_Z[i]);
-    new G4PVPlacement(G4Transform3D(*DetectorRotation4, DetectorPosition4),
-                      logicBoxDetector,"Box",world,false,i+3);
-  }
-  
-  
-  
-  // create the PAD
-  
-  // Make the a single detector geometry
-  G4Box*  PADDetector = new G4Box("PADDetector"  ,
-                                  PAD_PCB_Length/2.,
-                                  PAD_PCB_Width/2.,
-                                  PAD_PCB_Thickness/2.);
-  
-  G4Box*  PADPCBFull = new G4Box("PCBFull"  ,
-                                 PAD_PCB_Length/2.,
-                                 PAD_PCB_Width/2.,
-                                 PAD_PCB_Thickness/2.);
-  
-  G4Box*  PADWaferShape = new G4Box("PADWaferShape",
-                                    PAD_Wafer_Length/2.,
-                                    PAD_Wafer_Width/2.,
-                                    PAD_PCB_Thickness/2.+0.1*mm);
-  
-  G4Box*  PADWafer       = new G4Box("PADWafer",
-                                     PAD_Wafer_Length/2.,
-                                     PAD_Wafer_Width/2.,
-                                     PAD_Wafer_Thickness/2.);
-  
-  G4ThreeVector PAD_Wafer_Offset =
-  G4ThreeVector(PAD_Wafer_Length_Offset, PAD_Wafer_Width_Offset,0 );
-  
-  G4SubtractionSolid* PADPCB = new G4SubtractionSolid("PADPCB", PADPCBFull, PADWaferShape,new G4RotationMatrix,PAD_Wafer_Offset);
-  
-  // Master Volume
-  G4LogicalVolume* logicPADDetector =
-  new G4LogicalVolume(PADDetector,m_MaterialVacuum,"logicPADDetector", 0, 0, 0);
-  logicPADDetector->SetVisAttributes(G4VisAttributes::Invisible);
- 
-  // Sub Volume PCB
-  G4LogicalVolume* logicPADPCB =
-  new G4LogicalVolume(PADPCB,m_MaterialPCB,"logicPADPCB", 0, 0, 0);
-  logicPADPCB->SetVisAttributes(PADVisAtt);
-  
-  // Sub Volume Wafer
-  G4LogicalVolume* logicPADWafer =
-  new G4LogicalVolume(PADWafer,m_MaterialSilicon,"logicPADWafer", 0, 0, 0);
-  logicPADWafer->SetVisAttributes(SiliconVisAtt);
-  
-  
-  
-  // Place the sub volume in the master volume
-  new G4PVPlacement(new G4RotationMatrix(0,0,0),
-                    G4ThreeVector(0,0,0),
-                    logicPADPCB,"PAD_PCB",logicPADDetector,false,0);
-  
-  new G4PVPlacement(new G4RotationMatrix(0,0,0),
-                    PAD_Wafer_Offset,
-                    logicPADWafer,"PAD_Wafer",logicPADDetector,false,0);
-  
-  // Place the detector in the world
-  for(unsigned int i = 0 ; i < m_Z.size() ; i++){
-    G4ThreeVector DetectorPosition =
-    -PAD_Wafer_Offset+0.5*G4ThreeVector(PAD_PCB_Slot_Border + 0.5*PAD_PCB_Slot_Width -(PAD_PCB_Border_ShortSide - PAD_PCB_Slot_Deepness),0,-BOX_PCB_Thickness-PAD_PCB_Thickness);
-    
-    G4ThreeVector DetectorSpacing =
-    -G4ThreeVector(0, 0,0.5*(PAD_Wafer_Length+(PAD_PCB_Border_ShortSide- PAD_PCB_Slot_Deepness)+PAD_PCB_Slot_Border+0.5*PAD_PCB_Slot_Width));
-    
-    DetectorPosition+=DetectorSpacing;
-    
-    // Det 1
-    if(m_ThicknessPAD1[i]!=0){
-    G4RotationMatrix* DetectorRotation1= new G4RotationMatrix;
-    
-    
-    DetectorRotation1->rotateX(90*deg);
-    if(m_Z[i]>0) DetectorRotation1->rotateY(180*deg);
-    G4ThreeVector DetectorPosition1=DetectorPosition;
-    DetectorPosition1.transform(*DetectorRotation1);
-    DetectorPosition1+=G4ThreeVector(0,0,m_Z[i]);
-    
-    new G4PVPlacement(G4Transform3D(*DetectorRotation1, DetectorPosition1),
-                      logicPADDetector,"PAD",world,false,i+0);
-    }
-    
-    // Det2
-    if(m_ThicknessPAD2[i]!=0){
-    G4RotationMatrix* DetectorRotation2= new G4RotationMatrix;
-    DetectorRotation2->rotateZ(180*deg);
-    DetectorRotation2->rotateX(-90*deg);
-    if(m_Z[i]>0) DetectorRotation2->rotateY(180*deg);
-    G4ThreeVector DetectorPosition2=DetectorPosition;
-    DetectorPosition2.transform(*DetectorRotation2);
-    DetectorPosition2+=G4ThreeVector(0,0,m_Z[i]);
-    
-    new G4PVPlacement(G4Transform3D(*DetectorRotation2, DetectorPosition2),
-                      logicPADDetector,"PAD",world,false,i+1);
-    }
-    
-    // Det 3
-    if(m_ThicknessPAD3[i]!=0){
-    G4RotationMatrix* DetectorRotation3= new G4RotationMatrix;
-    DetectorRotation3->rotateX(90*deg);
-    DetectorRotation3->rotateZ(90*deg);
-    if(m_Z[i]>0) DetectorRotation3->rotateY(180*deg);
-    G4ThreeVector DetectorPosition3=DetectorPosition;
-    DetectorPosition3.transform(*DetectorRotation3);
-    DetectorPosition3+=G4ThreeVector(0,0,m_Z[i]);
-    
-    new G4PVPlacement(G4Transform3D(*DetectorRotation3, DetectorPosition3),
-                      logicPADDetector,"PAD",world,false,i+2);
-    }
-    
-    // Det 4
-    if(m_ThicknessPAD4[i]!=0){
-    G4RotationMatrix* DetectorRotation4= new G4RotationMatrix;
-    DetectorRotation4->rotateX(90*deg);
-    DetectorRotation4->rotateZ(-90*deg);
-    if(m_Z[i]>0) DetectorRotation4->rotateY(180*deg);
-    G4ThreeVector DetectorPosition4=DetectorPosition;
-    DetectorPosition4.transform(*DetectorRotation4);
-    DetectorPosition4+=G4ThreeVector(0,0,m_Z[i]);
-    new G4PVPlacement(G4Transform3D(*DetectorRotation4, DetectorPosition4),
-                      logicPADDetector,"PAD",world,false,i+3);
-    }
-    
-  }
-
-  
-  
- 
-}*/
-
 ///////////////////////////////////////////////////
 void Sharc::ConstructQQQDetector(G4LogicalVolume* world)
 {