diff --git a/NPLib/ComptonTelescope/Makefile b/NPLib/ComptonTelescope/Makefile
new file mode 100755
index 0000000000000000000000000000000000000000..2c60a271fad4d28b3f87ba09f3134406b30ac71c
--- /dev/null
+++ b/NPLib/ComptonTelescope/Makefile
@@ -0,0 +1,40 @@
+include ../Makefile.arch
+
+#------------------------------------------------------------------------------
+SHARELIB      =  libComptonTelescopeData.so
+
+all:            $(SHARELIB)
+#------------------------------------------------------------------------------
+############### Detector ##############
+
+## MUST2 ##
+libComptonTelescopeData.so:	TComptonTelescopeData.o	TComptonTelescopeDataDict.o \
+                              TComptonTelescopeProcessData.o   TComptonTelescopeProcessDataDict.o
+		$(LD) $(SOFLAGS) $^ $(OutPutOpt) $@
+
+TComptonTelescopeDataDict.cxx:	TComptonTelescopeData.h
+			rootcint -f $@ -c $^
+
+TComptonTelescopeProcessDataDict.cxx:	TComptonTelescopeProcessData.h
+			rootcint -f $@ -c $^
+
+# dependances
+TComptonTelescopeData.o:		TComptonTelescopeData.cxx	TComptonTelescopeData.h
+TComptonTelescopeProcessData.o:		TComptonTelescopeProcessData.cxx	TComptonTelescopeProcessData.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/ComptonTelescope/TComptonTelescopeData.cxx b/NPLib/ComptonTelescope/TComptonTelescopeData.cxx
new file mode 100755
index 0000000000000000000000000000000000000000..a77eaa918ca8d3e56b857996b98092e0e4ce7447
--- /dev/null
+++ b/NPLib/ComptonTelescope/TComptonTelescopeData.cxx
@@ -0,0 +1,113 @@
+/*****************************************************************************
+ * 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: N. de Sereville  contact address: deserevi@ipno.in2p3.fr *
+ *                                                                           *
+ * Creation Date  : July 2012                                                *
+ * Last update    :                                                          *
+ *---------------------------------------------------------------------------*
+ * Decription:                                                               *
+ *  This class holds the raw data for a Compton telescope prototype made of  *
+ *  a silicon tracker detector and a LaBr3 calorimeter                       *
+ *                                                                           *
+ *---------------------------------------------------------------------------*
+ * Comment:                                                                  *
+ *                                                                           *
+ *                                                                           *
+ *****************************************************************************/
+#include <iostream>
+using namespace std;
+
+#include "TComptonTelescopeData.h"
+
+ClassImp(TComptonTelescopeData)
+
+TComptonTelescopeData::TComptonTelescopeData()
+{
+   // Default constructor
+   Clear();
+}
+
+
+
+TComptonTelescopeData::~TComptonTelescopeData()
+{
+}
+
+
+
+void TComptonTelescopeData::Clear()
+{
+   // DSSSD
+   // (X,E)
+   fCT_Tracker_FrontE_TowerNbr.clear();
+   fCT_Tracker_FrontE_DetectorNbr.clear();
+   fCT_Tracker_FrontE_StripNbr.clear();
+   fCT_Tracker_FrontE_Energy.clear();
+   // (X,T)
+   fCT_Tracker_FrontT_TowerNbr.clear();
+   fCT_Tracker_FrontT_DetectorNbr.clear();
+   fCT_Tracker_FrontT_StripNbr.clear();
+   fCT_Tracker_FrontT_Time.clear();
+   // (Y,E)
+   fCT_Tracker_BackE_TowerNbr.clear();   
+   fCT_Tracker_BackE_DetectorNbr.clear();
+   fCT_Tracker_BackE_StripNbr.clear();
+   fCT_Tracker_BackE_Energy.clear();
+   // (Y,T)
+   fCT_Tracker_BackT_TowerNbr.clear();   
+   fCT_Tracker_BackT_DetectorNbr.clear();
+   fCT_Tracker_BackT_StripNbr.clear();
+   fCT_Tracker_BackT_Time.clear();
+
+   // Calorimeter E
+   fCT_Calorimeter_E_TowerNbr.clear();
+   fCT_Calorimeter_E_DetectorNbr.clear();
+   fCT_Calorimeter_E_ChannelNbr.clear() ;
+   fCT_Calorimeter_E_Energy.clear();
+   // Calorimeter T
+   fCT_Calorimeter_T_TowerNbr.clear();
+   fCT_Calorimeter_T_DetectorNbr.clear();
+   fCT_Calorimeter_T_ChannelNbr.clear();
+   fCT_Calorimeter_T_Time.clear();
+}
+
+
+
+void TComptonTelescopeData::Dump() const
+{
+   cout << "XXXXXXXXXXXXXXXXXXXXXXXX New Event: Compton Telescope XXXXXXXXXXXXXXXXX" << endl;
+
+   // DSSSD
+   // (X,E)
+   cout << "CT_Tracker_FrontE_Mult = " << fCT_Tracker_FrontE_DetectorNbr.size() << endl;
+   for (UShort_t i = 0; i < fCT_Tracker_FrontE_DetectorNbr.size(); i++)
+      cout << "TowNbr: " << fCT_Tracker_FrontE_TowerNbr[i] << " DetNbr: " << fCT_Tracker_FrontE_DetectorNbr[i] << " Strip: " << fCT_Tracker_FrontE_StripNbr[i] << " Energy: " << fCT_Tracker_FrontE_Energy[i] << endl;
+   // (X,T)
+   cout << "CT_Tracker_FrontT_Mult = " << fCT_Tracker_FrontT_DetectorNbr.size() << endl;
+   for (UShort_t i = 0; i < fCT_Tracker_FrontT_DetectorNbr.size(); i++)
+      cout << "TowNbr: " << fCT_Tracker_FrontT_TowerNbr[i] << " DetNbr: " << fCT_Tracker_FrontT_DetectorNbr[i] << " Strip: " << fCT_Tracker_FrontT_StripNbr[i] << " Time: " << fCT_Tracker_FrontT_Time[i] << endl;
+   // (Y,E)
+   cout << "CT_Tracker_BackE_Mult = " << fCT_Tracker_BackE_DetectorNbr.size() << endl;
+   for (UShort_t i = 0; i < fCT_Tracker_BackE_DetectorNbr.size(); i++)
+      cout << "TowNbr: " << fCT_Tracker_BackE_TowerNbr[i] << " DetNbr: " << fCT_Tracker_BackE_DetectorNbr[i] << " Strip: " << fCT_Tracker_BackE_StripNbr[i] << " Energy: " << fCT_Tracker_BackE_Energy[i] << endl;
+   // (Y,T)
+   cout << "CT_Tracker_BackT_Mult = " << fCT_Tracker_BackT_DetectorNbr.size() << endl;
+   for (UShort_t i = 0; i < fCT_Tracker_BackT_DetectorNbr.size(); i++)
+      cout << "TowNbr: " << fCT_Tracker_BackT_TowerNbr[i] << " DetNbr: " << fCT_Tracker_BackT_DetectorNbr[i] << " Strip: " << fCT_Tracker_BackT_StripNbr[i] << " Time: " << fCT_Tracker_BackT_Time[i] << endl;
+
+   // Calorimeter
+   // Energy
+   cout << "CT_Calorimeter_E_Mult = " << fCT_Calorimeter_E_DetectorNbr.size() << endl;
+   for (UShort_t i = 0; i < fCT_Calorimeter_E_DetectorNbr.size(); i++)
+      cout << "TowNbr: " << fCT_Calorimeter_E_TowerNbr[i] << " Det: " << fCT_Calorimeter_E_DetectorNbr[i] << " Pad: " << fCT_Calorimeter_E_ChannelNbr[i] << " Energy: " << fCT_Calorimeter_E_Energy[i] << endl;
+   // Time
+   cout << "CT_Calorimeter_T_Mult = " << fCT_Calorimeter_T_DetectorNbr.size() << endl;
+   for (UShort_t i = 0; i < fCT_Calorimeter_T_DetectorNbr.size(); i++)
+      cout << "TowNbr: " << fCT_Calorimeter_E_TowerNbr[i] << " Det: " << fCT_Calorimeter_T_DetectorNbr[i] << " Pad: " << fCT_Calorimeter_T_ChannelNbr[i] << " Time: " << fCT_Calorimeter_T_Time[i] << endl;
+}
diff --git a/NPLib/ComptonTelescope/TComptonTelescopeData.h b/NPLib/ComptonTelescope/TComptonTelescopeData.h
new file mode 100755
index 0000000000000000000000000000000000000000..966f19a6089113f7c47e9bd901198a0ae70a3de0
--- /dev/null
+++ b/NPLib/ComptonTelescope/TComptonTelescopeData.h
@@ -0,0 +1,155 @@
+#ifndef __COMPTONTELESCOPEDATA__
+#define __COMPTONTELESCOPEDATA__
+/*****************************************************************************
+ * 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: N. de Sereville  contact address: deserevi@ipno.in2p3.fr *
+ *                                                                           *
+ * Creation Date  : July 2012                                                *
+ * Last update    :                                                          *
+ *---------------------------------------------------------------------------*
+ * Decription:                                                               *
+ *  This class holds the raw data for a Compton telescope prototype made of  *
+ *  a silicon tracker detector and a LaBr3 calorimeter                       *
+ *                                                                           *
+ *---------------------------------------------------------------------------*
+ * Comment:                                                                  *
+ *                                                                           *
+ *                                                                           *
+ *****************************************************************************/
+#include <vector>
+#include "TObject.h"
+
+using namespace std ;
+class TComptonTelescopeData : public TObject {
+   private:
+      // DSSSD tracker
+      // X strips
+      // Energy
+      vector<UShort_t>   fCT_Tracker_FrontE_TowerNbr;
+      vector<UShort_t>   fCT_Tracker_FrontE_DetectorNbr;
+      vector<UShort_t>   fCT_Tracker_FrontE_StripNbr;
+      vector<Double_t>   fCT_Tracker_FrontE_Energy;
+      // Time
+      vector<UShort_t>   fCT_Tracker_FrontT_TowerNbr;
+      vector<UShort_t>   fCT_Tracker_FrontT_DetectorNbr;
+      vector<UShort_t>   fCT_Tracker_FrontT_StripNbr;
+      vector<Double_t>   fCT_Tracker_FrontT_Time;
+      // Y strips
+      // Energy
+      vector<UShort_t>   fCT_Tracker_BackE_TowerNbr;
+      vector<UShort_t>   fCT_Tracker_BackE_DetectorNbr;
+      vector<UShort_t>   fCT_Tracker_BackE_StripNbr;
+      vector<Double_t>   fCT_Tracker_BackE_Energy;
+      // Time
+      vector<UShort_t>   fCT_Tracker_BackT_TowerNbr;
+      vector<UShort_t>   fCT_Tracker_BackT_DetectorNbr;
+      vector<UShort_t>   fCT_Tracker_BackT_StripNbr;
+      vector<Double_t>   fCT_Tracker_BackT_Time;
+
+      // Calorimeter
+      // Energy
+      vector<UShort_t>   fCT_Calorimeter_E_TowerNbr;
+      vector<UShort_t>   fCT_Calorimeter_E_DetectorNbr;
+      vector<UShort_t>   fCT_Calorimeter_E_ChannelNbr;
+      vector<Double_t>   fCT_Calorimeter_E_Energy;
+      // Time
+      vector<UShort_t>   fCT_Calorimeter_T_TowerNbr;
+      vector<UShort_t>   fCT_Calorimeter_T_DetectorNbr;
+      vector<UShort_t>   fCT_Calorimeter_T_ChannelNbr;
+      vector<Double_t>   fCT_Calorimeter_T_Time;
+
+   public:
+      TComptonTelescopeData();
+      virtual ~TComptonTelescopeData();
+
+      void Clear();
+      void Clear(const Option_t*) {};
+      void Dump() const;
+
+      /////////////////////           SETTERS           ////////////////////////
+      // DSSD
+      // (X,E)
+      void SetCTTrackerFrontETowerNbr(const UShort_t TowNbr)      {fCT_Tracker_FrontE_TowerNbr.push_back(TowNbr);}
+      void SetCTTrackerFrontEDetectorNbr(const UShort_t DetNbr)   {fCT_Tracker_FrontE_DetectorNbr.push_back(DetNbr);}
+      void SetCTTrackerFrontEStripNbr(const UShort_t StripNbr)    {fCT_Tracker_FrontE_StripNbr.push_back(StripNbr);}
+      void SetCTTrackerFrontEEnergy(const Double_t Energy)        {fCT_Tracker_FrontE_Energy.push_back(Energy);}
+      // (X,T)
+      void SetCTTrackerFrontTTowerNbr(const UShort_t TowNbr)      {fCT_Tracker_FrontT_TowerNbr.push_back(TowNbr);}
+      void SetCTTrackerFrontTDetectorNbr(const UShort_t DetNbr)   {fCT_Tracker_FrontT_DetectorNbr.push_back(DetNbr);}
+      void SetCTTrackerFrontTStripNbr(const UShort_t StripNbr)    {fCT_Tracker_FrontT_StripNbr.push_back(StripNbr);}
+      void SetCTTrackerFrontTTime(const Double_t Time)            {fCT_Tracker_FrontT_Time.push_back(Time);}
+      // (Y,E)
+      void SetCTTrackerBackETowerNbr(const UShort_t TowNbr)       {fCT_Tracker_BackE_TowerNbr.push_back(TowNbr);}
+      void SetCTTrackerBackEDetectorNbr(const UShort_t DetNbr)    {fCT_Tracker_BackE_DetectorNbr.push_back(DetNbr);}
+      void SetCTTrackerBackEStripNbr(const UShort_t StripNbr)     {fCT_Tracker_BackE_StripNbr.push_back(StripNbr);}
+      void SetCTTrackerBackEEnergy(const Double_t Energy)         {fCT_Tracker_BackE_Energy.push_back(Energy);}
+      // (Y,T)
+      void SetCTTrackerBackTTowerNbr(const UShort_t TowNbr)       {fCT_Tracker_BackT_TowerNbr.push_back(TowNbr);}
+      void SetCTTrackerBackTDetectorNbr(const UShort_t DetNbr)    {fCT_Tracker_BackT_DetectorNbr.push_back(DetNbr);}
+      void SetCTTrackerBackTStripNbr(const UShort_t StripNbr)     {fCT_Tracker_BackT_StripNbr.push_back(StripNbr);}
+      void SetCTTrackerBackTTime(const Double_t Time)             {fCT_Tracker_BackT_Time.push_back(Time);}
+
+      // Calorimeter
+      // (E)
+      void SetCTCalorimeterETowerNbr(const UShort_t TowNbr)       {fCT_Calorimeter_E_TowerNbr.push_back(TowNbr);}
+      void SetCTCalorimeterEDetectorNbr(const UShort_t DetNbr)    {fCT_Calorimeter_E_TowerNbr.push_back(DetNbr);}
+      void SetCTCalorimeterEChannelNbr(const UShort_t ChannelNbr) {fCT_Calorimeter_E_ChannelNbr.push_back(ChannelNbr);}
+      void SetCTCalorimeterEEnergy(const Double_t Energy)         {fCT_Calorimeter_E_Energy.push_back(Energy);}
+      // (T)
+      void SetCTCalorimeterTTowerNbr(const UShort_t TowNbr)       {fCT_Calorimeter_T_TowerNbr.push_back(TowNbr);}
+      void SetCTCalorimeterTDetectorNbr(const UShort_t DetNbr)    {fCT_Calorimeter_T_TowerNbr.push_back(DetNbr);}
+      void SetCTCalorimeterTChannelNbr(const UShort_t ChannelNbr) {fCT_Calorimeter_T_ChannelNbr.push_back(ChannelNbr);}
+      void SetCTCalorimeterTTime(const Double_t Time)             {fCT_Calorimeter_T_Time.push_back(Time);}
+
+
+      /////////////////////           GETTERS           ////////////////////////
+      // DSSD
+      // (X,E)
+      UShort_t   GetCTTrackerFrontEMult()                      const {return fCT_Tracker_FrontE_TowerNbr.size();}
+      UShort_t   GetCTTrackerFrontETowerNbr(const Int_t i)     const {return fCT_Tracker_FrontE_TowerNbr[i];}
+      UShort_t   GetCTTrackerFrontEDetectorNbr(const Int_t i)  const {return fCT_Tracker_FrontE_DetectorNbr[i];}
+      UShort_t   GetCTTrackerFrontEStripNbr(const Int_t i)     const {return fCT_Tracker_FrontE_StripNbr[i];}
+      Double_t   GetCTTrackerFrontEEnergy(const Int_t i)       const {return fCT_Tracker_FrontE_Energy[i];}
+      // (X,T)
+      UShort_t   GetCTTrackerFrontTMult()                      const {return fCT_Tracker_FrontT_TowerNbr.size();}
+      UShort_t   GetCTTrackerFrontTTowerNbr(const Int_t i)     const {return fCT_Tracker_FrontT_TowerNbr[i];}
+      UShort_t   GetCTTrackerFrontTDetectorNbr(const Int_t i)  const {return fCT_Tracker_FrontT_DetectorNbr[i];}
+      UShort_t   GetCTTrackerFrontTStripNbr(const Int_t i)     const {return fCT_Tracker_FrontT_StripNbr[i];}
+      Double_t   GetCTTrackerFrontTTime(const Int_t i)         const {return fCT_Tracker_FrontT_Time[i];}
+      // (Y,E)
+      UShort_t   GetCTTrackerBackEMult()                       const {return fCT_Tracker_BackE_TowerNbr.size();}
+      UShort_t   GetCTTrackerBackETowerNbr(const Int_t i)      const {return fCT_Tracker_BackE_TowerNbr[i];}
+      UShort_t   GetCTTrackerBackEDetectorNbr(const Int_t i)   const {return fCT_Tracker_BackE_DetectorNbr[i];}
+      UShort_t   GetCTTrackerBackEStripNbr(const Int_t i)      const {return fCT_Tracker_BackE_StripNbr[i];}
+      Double_t   GetCTTrackerBackEEnergy(const Int_t i)        const {return fCT_Tracker_BackE_Energy[i];}
+      // (Y,T)
+      UShort_t   GetCTTrackerBackTMult()                       const {return fCT_Tracker_BackT_TowerNbr.size();}
+      UShort_t   GetCTrackerTBackTTowerNbr(const Int_t i)      const {return fCT_Tracker_BackT_TowerNbr[i];}
+      UShort_t   GetCTTrackerBackTDetectorNbr(const Int_t i)   const {return fCT_Tracker_BackT_DetectorNbr[i];}
+      UShort_t   GetCTTrackerBackTStripNbr(const Int_t i)      const {return fCT_Tracker_BackT_StripNbr[i];}
+      Double_t   GetCTTrackerBackTTime(const Int_t i)          const {return fCT_Tracker_BackT_Time[i];}
+
+      // Calorimeter 
+      //(E)
+      UShort_t   GetCTCalorimeterEMult()                       const {return fCT_Calorimeter_E_TowerNbr.size();}
+      UShort_t   GetCTCalorimeterETowerNbr(const Int_t i)      const {return fCT_Calorimeter_E_TowerNbr[i];}
+      UShort_t   GetCTCalorimeterEDetectorNbr(const Int_t i)   const {return fCT_Calorimeter_E_DetectorNbr[i];}
+      UShort_t   GetCTCalorimeterEChannelNbr(const Int_t i)    const {return fCT_Calorimeter_E_ChannelNbr[i];}
+      Double_t   GetCTCalorimeterEEnergy(const Int_t i)        const {return fCT_Calorimeter_E_Energy[i];}
+      //(T)
+      UShort_t   GetCTCalorimeterTMult()                       const {return fCT_Calorimeter_T_TowerNbr.size();}
+      UShort_t   GetCTCalorimeterTTowerNbr(const Int_t i)      const {return fCT_Calorimeter_T_TowerNbr[i];}
+      UShort_t   GetCTCalorimeterTDetectorNbr(const Int_t i)   const {return fCT_Calorimeter_T_DetectorNbr[i];}
+      UShort_t   GetCTCalorimeterTChannelNbr(const Int_t i)    const {return fCT_Calorimeter_T_ChannelNbr[i];}
+      Double_t   GetCTCalorimeterTTime(const Int_t i)          const {return fCT_Calorimeter_T_Time[i];}
+
+      ClassDef(TComptonTelescopeData,1)  // ComptonTelescopeData structure
+};
+
+#endif
diff --git a/NPLib/ComptonTelescope/TComptonTelescopeDataDict.cxx b/NPLib/ComptonTelescope/TComptonTelescopeDataDict.cxx
new file mode 100644
index 0000000000000000000000000000000000000000..02a4be261f2f1408b292318e3c19b180f158fd95
--- /dev/null
+++ b/NPLib/ComptonTelescope/TComptonTelescopeDataDict.cxx
@@ -0,0 +1,1787 @@
+//
+// File generated by rootcint at Tue Jul 17 16:40:44 2012
+
+// Do NOT change. Changes will be lost next time file is generated
+//
+
+#define R__DICTIONARY_FILENAME TComptonTelescopeDataDict
+#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 "TComptonTelescopeDataDict.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 TComptonTelescopeData_ShowMembers(void *obj, TMemberInspector &R__insp);
+   static void *new_TComptonTelescopeData(void *p = 0);
+   static void *newArray_TComptonTelescopeData(Long_t size, void *p);
+   static void delete_TComptonTelescopeData(void *p);
+   static void deleteArray_TComptonTelescopeData(void *p);
+   static void destruct_TComptonTelescopeData(void *p);
+   static void streamer_TComptonTelescopeData(TBuffer &buf, void *obj);
+
+   // Function generating the singleton type initializer
+   static TGenericClassInfo *GenerateInitInstanceLocal(const ::TComptonTelescopeData*)
+   {
+      ::TComptonTelescopeData *ptr = 0;
+      static ::TVirtualIsAProxy* isa_proxy = new ::TInstrumentedIsAProxy< ::TComptonTelescopeData >(0);
+      static ::ROOT::TGenericClassInfo 
+         instance("TComptonTelescopeData", ::TComptonTelescopeData::Class_Version(), "./TComptonTelescopeData.h", 29,
+                  typeid(::TComptonTelescopeData), DefineBehavior(ptr, ptr),
+                  &::TComptonTelescopeData::Dictionary, isa_proxy, 0,
+                  sizeof(::TComptonTelescopeData) );
+      instance.SetNew(&new_TComptonTelescopeData);
+      instance.SetNewArray(&newArray_TComptonTelescopeData);
+      instance.SetDelete(&delete_TComptonTelescopeData);
+      instance.SetDeleteArray(&deleteArray_TComptonTelescopeData);
+      instance.SetDestructor(&destruct_TComptonTelescopeData);
+      instance.SetStreamerFunc(&streamer_TComptonTelescopeData);
+      return &instance;
+   }
+   TGenericClassInfo *GenerateInitInstance(const ::TComptonTelescopeData*)
+   {
+      return GenerateInitInstanceLocal((::TComptonTelescopeData*)0);
+   }
+   // Static variable to force the class initialization
+   static ::ROOT::TGenericClassInfo *_R__UNIQUE_(Init) = GenerateInitInstanceLocal((const ::TComptonTelescopeData*)0x0); R__UseDummy(_R__UNIQUE_(Init));
+} // end of namespace ROOT
+
+//______________________________________________________________________________
+TClass *TComptonTelescopeData::fgIsA = 0;  // static to hold class pointer
+
+//______________________________________________________________________________
+const char *TComptonTelescopeData::Class_Name()
+{
+   return "TComptonTelescopeData";
+}
+
+//______________________________________________________________________________
+const char *TComptonTelescopeData::ImplFileName()
+{
+   return ::ROOT::GenerateInitInstanceLocal((const ::TComptonTelescopeData*)0x0)->GetImplFileName();
+}
+
+//______________________________________________________________________________
+int TComptonTelescopeData::ImplFileLine()
+{
+   return ::ROOT::GenerateInitInstanceLocal((const ::TComptonTelescopeData*)0x0)->GetImplFileLine();
+}
+
+//______________________________________________________________________________
+void TComptonTelescopeData::Dictionary()
+{
+   fgIsA = ::ROOT::GenerateInitInstanceLocal((const ::TComptonTelescopeData*)0x0)->GetClass();
+}
+
+//______________________________________________________________________________
+TClass *TComptonTelescopeData::Class()
+{
+   if (!fgIsA) fgIsA = ::ROOT::GenerateInitInstanceLocal((const ::TComptonTelescopeData*)0x0)->GetClass();
+   return fgIsA;
+}
+
+//______________________________________________________________________________
+void TComptonTelescopeData::Streamer(TBuffer &R__b)
+{
+   // Stream an object of class TComptonTelescopeData.
+
+   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 =  fCT_Tracker_FrontE_TowerNbr;
+         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 =  fCT_Tracker_FrontE_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 =  fCT_Tracker_FrontE_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 =  fCT_Tracker_FrontE_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<UShort_t> &R__stl =  fCT_Tracker_FrontT_TowerNbr;
+         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 =  fCT_Tracker_FrontT_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 =  fCT_Tracker_FrontT_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 =  fCT_Tracker_FrontT_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 =  fCT_Tracker_BackE_TowerNbr;
+         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 =  fCT_Tracker_BackE_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 =  fCT_Tracker_BackE_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 =  fCT_Tracker_BackE_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<UShort_t> &R__stl =  fCT_Tracker_BackT_TowerNbr;
+         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 =  fCT_Tracker_BackT_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 =  fCT_Tracker_BackT_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 =  fCT_Tracker_BackT_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 =  fCT_Calorimeter_E_TowerNbr;
+         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 =  fCT_Calorimeter_E_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 =  fCT_Calorimeter_E_ChannelNbr;
+         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 =  fCT_Calorimeter_E_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<UShort_t> &R__stl =  fCT_Calorimeter_T_TowerNbr;
+         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 =  fCT_Calorimeter_T_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 =  fCT_Calorimeter_T_ChannelNbr;
+         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 =  fCT_Calorimeter_T_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, TComptonTelescopeData::IsA());
+   } else {
+      R__c = R__b.WriteVersion(TComptonTelescopeData::IsA(), kTRUE);
+      TObject::Streamer(R__b);
+      {
+         vector<UShort_t> &R__stl =  fCT_Tracker_FrontE_TowerNbr;
+         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 =  fCT_Tracker_FrontE_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 =  fCT_Tracker_FrontE_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 =  fCT_Tracker_FrontE_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<UShort_t> &R__stl =  fCT_Tracker_FrontT_TowerNbr;
+         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 =  fCT_Tracker_FrontT_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 =  fCT_Tracker_FrontT_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 =  fCT_Tracker_FrontT_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 =  fCT_Tracker_BackE_TowerNbr;
+         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 =  fCT_Tracker_BackE_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 =  fCT_Tracker_BackE_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 =  fCT_Tracker_BackE_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<UShort_t> &R__stl =  fCT_Tracker_BackT_TowerNbr;
+         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 =  fCT_Tracker_BackT_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 =  fCT_Tracker_BackT_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 =  fCT_Tracker_BackT_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 =  fCT_Calorimeter_E_TowerNbr;
+         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 =  fCT_Calorimeter_E_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 =  fCT_Calorimeter_E_ChannelNbr;
+         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 =  fCT_Calorimeter_E_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<UShort_t> &R__stl =  fCT_Calorimeter_T_TowerNbr;
+         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 =  fCT_Calorimeter_T_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 =  fCT_Calorimeter_T_ChannelNbr;
+         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 =  fCT_Calorimeter_T_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 TComptonTelescopeData::ShowMembers(TMemberInspector &R__insp)
+{
+      // Inspect the data members of an object of class TComptonTelescopeData.
+      TClass *R__cl = ::TComptonTelescopeData::IsA();
+      if (R__cl || R__insp.IsA()) { }
+      R__insp.Inspect(R__cl, R__insp.GetParent(), "fCT_Tracker_FrontE_TowerNbr", (void*)&fCT_Tracker_FrontE_TowerNbr);
+      R__insp.InspectMember("vector<UShort_t>", (void*)&fCT_Tracker_FrontE_TowerNbr, "fCT_Tracker_FrontE_TowerNbr.", false);
+      R__insp.Inspect(R__cl, R__insp.GetParent(), "fCT_Tracker_FrontE_DetectorNbr", (void*)&fCT_Tracker_FrontE_DetectorNbr);
+      R__insp.InspectMember("vector<UShort_t>", (void*)&fCT_Tracker_FrontE_DetectorNbr, "fCT_Tracker_FrontE_DetectorNbr.", false);
+      R__insp.Inspect(R__cl, R__insp.GetParent(), "fCT_Tracker_FrontE_StripNbr", (void*)&fCT_Tracker_FrontE_StripNbr);
+      R__insp.InspectMember("vector<UShort_t>", (void*)&fCT_Tracker_FrontE_StripNbr, "fCT_Tracker_FrontE_StripNbr.", false);
+      R__insp.Inspect(R__cl, R__insp.GetParent(), "fCT_Tracker_FrontE_Energy", (void*)&fCT_Tracker_FrontE_Energy);
+      R__insp.InspectMember("vector<Double_t>", (void*)&fCT_Tracker_FrontE_Energy, "fCT_Tracker_FrontE_Energy.", false);
+      R__insp.Inspect(R__cl, R__insp.GetParent(), "fCT_Tracker_FrontT_TowerNbr", (void*)&fCT_Tracker_FrontT_TowerNbr);
+      R__insp.InspectMember("vector<UShort_t>", (void*)&fCT_Tracker_FrontT_TowerNbr, "fCT_Tracker_FrontT_TowerNbr.", false);
+      R__insp.Inspect(R__cl, R__insp.GetParent(), "fCT_Tracker_FrontT_DetectorNbr", (void*)&fCT_Tracker_FrontT_DetectorNbr);
+      R__insp.InspectMember("vector<UShort_t>", (void*)&fCT_Tracker_FrontT_DetectorNbr, "fCT_Tracker_FrontT_DetectorNbr.", false);
+      R__insp.Inspect(R__cl, R__insp.GetParent(), "fCT_Tracker_FrontT_StripNbr", (void*)&fCT_Tracker_FrontT_StripNbr);
+      R__insp.InspectMember("vector<UShort_t>", (void*)&fCT_Tracker_FrontT_StripNbr, "fCT_Tracker_FrontT_StripNbr.", false);
+      R__insp.Inspect(R__cl, R__insp.GetParent(), "fCT_Tracker_FrontT_Time", (void*)&fCT_Tracker_FrontT_Time);
+      R__insp.InspectMember("vector<Double_t>", (void*)&fCT_Tracker_FrontT_Time, "fCT_Tracker_FrontT_Time.", false);
+      R__insp.Inspect(R__cl, R__insp.GetParent(), "fCT_Tracker_BackE_TowerNbr", (void*)&fCT_Tracker_BackE_TowerNbr);
+      R__insp.InspectMember("vector<UShort_t>", (void*)&fCT_Tracker_BackE_TowerNbr, "fCT_Tracker_BackE_TowerNbr.", false);
+      R__insp.Inspect(R__cl, R__insp.GetParent(), "fCT_Tracker_BackE_DetectorNbr", (void*)&fCT_Tracker_BackE_DetectorNbr);
+      R__insp.InspectMember("vector<UShort_t>", (void*)&fCT_Tracker_BackE_DetectorNbr, "fCT_Tracker_BackE_DetectorNbr.", false);
+      R__insp.Inspect(R__cl, R__insp.GetParent(), "fCT_Tracker_BackE_StripNbr", (void*)&fCT_Tracker_BackE_StripNbr);
+      R__insp.InspectMember("vector<UShort_t>", (void*)&fCT_Tracker_BackE_StripNbr, "fCT_Tracker_BackE_StripNbr.", false);
+      R__insp.Inspect(R__cl, R__insp.GetParent(), "fCT_Tracker_BackE_Energy", (void*)&fCT_Tracker_BackE_Energy);
+      R__insp.InspectMember("vector<Double_t>", (void*)&fCT_Tracker_BackE_Energy, "fCT_Tracker_BackE_Energy.", false);
+      R__insp.Inspect(R__cl, R__insp.GetParent(), "fCT_Tracker_BackT_TowerNbr", (void*)&fCT_Tracker_BackT_TowerNbr);
+      R__insp.InspectMember("vector<UShort_t>", (void*)&fCT_Tracker_BackT_TowerNbr, "fCT_Tracker_BackT_TowerNbr.", false);
+      R__insp.Inspect(R__cl, R__insp.GetParent(), "fCT_Tracker_BackT_DetectorNbr", (void*)&fCT_Tracker_BackT_DetectorNbr);
+      R__insp.InspectMember("vector<UShort_t>", (void*)&fCT_Tracker_BackT_DetectorNbr, "fCT_Tracker_BackT_DetectorNbr.", false);
+      R__insp.Inspect(R__cl, R__insp.GetParent(), "fCT_Tracker_BackT_StripNbr", (void*)&fCT_Tracker_BackT_StripNbr);
+      R__insp.InspectMember("vector<UShort_t>", (void*)&fCT_Tracker_BackT_StripNbr, "fCT_Tracker_BackT_StripNbr.", false);
+      R__insp.Inspect(R__cl, R__insp.GetParent(), "fCT_Tracker_BackT_Time", (void*)&fCT_Tracker_BackT_Time);
+      R__insp.InspectMember("vector<Double_t>", (void*)&fCT_Tracker_BackT_Time, "fCT_Tracker_BackT_Time.", false);
+      R__insp.Inspect(R__cl, R__insp.GetParent(), "fCT_Calorimeter_E_TowerNbr", (void*)&fCT_Calorimeter_E_TowerNbr);
+      R__insp.InspectMember("vector<UShort_t>", (void*)&fCT_Calorimeter_E_TowerNbr, "fCT_Calorimeter_E_TowerNbr.", false);
+      R__insp.Inspect(R__cl, R__insp.GetParent(), "fCT_Calorimeter_E_DetectorNbr", (void*)&fCT_Calorimeter_E_DetectorNbr);
+      R__insp.InspectMember("vector<UShort_t>", (void*)&fCT_Calorimeter_E_DetectorNbr, "fCT_Calorimeter_E_DetectorNbr.", false);
+      R__insp.Inspect(R__cl, R__insp.GetParent(), "fCT_Calorimeter_E_ChannelNbr", (void*)&fCT_Calorimeter_E_ChannelNbr);
+      R__insp.InspectMember("vector<UShort_t>", (void*)&fCT_Calorimeter_E_ChannelNbr, "fCT_Calorimeter_E_ChannelNbr.", false);
+      R__insp.Inspect(R__cl, R__insp.GetParent(), "fCT_Calorimeter_E_Energy", (void*)&fCT_Calorimeter_E_Energy);
+      R__insp.InspectMember("vector<Double_t>", (void*)&fCT_Calorimeter_E_Energy, "fCT_Calorimeter_E_Energy.", false);
+      R__insp.Inspect(R__cl, R__insp.GetParent(), "fCT_Calorimeter_T_TowerNbr", (void*)&fCT_Calorimeter_T_TowerNbr);
+      R__insp.InspectMember("vector<UShort_t>", (void*)&fCT_Calorimeter_T_TowerNbr, "fCT_Calorimeter_T_TowerNbr.", false);
+      R__insp.Inspect(R__cl, R__insp.GetParent(), "fCT_Calorimeter_T_DetectorNbr", (void*)&fCT_Calorimeter_T_DetectorNbr);
+      R__insp.InspectMember("vector<UShort_t>", (void*)&fCT_Calorimeter_T_DetectorNbr, "fCT_Calorimeter_T_DetectorNbr.", false);
+      R__insp.Inspect(R__cl, R__insp.GetParent(), "fCT_Calorimeter_T_ChannelNbr", (void*)&fCT_Calorimeter_T_ChannelNbr);
+      R__insp.InspectMember("vector<UShort_t>", (void*)&fCT_Calorimeter_T_ChannelNbr, "fCT_Calorimeter_T_ChannelNbr.", false);
+      R__insp.Inspect(R__cl, R__insp.GetParent(), "fCT_Calorimeter_T_Time", (void*)&fCT_Calorimeter_T_Time);
+      R__insp.InspectMember("vector<Double_t>", (void*)&fCT_Calorimeter_T_Time, "fCT_Calorimeter_T_Time.", false);
+      TObject::ShowMembers(R__insp);
+}
+
+namespace ROOT {
+   // Wrappers around operator new
+   static void *new_TComptonTelescopeData(void *p) {
+      return  p ? new(p) ::TComptonTelescopeData : new ::TComptonTelescopeData;
+   }
+   static void *newArray_TComptonTelescopeData(Long_t nElements, void *p) {
+      return p ? new(p) ::TComptonTelescopeData[nElements] : new ::TComptonTelescopeData[nElements];
+   }
+   // Wrapper around operator delete
+   static void delete_TComptonTelescopeData(void *p) {
+      delete ((::TComptonTelescopeData*)p);
+   }
+   static void deleteArray_TComptonTelescopeData(void *p) {
+      delete [] ((::TComptonTelescopeData*)p);
+   }
+   static void destruct_TComptonTelescopeData(void *p) {
+      typedef ::TComptonTelescopeData current_t;
+      ((current_t*)p)->~current_t();
+   }
+   // Wrapper around a custom streamer member function.
+   static void streamer_TComptonTelescopeData(TBuffer &buf, void *obj) {
+      ((::TComptonTelescopeData*)obj)->::TComptonTelescopeData::Streamer(buf);
+   }
+} // end of namespace ROOT for class ::TComptonTelescopeData
+
+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>
+
+/********************************************************
+* TComptonTelescopeDataDict.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_tagtableTComptonTelescopeDataDict();
+
+extern "C" void G__set_cpp_environmentTComptonTelescopeDataDict() {
+  G__add_compiledheader("TObject.h");
+  G__add_compiledheader("TMemberInspector.h");
+  G__add_compiledheader("TComptonTelescopeData.h");
+  G__cpp_reset_tagtableTComptonTelescopeDataDict();
+}
+#include <new>
+extern "C" int G__cpp_dllrevTComptonTelescopeDataDict() { return(30051515); }
+
+/*********************************************************
+* Member function Interface Method
+*********************************************************/
+
+/* TComptonTelescopeData */
+static int G__TComptonTelescopeDataDict_162_0_1(G__value* result7, G__CONST char* funcname, struct G__param* libp, int hash)
+{
+   TComptonTelescopeData* p = NULL;
+   char* gvp = (char*) G__getgvp();
+   int n = G__getaryconstruct();
+   if (n) {
+     if ((gvp == (char*)G__PVOID) || (gvp == 0)) {
+       p = new TComptonTelescopeData[n];
+     } else {
+       p = new((void*) gvp) TComptonTelescopeData[n];
+     }
+   } else {
+     if ((gvp == (char*)G__PVOID) || (gvp == 0)) {
+       p = new TComptonTelescopeData;
+     } else {
+       p = new((void*) gvp) TComptonTelescopeData;
+     }
+   }
+   result7->obj.i = (long) p;
+   result7->ref = (long) p;
+   G__set_tagnum(result7,G__get_linked_tagnum(&G__TComptonTelescopeDataDictLN_TComptonTelescopeData));
+   return(1 || funcname || hash || result7 || libp) ;
+}
+
+static int G__TComptonTelescopeDataDict_162_0_2(G__value* result7, G__CONST char* funcname, struct G__param* libp, int hash)
+{
+      ((TComptonTelescopeData*) G__getstructoffset())->Clear();
+      G__setnull(result7);
+   return(1 || funcname || hash || result7 || libp) ;
+}
+
+static int G__TComptonTelescopeDataDict_162_0_5(G__value* result7, G__CONST char* funcname, struct G__param* libp, int hash)
+{
+      ((TComptonTelescopeData*) G__getstructoffset())->SetCTTrackerFrontETowerNbr((const UShort_t) G__int(libp->para[0]));
+      G__setnull(result7);
+   return(1 || funcname || hash || result7 || libp) ;
+}
+
+static int G__TComptonTelescopeDataDict_162_0_6(G__value* result7, G__CONST char* funcname, struct G__param* libp, int hash)
+{
+      ((TComptonTelescopeData*) G__getstructoffset())->SetCTTrackerFrontEDetectorNbr((const UShort_t) G__int(libp->para[0]));
+      G__setnull(result7);
+   return(1 || funcname || hash || result7 || libp) ;
+}
+
+static int G__TComptonTelescopeDataDict_162_0_7(G__value* result7, G__CONST char* funcname, struct G__param* libp, int hash)
+{
+      ((TComptonTelescopeData*) G__getstructoffset())->SetCTTrackerFrontEStripNbr((const UShort_t) G__int(libp->para[0]));
+      G__setnull(result7);
+   return(1 || funcname || hash || result7 || libp) ;
+}
+
+static int G__TComptonTelescopeDataDict_162_0_8(G__value* result7, G__CONST char* funcname, struct G__param* libp, int hash)
+{
+      ((TComptonTelescopeData*) G__getstructoffset())->SetCTTrackerFrontEEnergy((const Double_t) G__double(libp->para[0]));
+      G__setnull(result7);
+   return(1 || funcname || hash || result7 || libp) ;
+}
+
+static int G__TComptonTelescopeDataDict_162_0_9(G__value* result7, G__CONST char* funcname, struct G__param* libp, int hash)
+{
+      ((TComptonTelescopeData*) G__getstructoffset())->SetCTTrackerFrontTTowerNbr((const UShort_t) G__int(libp->para[0]));
+      G__setnull(result7);
+   return(1 || funcname || hash || result7 || libp) ;
+}
+
+static int G__TComptonTelescopeDataDict_162_0_10(G__value* result7, G__CONST char* funcname, struct G__param* libp, int hash)
+{
+      ((TComptonTelescopeData*) G__getstructoffset())->SetCTTrackerFrontTDetectorNbr((const UShort_t) G__int(libp->para[0]));
+      G__setnull(result7);
+   return(1 || funcname || hash || result7 || libp) ;
+}
+
+static int G__TComptonTelescopeDataDict_162_0_11(G__value* result7, G__CONST char* funcname, struct G__param* libp, int hash)
+{
+      ((TComptonTelescopeData*) G__getstructoffset())->SetCTTrackerFrontTStripNbr((const UShort_t) G__int(libp->para[0]));
+      G__setnull(result7);
+   return(1 || funcname || hash || result7 || libp) ;
+}
+
+static int G__TComptonTelescopeDataDict_162_0_12(G__value* result7, G__CONST char* funcname, struct G__param* libp, int hash)
+{
+      ((TComptonTelescopeData*) G__getstructoffset())->SetCTTrackerFrontTTime((const Double_t) G__double(libp->para[0]));
+      G__setnull(result7);
+   return(1 || funcname || hash || result7 || libp) ;
+}
+
+static int G__TComptonTelescopeDataDict_162_0_13(G__value* result7, G__CONST char* funcname, struct G__param* libp, int hash)
+{
+      ((TComptonTelescopeData*) G__getstructoffset())->SetCTTrackerBackETowerNbr((const UShort_t) G__int(libp->para[0]));
+      G__setnull(result7);
+   return(1 || funcname || hash || result7 || libp) ;
+}
+
+static int G__TComptonTelescopeDataDict_162_0_14(G__value* result7, G__CONST char* funcname, struct G__param* libp, int hash)
+{
+      ((TComptonTelescopeData*) G__getstructoffset())->SetCTTrackerBackEDetectorNbr((const UShort_t) G__int(libp->para[0]));
+      G__setnull(result7);
+   return(1 || funcname || hash || result7 || libp) ;
+}
+
+static int G__TComptonTelescopeDataDict_162_0_15(G__value* result7, G__CONST char* funcname, struct G__param* libp, int hash)
+{
+      ((TComptonTelescopeData*) G__getstructoffset())->SetCTTrackerBackEStripNbr((const UShort_t) G__int(libp->para[0]));
+      G__setnull(result7);
+   return(1 || funcname || hash || result7 || libp) ;
+}
+
+static int G__TComptonTelescopeDataDict_162_0_16(G__value* result7, G__CONST char* funcname, struct G__param* libp, int hash)
+{
+      ((TComptonTelescopeData*) G__getstructoffset())->SetCTTrackerBackEEnergy((const Double_t) G__double(libp->para[0]));
+      G__setnull(result7);
+   return(1 || funcname || hash || result7 || libp) ;
+}
+
+static int G__TComptonTelescopeDataDict_162_0_17(G__value* result7, G__CONST char* funcname, struct G__param* libp, int hash)
+{
+      ((TComptonTelescopeData*) G__getstructoffset())->SetCTTrackerBackTTowerNbr((const UShort_t) G__int(libp->para[0]));
+      G__setnull(result7);
+   return(1 || funcname || hash || result7 || libp) ;
+}
+
+static int G__TComptonTelescopeDataDict_162_0_18(G__value* result7, G__CONST char* funcname, struct G__param* libp, int hash)
+{
+      ((TComptonTelescopeData*) G__getstructoffset())->SetCTTrackerBackTDetectorNbr((const UShort_t) G__int(libp->para[0]));
+      G__setnull(result7);
+   return(1 || funcname || hash || result7 || libp) ;
+}
+
+static int G__TComptonTelescopeDataDict_162_0_19(G__value* result7, G__CONST char* funcname, struct G__param* libp, int hash)
+{
+      ((TComptonTelescopeData*) G__getstructoffset())->SetCTTrackerBackTStripNbr((const UShort_t) G__int(libp->para[0]));
+      G__setnull(result7);
+   return(1 || funcname || hash || result7 || libp) ;
+}
+
+static int G__TComptonTelescopeDataDict_162_0_20(G__value* result7, G__CONST char* funcname, struct G__param* libp, int hash)
+{
+      ((TComptonTelescopeData*) G__getstructoffset())->SetCTTrackerBackTTime((const Double_t) G__double(libp->para[0]));
+      G__setnull(result7);
+   return(1 || funcname || hash || result7 || libp) ;
+}
+
+static int G__TComptonTelescopeDataDict_162_0_21(G__value* result7, G__CONST char* funcname, struct G__param* libp, int hash)
+{
+      ((TComptonTelescopeData*) G__getstructoffset())->SetCTCalorimeterETowerNbr((const UShort_t) G__int(libp->para[0]));
+      G__setnull(result7);
+   return(1 || funcname || hash || result7 || libp) ;
+}
+
+static int G__TComptonTelescopeDataDict_162_0_22(G__value* result7, G__CONST char* funcname, struct G__param* libp, int hash)
+{
+      ((TComptonTelescopeData*) G__getstructoffset())->SetCTCalorimeterEDetectorNbr((const UShort_t) G__int(libp->para[0]));
+      G__setnull(result7);
+   return(1 || funcname || hash || result7 || libp) ;
+}
+
+static int G__TComptonTelescopeDataDict_162_0_23(G__value* result7, G__CONST char* funcname, struct G__param* libp, int hash)
+{
+      ((TComptonTelescopeData*) G__getstructoffset())->SetCTCalorimeterEChannelNbr((const UShort_t) G__int(libp->para[0]));
+      G__setnull(result7);
+   return(1 || funcname || hash || result7 || libp) ;
+}
+
+static int G__TComptonTelescopeDataDict_162_0_24(G__value* result7, G__CONST char* funcname, struct G__param* libp, int hash)
+{
+      ((TComptonTelescopeData*) G__getstructoffset())->SetCTCalorimeterEEnergy((const Double_t) G__double(libp->para[0]));
+      G__setnull(result7);
+   return(1 || funcname || hash || result7 || libp) ;
+}
+
+static int G__TComptonTelescopeDataDict_162_0_25(G__value* result7, G__CONST char* funcname, struct G__param* libp, int hash)
+{
+      ((TComptonTelescopeData*) G__getstructoffset())->SetCTCalorimeterTTowerNbr((const UShort_t) G__int(libp->para[0]));
+      G__setnull(result7);
+   return(1 || funcname || hash || result7 || libp) ;
+}
+
+static int G__TComptonTelescopeDataDict_162_0_26(G__value* result7, G__CONST char* funcname, struct G__param* libp, int hash)
+{
+      ((TComptonTelescopeData*) G__getstructoffset())->SetCTCalorimeterTDetectorNbr((const UShort_t) G__int(libp->para[0]));
+      G__setnull(result7);
+   return(1 || funcname || hash || result7 || libp) ;
+}
+
+static int G__TComptonTelescopeDataDict_162_0_27(G__value* result7, G__CONST char* funcname, struct G__param* libp, int hash)
+{
+      ((TComptonTelescopeData*) G__getstructoffset())->SetCTCalorimeterTChannelNbr((const UShort_t) G__int(libp->para[0]));
+      G__setnull(result7);
+   return(1 || funcname || hash || result7 || libp) ;
+}
+
+static int G__TComptonTelescopeDataDict_162_0_28(G__value* result7, G__CONST char* funcname, struct G__param* libp, int hash)
+{
+      ((TComptonTelescopeData*) G__getstructoffset())->SetCTCalorimeterTTime((const Double_t) G__double(libp->para[0]));
+      G__setnull(result7);
+   return(1 || funcname || hash || result7 || libp) ;
+}
+
+static int G__TComptonTelescopeDataDict_162_0_29(G__value* result7, G__CONST char* funcname, struct G__param* libp, int hash)
+{
+      G__letint(result7, 114, (long) ((const TComptonTelescopeData*) G__getstructoffset())->GetCTTrackerFrontEMult());
+   return(1 || funcname || hash || result7 || libp) ;
+}
+
+static int G__TComptonTelescopeDataDict_162_0_30(G__value* result7, G__CONST char* funcname, struct G__param* libp, int hash)
+{
+      G__letint(result7, 114, (long) ((const TComptonTelescopeData*) G__getstructoffset())->GetCTTrackerFrontETowerNbr((const Int_t) G__int(libp->para[0])));
+   return(1 || funcname || hash || result7 || libp) ;
+}
+
+static int G__TComptonTelescopeDataDict_162_0_31(G__value* result7, G__CONST char* funcname, struct G__param* libp, int hash)
+{
+      G__letint(result7, 114, (long) ((const TComptonTelescopeData*) G__getstructoffset())->GetCTTrackerFrontEDetectorNbr((const Int_t) G__int(libp->para[0])));
+   return(1 || funcname || hash || result7 || libp) ;
+}
+
+static int G__TComptonTelescopeDataDict_162_0_32(G__value* result7, G__CONST char* funcname, struct G__param* libp, int hash)
+{
+      G__letint(result7, 114, (long) ((const TComptonTelescopeData*) G__getstructoffset())->GetCTTrackerFrontEStripNbr((const Int_t) G__int(libp->para[0])));
+   return(1 || funcname || hash || result7 || libp) ;
+}
+
+static int G__TComptonTelescopeDataDict_162_0_33(G__value* result7, G__CONST char* funcname, struct G__param* libp, int hash)
+{
+      G__letdouble(result7, 100, (double) ((const TComptonTelescopeData*) G__getstructoffset())->GetCTTrackerFrontEEnergy((const Int_t) G__int(libp->para[0])));
+   return(1 || funcname || hash || result7 || libp) ;
+}
+
+static int G__TComptonTelescopeDataDict_162_0_34(G__value* result7, G__CONST char* funcname, struct G__param* libp, int hash)
+{
+      G__letint(result7, 114, (long) ((const TComptonTelescopeData*) G__getstructoffset())->GetCTTrackerFrontTMult());
+   return(1 || funcname || hash || result7 || libp) ;
+}
+
+static int G__TComptonTelescopeDataDict_162_0_35(G__value* result7, G__CONST char* funcname, struct G__param* libp, int hash)
+{
+      G__letint(result7, 114, (long) ((const TComptonTelescopeData*) G__getstructoffset())->GetCTTrackerFrontTTowerNbr((const Int_t) G__int(libp->para[0])));
+   return(1 || funcname || hash || result7 || libp) ;
+}
+
+static int G__TComptonTelescopeDataDict_162_0_36(G__value* result7, G__CONST char* funcname, struct G__param* libp, int hash)
+{
+      G__letint(result7, 114, (long) ((const TComptonTelescopeData*) G__getstructoffset())->GetCTTrackerFrontTDetectorNbr((const Int_t) G__int(libp->para[0])));
+   return(1 || funcname || hash || result7 || libp) ;
+}
+
+static int G__TComptonTelescopeDataDict_162_0_37(G__value* result7, G__CONST char* funcname, struct G__param* libp, int hash)
+{
+      G__letint(result7, 114, (long) ((const TComptonTelescopeData*) G__getstructoffset())->GetCTTrackerFrontTStripNbr((const Int_t) G__int(libp->para[0])));
+   return(1 || funcname || hash || result7 || libp) ;
+}
+
+static int G__TComptonTelescopeDataDict_162_0_38(G__value* result7, G__CONST char* funcname, struct G__param* libp, int hash)
+{
+      G__letdouble(result7, 100, (double) ((const TComptonTelescopeData*) G__getstructoffset())->GetCTTrackerFrontTTime((const Int_t) G__int(libp->para[0])));
+   return(1 || funcname || hash || result7 || libp) ;
+}
+
+static int G__TComptonTelescopeDataDict_162_0_39(G__value* result7, G__CONST char* funcname, struct G__param* libp, int hash)
+{
+      G__letint(result7, 114, (long) ((const TComptonTelescopeData*) G__getstructoffset())->GetCTTrackerBackEMult());
+   return(1 || funcname || hash || result7 || libp) ;
+}
+
+static int G__TComptonTelescopeDataDict_162_0_40(G__value* result7, G__CONST char* funcname, struct G__param* libp, int hash)
+{
+      G__letint(result7, 114, (long) ((const TComptonTelescopeData*) G__getstructoffset())->GetCTTrackerBackETowerNbr((const Int_t) G__int(libp->para[0])));
+   return(1 || funcname || hash || result7 || libp) ;
+}
+
+static int G__TComptonTelescopeDataDict_162_0_41(G__value* result7, G__CONST char* funcname, struct G__param* libp, int hash)
+{
+      G__letint(result7, 114, (long) ((const TComptonTelescopeData*) G__getstructoffset())->GetCTTrackerBackEDetectorNbr((const Int_t) G__int(libp->para[0])));
+   return(1 || funcname || hash || result7 || libp) ;
+}
+
+static int G__TComptonTelescopeDataDict_162_0_42(G__value* result7, G__CONST char* funcname, struct G__param* libp, int hash)
+{
+      G__letint(result7, 114, (long) ((const TComptonTelescopeData*) G__getstructoffset())->GetCTTrackerBackEStripNbr((const Int_t) G__int(libp->para[0])));
+   return(1 || funcname || hash || result7 || libp) ;
+}
+
+static int G__TComptonTelescopeDataDict_162_0_43(G__value* result7, G__CONST char* funcname, struct G__param* libp, int hash)
+{
+      G__letdouble(result7, 100, (double) ((const TComptonTelescopeData*) G__getstructoffset())->GetCTTrackerBackEEnergy((const Int_t) G__int(libp->para[0])));
+   return(1 || funcname || hash || result7 || libp) ;
+}
+
+static int G__TComptonTelescopeDataDict_162_0_44(G__value* result7, G__CONST char* funcname, struct G__param* libp, int hash)
+{
+      G__letint(result7, 114, (long) ((const TComptonTelescopeData*) G__getstructoffset())->GetCTTrackerBackTMult());
+   return(1 || funcname || hash || result7 || libp) ;
+}
+
+static int G__TComptonTelescopeDataDict_162_0_45(G__value* result7, G__CONST char* funcname, struct G__param* libp, int hash)
+{
+      G__letint(result7, 114, (long) ((const TComptonTelescopeData*) G__getstructoffset())->GetCTrackerTBackTTowerNbr((const Int_t) G__int(libp->para[0])));
+   return(1 || funcname || hash || result7 || libp) ;
+}
+
+static int G__TComptonTelescopeDataDict_162_0_46(G__value* result7, G__CONST char* funcname, struct G__param* libp, int hash)
+{
+      G__letint(result7, 114, (long) ((const TComptonTelescopeData*) G__getstructoffset())->GetCTTrackerBackTDetectorNbr((const Int_t) G__int(libp->para[0])));
+   return(1 || funcname || hash || result7 || libp) ;
+}
+
+static int G__TComptonTelescopeDataDict_162_0_47(G__value* result7, G__CONST char* funcname, struct G__param* libp, int hash)
+{
+      G__letint(result7, 114, (long) ((const TComptonTelescopeData*) G__getstructoffset())->GetCTTrackerBackTStripNbr((const Int_t) G__int(libp->para[0])));
+   return(1 || funcname || hash || result7 || libp) ;
+}
+
+static int G__TComptonTelescopeDataDict_162_0_48(G__value* result7, G__CONST char* funcname, struct G__param* libp, int hash)
+{
+      G__letdouble(result7, 100, (double) ((const TComptonTelescopeData*) G__getstructoffset())->GetCTTrackerBackTTime((const Int_t) G__int(libp->para[0])));
+   return(1 || funcname || hash || result7 || libp) ;
+}
+
+static int G__TComptonTelescopeDataDict_162_0_49(G__value* result7, G__CONST char* funcname, struct G__param* libp, int hash)
+{
+      G__letint(result7, 114, (long) ((const TComptonTelescopeData*) G__getstructoffset())->GetCTCalorimeterEMult());
+   return(1 || funcname || hash || result7 || libp) ;
+}
+
+static int G__TComptonTelescopeDataDict_162_0_50(G__value* result7, G__CONST char* funcname, struct G__param* libp, int hash)
+{
+      G__letint(result7, 114, (long) ((const TComptonTelescopeData*) G__getstructoffset())->GetCTCalorimeterETowerNbr((const Int_t) G__int(libp->para[0])));
+   return(1 || funcname || hash || result7 || libp) ;
+}
+
+static int G__TComptonTelescopeDataDict_162_0_51(G__value* result7, G__CONST char* funcname, struct G__param* libp, int hash)
+{
+      G__letint(result7, 114, (long) ((const TComptonTelescopeData*) G__getstructoffset())->GetCTCalorimeterEDetectorNbr((const Int_t) G__int(libp->para[0])));
+   return(1 || funcname || hash || result7 || libp) ;
+}
+
+static int G__TComptonTelescopeDataDict_162_0_52(G__value* result7, G__CONST char* funcname, struct G__param* libp, int hash)
+{
+      G__letint(result7, 114, (long) ((const TComptonTelescopeData*) G__getstructoffset())->GetCTCalorimeterEChannelNbr((const Int_t) G__int(libp->para[0])));
+   return(1 || funcname || hash || result7 || libp) ;
+}
+
+static int G__TComptonTelescopeDataDict_162_0_53(G__value* result7, G__CONST char* funcname, struct G__param* libp, int hash)
+{
+      G__letdouble(result7, 100, (double) ((const TComptonTelescopeData*) G__getstructoffset())->GetCTCalorimeterEEnergy((const Int_t) G__int(libp->para[0])));
+   return(1 || funcname || hash || result7 || libp) ;
+}
+
+static int G__TComptonTelescopeDataDict_162_0_54(G__value* result7, G__CONST char* funcname, struct G__param* libp, int hash)
+{
+      G__letint(result7, 114, (long) ((const TComptonTelescopeData*) G__getstructoffset())->GetCTCalorimeterTMult());
+   return(1 || funcname || hash || result7 || libp) ;
+}
+
+static int G__TComptonTelescopeDataDict_162_0_55(G__value* result7, G__CONST char* funcname, struct G__param* libp, int hash)
+{
+      G__letint(result7, 114, (long) ((const TComptonTelescopeData*) G__getstructoffset())->GetCTCalorimeterTTowerNbr((const Int_t) G__int(libp->para[0])));
+   return(1 || funcname || hash || result7 || libp) ;
+}
+
+static int G__TComptonTelescopeDataDict_162_0_56(G__value* result7, G__CONST char* funcname, struct G__param* libp, int hash)
+{
+      G__letint(result7, 114, (long) ((const TComptonTelescopeData*) G__getstructoffset())->GetCTCalorimeterTDetectorNbr((const Int_t) G__int(libp->para[0])));
+   return(1 || funcname || hash || result7 || libp) ;
+}
+
+static int G__TComptonTelescopeDataDict_162_0_57(G__value* result7, G__CONST char* funcname, struct G__param* libp, int hash)
+{
+      G__letint(result7, 114, (long) ((const TComptonTelescopeData*) G__getstructoffset())->GetCTCalorimeterTChannelNbr((const Int_t) G__int(libp->para[0])));
+   return(1 || funcname || hash || result7 || libp) ;
+}
+
+static int G__TComptonTelescopeDataDict_162_0_58(G__value* result7, G__CONST char* funcname, struct G__param* libp, int hash)
+{
+      G__letdouble(result7, 100, (double) ((const TComptonTelescopeData*) G__getstructoffset())->GetCTCalorimeterTTime((const Int_t) G__int(libp->para[0])));
+   return(1 || funcname || hash || result7 || libp) ;
+}
+
+static int G__TComptonTelescopeDataDict_162_0_59(G__value* result7, G__CONST char* funcname, struct G__param* libp, int hash)
+{
+      G__letint(result7, 85, (long) TComptonTelescopeData::Class());
+   return(1 || funcname || hash || result7 || libp) ;
+}
+
+static int G__TComptonTelescopeDataDict_162_0_60(G__value* result7, G__CONST char* funcname, struct G__param* libp, int hash)
+{
+      G__letint(result7, 67, (long) TComptonTelescopeData::Class_Name());
+   return(1 || funcname || hash || result7 || libp) ;
+}
+
+static int G__TComptonTelescopeDataDict_162_0_61(G__value* result7, G__CONST char* funcname, struct G__param* libp, int hash)
+{
+      G__letint(result7, 115, (long) TComptonTelescopeData::Class_Version());
+   return(1 || funcname || hash || result7 || libp) ;
+}
+
+static int G__TComptonTelescopeDataDict_162_0_62(G__value* result7, G__CONST char* funcname, struct G__param* libp, int hash)
+{
+      TComptonTelescopeData::Dictionary();
+      G__setnull(result7);
+   return(1 || funcname || hash || result7 || libp) ;
+}
+
+static int G__TComptonTelescopeDataDict_162_0_66(G__value* result7, G__CONST char* funcname, struct G__param* libp, int hash)
+{
+      ((TComptonTelescopeData*) G__getstructoffset())->StreamerNVirtual(*(TBuffer*) libp->para[0].ref);
+      G__setnull(result7);
+   return(1 || funcname || hash || result7 || libp) ;
+}
+
+static int G__TComptonTelescopeDataDict_162_0_67(G__value* result7, G__CONST char* funcname, struct G__param* libp, int hash)
+{
+      G__letint(result7, 67, (long) TComptonTelescopeData::DeclFileName());
+   return(1 || funcname || hash || result7 || libp) ;
+}
+
+static int G__TComptonTelescopeDataDict_162_0_68(G__value* result7, G__CONST char* funcname, struct G__param* libp, int hash)
+{
+      G__letint(result7, 105, (long) TComptonTelescopeData::ImplFileLine());
+   return(1 || funcname || hash || result7 || libp) ;
+}
+
+static int G__TComptonTelescopeDataDict_162_0_69(G__value* result7, G__CONST char* funcname, struct G__param* libp, int hash)
+{
+      G__letint(result7, 67, (long) TComptonTelescopeData::ImplFileName());
+   return(1 || funcname || hash || result7 || libp) ;
+}
+
+static int G__TComptonTelescopeDataDict_162_0_70(G__value* result7, G__CONST char* funcname, struct G__param* libp, int hash)
+{
+      G__letint(result7, 105, (long) TComptonTelescopeData::DeclFileLine());
+   return(1 || funcname || hash || result7 || libp) ;
+}
+
+// automatic copy constructor
+static int G__TComptonTelescopeDataDict_162_0_71(G__value* result7, G__CONST char* funcname, struct G__param* libp, int hash)
+
+{
+   TComptonTelescopeData* p;
+   void* tmp = (void*) G__int(libp->para[0]);
+   p = new TComptonTelescopeData(*(TComptonTelescopeData*) tmp);
+   result7->obj.i = (long) p;
+   result7->ref = (long) p;
+   G__set_tagnum(result7,G__get_linked_tagnum(&G__TComptonTelescopeDataDictLN_TComptonTelescopeData));
+   return(1 || funcname || hash || result7 || libp) ;
+}
+
+// automatic destructor
+typedef TComptonTelescopeData G__TTComptonTelescopeData;
+static int G__TComptonTelescopeDataDict_162_0_72(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[] (TComptonTelescopeData*) soff;
+     } else {
+       G__setgvp((long) G__PVOID);
+       for (int i = n - 1; i >= 0; --i) {
+         ((TComptonTelescopeData*) (soff+(sizeof(TComptonTelescopeData)*i)))->~G__TTComptonTelescopeData();
+       }
+       G__setgvp((long)gvp);
+     }
+   } else {
+     if (gvp == (char*)G__PVOID) {
+       delete (TComptonTelescopeData*) soff;
+     } else {
+       G__setgvp((long) G__PVOID);
+       ((TComptonTelescopeData*) (soff))->~G__TTComptonTelescopeData();
+       G__setgvp((long)gvp);
+     }
+   }
+   G__setnull(result7);
+   return(1 || funcname || hash || result7 || libp) ;
+}
+
+// automatic assignment operator
+static int G__TComptonTelescopeDataDict_162_0_73(G__value* result7, G__CONST char* funcname, struct G__param* libp, int hash)
+{
+   TComptonTelescopeData* dest = (TComptonTelescopeData*) G__getstructoffset();
+   *dest = *(TComptonTelescopeData*) libp->para[0].ref;
+   const TComptonTelescopeData& obj = *dest;
+   result7->ref = (long) (&obj);
+   result7->obj.i = (long) (&obj);
+   return(1 || funcname || hash || result7 || libp) ;
+}
+
+
+/* Setting up global function */
+
+/*********************************************************
+* Member function Stub
+*********************************************************/
+
+/* TComptonTelescopeData */
+
+/*********************************************************
+* Global function Stub
+*********************************************************/
+
+/*********************************************************
+* Get size of pointer to member function
+*********************************************************/
+class G__Sizep2memfuncTComptonTelescopeDataDict {
+ public:
+  G__Sizep2memfuncTComptonTelescopeDataDict(): p(&G__Sizep2memfuncTComptonTelescopeDataDict::sizep2memfunc) {}
+    size_t sizep2memfunc() { return(sizeof(p)); }
+  private:
+    size_t (G__Sizep2memfuncTComptonTelescopeDataDict::*p)();
+};
+
+size_t G__get_sizep2memfuncTComptonTelescopeDataDict()
+{
+  G__Sizep2memfuncTComptonTelescopeDataDict 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_inheritanceTComptonTelescopeDataDict() {
+
+   /* Setting up class inheritance */
+   if(0==G__getnumbaseclass(G__get_linked_tagnum(&G__TComptonTelescopeDataDictLN_TComptonTelescopeData))) {
+     TComptonTelescopeData *G__Lderived;
+     G__Lderived=(TComptonTelescopeData*)0x1000;
+     {
+       TObject *G__Lpbase=(TObject*)G__Lderived;
+       G__inheritance_setup(G__get_linked_tagnum(&G__TComptonTelescopeDataDictLN_TComptonTelescopeData),G__get_linked_tagnum(&G__TComptonTelescopeDataDictLN_TObject),(long)G__Lpbase-(long)G__Lderived,1,1);
+     }
+   }
+}
+
+/*********************************************************
+* typedef information setup/
+*********************************************************/
+extern "C" void G__cpp_setup_typetableTComptonTelescopeDataDict() {
+
+   /* 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("Int_t",105,-1,0,-1);
+   G__setnewtype(-1,"Signed integer 4 bytes (int)",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__TComptonTelescopeDataDictLN_vectorlEROOTcLcLTSchemaHelpercOallocatorlEROOTcLcLTSchemaHelpergRsPgR),0,-1);
+   G__setnewtype(-1,NULL,0);
+   G__search_typename2("reverse_iterator<const_iterator>",117,G__get_linked_tagnum(&G__TComptonTelescopeDataDictLN_reverse_iteratorlEvectorlEROOTcLcLTSchemaHelpercOallocatorlEROOTcLcLTSchemaHelpergRsPgRcLcLiteratorgR),0,G__get_linked_tagnum(&G__TComptonTelescopeDataDictLN_vectorlEROOTcLcLTSchemaHelpercOallocatorlEROOTcLcLTSchemaHelpergRsPgR));
+   G__setnewtype(-1,NULL,0);
+   G__search_typename2("reverse_iterator<iterator>",117,G__get_linked_tagnum(&G__TComptonTelescopeDataDictLN_reverse_iteratorlEvectorlEROOTcLcLTSchemaHelpercOallocatorlEROOTcLcLTSchemaHelpergRsPgRcLcLiteratorgR),0,G__get_linked_tagnum(&G__TComptonTelescopeDataDictLN_vectorlEROOTcLcLTSchemaHelpercOallocatorlEROOTcLcLTSchemaHelpergRsPgR));
+   G__setnewtype(-1,NULL,0);
+   G__search_typename2("vector<TVirtualArray*>",117,G__get_linked_tagnum(&G__TComptonTelescopeDataDictLN_vectorlETVirtualArraymUcOallocatorlETVirtualArraymUgRsPgR),0,-1);
+   G__setnewtype(-1,NULL,0);
+   G__search_typename2("reverse_iterator<const_iterator>",117,G__get_linked_tagnum(&G__TComptonTelescopeDataDictLN_reverse_iteratorlEvectorlETVirtualArraymUcOallocatorlETVirtualArraymUgRsPgRcLcLiteratorgR),0,G__get_linked_tagnum(&G__TComptonTelescopeDataDictLN_vectorlETVirtualArraymUcOallocatorlETVirtualArraymUgRsPgR));
+   G__setnewtype(-1,NULL,0);
+   G__search_typename2("reverse_iterator<iterator>",117,G__get_linked_tagnum(&G__TComptonTelescopeDataDictLN_reverse_iteratorlEvectorlETVirtualArraymUcOallocatorlETVirtualArraymUgRsPgRcLcLiteratorgR),0,G__get_linked_tagnum(&G__TComptonTelescopeDataDictLN_vectorlETVirtualArraymUcOallocatorlETVirtualArraymUgRsPgR));
+   G__setnewtype(-1,NULL,0);
+   G__search_typename2("vector<UShort_t>",117,G__get_linked_tagnum(&G__TComptonTelescopeDataDictLN_vectorlEunsignedsPshortcOallocatorlEunsignedsPshortgRsPgR),0,-1);
+   G__setnewtype(-1,NULL,0);
+   G__search_typename2("vector<Double_t>",117,G__get_linked_tagnum(&G__TComptonTelescopeDataDictLN_vectorlEdoublecOallocatorlEdoublegRsPgR),0,-1);
+   G__setnewtype(-1,NULL,0);
+}
+
+/*********************************************************
+* Data Member information setup/
+*********************************************************/
+
+   /* Setting up class,struct,union tag member variable */
+
+   /* TComptonTelescopeData */
+static void G__setup_memvarTComptonTelescopeData(void) {
+   G__tag_memvar_setup(G__get_linked_tagnum(&G__TComptonTelescopeDataDictLN_TComptonTelescopeData));
+   { TComptonTelescopeData *p; p=(TComptonTelescopeData*)0x1000; if (p) { }
+   G__memvar_setup((void*)0,117,0,0,G__get_linked_tagnum(&G__TComptonTelescopeDataDictLN_vectorlEunsignedsPshortcOallocatorlEunsignedsPshortgRsPgR),G__defined_typename("vector<UShort_t>"),-1,4,"fCT_Tracker_FrontE_TowerNbr=",0,(char*)NULL);
+   G__memvar_setup((void*)0,117,0,0,G__get_linked_tagnum(&G__TComptonTelescopeDataDictLN_vectorlEunsignedsPshortcOallocatorlEunsignedsPshortgRsPgR),G__defined_typename("vector<UShort_t>"),-1,4,"fCT_Tracker_FrontE_DetectorNbr=",0,(char*)NULL);
+   G__memvar_setup((void*)0,117,0,0,G__get_linked_tagnum(&G__TComptonTelescopeDataDictLN_vectorlEunsignedsPshortcOallocatorlEunsignedsPshortgRsPgR),G__defined_typename("vector<UShort_t>"),-1,4,"fCT_Tracker_FrontE_StripNbr=",0,(char*)NULL);
+   G__memvar_setup((void*)0,117,0,0,G__get_linked_tagnum(&G__TComptonTelescopeDataDictLN_vectorlEdoublecOallocatorlEdoublegRsPgR),G__defined_typename("vector<Double_t>"),-1,4,"fCT_Tracker_FrontE_Energy=",0,(char*)NULL);
+   G__memvar_setup((void*)0,117,0,0,G__get_linked_tagnum(&G__TComptonTelescopeDataDictLN_vectorlEunsignedsPshortcOallocatorlEunsignedsPshortgRsPgR),G__defined_typename("vector<UShort_t>"),-1,4,"fCT_Tracker_FrontT_TowerNbr=",0,(char*)NULL);
+   G__memvar_setup((void*)0,117,0,0,G__get_linked_tagnum(&G__TComptonTelescopeDataDictLN_vectorlEunsignedsPshortcOallocatorlEunsignedsPshortgRsPgR),G__defined_typename("vector<UShort_t>"),-1,4,"fCT_Tracker_FrontT_DetectorNbr=",0,(char*)NULL);
+   G__memvar_setup((void*)0,117,0,0,G__get_linked_tagnum(&G__TComptonTelescopeDataDictLN_vectorlEunsignedsPshortcOallocatorlEunsignedsPshortgRsPgR),G__defined_typename("vector<UShort_t>"),-1,4,"fCT_Tracker_FrontT_StripNbr=",0,(char*)NULL);
+   G__memvar_setup((void*)0,117,0,0,G__get_linked_tagnum(&G__TComptonTelescopeDataDictLN_vectorlEdoublecOallocatorlEdoublegRsPgR),G__defined_typename("vector<Double_t>"),-1,4,"fCT_Tracker_FrontT_Time=",0,(char*)NULL);
+   G__memvar_setup((void*)0,117,0,0,G__get_linked_tagnum(&G__TComptonTelescopeDataDictLN_vectorlEunsignedsPshortcOallocatorlEunsignedsPshortgRsPgR),G__defined_typename("vector<UShort_t>"),-1,4,"fCT_Tracker_BackE_TowerNbr=",0,(char*)NULL);
+   G__memvar_setup((void*)0,117,0,0,G__get_linked_tagnum(&G__TComptonTelescopeDataDictLN_vectorlEunsignedsPshortcOallocatorlEunsignedsPshortgRsPgR),G__defined_typename("vector<UShort_t>"),-1,4,"fCT_Tracker_BackE_DetectorNbr=",0,(char*)NULL);
+   G__memvar_setup((void*)0,117,0,0,G__get_linked_tagnum(&G__TComptonTelescopeDataDictLN_vectorlEunsignedsPshortcOallocatorlEunsignedsPshortgRsPgR),G__defined_typename("vector<UShort_t>"),-1,4,"fCT_Tracker_BackE_StripNbr=",0,(char*)NULL);
+   G__memvar_setup((void*)0,117,0,0,G__get_linked_tagnum(&G__TComptonTelescopeDataDictLN_vectorlEdoublecOallocatorlEdoublegRsPgR),G__defined_typename("vector<Double_t>"),-1,4,"fCT_Tracker_BackE_Energy=",0,(char*)NULL);
+   G__memvar_setup((void*)0,117,0,0,G__get_linked_tagnum(&G__TComptonTelescopeDataDictLN_vectorlEunsignedsPshortcOallocatorlEunsignedsPshortgRsPgR),G__defined_typename("vector<UShort_t>"),-1,4,"fCT_Tracker_BackT_TowerNbr=",0,(char*)NULL);
+   G__memvar_setup((void*)0,117,0,0,G__get_linked_tagnum(&G__TComptonTelescopeDataDictLN_vectorlEunsignedsPshortcOallocatorlEunsignedsPshortgRsPgR),G__defined_typename("vector<UShort_t>"),-1,4,"fCT_Tracker_BackT_DetectorNbr=",0,(char*)NULL);
+   G__memvar_setup((void*)0,117,0,0,G__get_linked_tagnum(&G__TComptonTelescopeDataDictLN_vectorlEunsignedsPshortcOallocatorlEunsignedsPshortgRsPgR),G__defined_typename("vector<UShort_t>"),-1,4,"fCT_Tracker_BackT_StripNbr=",0,(char*)NULL);
+   G__memvar_setup((void*)0,117,0,0,G__get_linked_tagnum(&G__TComptonTelescopeDataDictLN_vectorlEdoublecOallocatorlEdoublegRsPgR),G__defined_typename("vector<Double_t>"),-1,4,"fCT_Tracker_BackT_Time=",0,(char*)NULL);
+   G__memvar_setup((void*)0,117,0,0,G__get_linked_tagnum(&G__TComptonTelescopeDataDictLN_vectorlEunsignedsPshortcOallocatorlEunsignedsPshortgRsPgR),G__defined_typename("vector<UShort_t>"),-1,4,"fCT_Calorimeter_E_TowerNbr=",0,(char*)NULL);
+   G__memvar_setup((void*)0,117,0,0,G__get_linked_tagnum(&G__TComptonTelescopeDataDictLN_vectorlEunsignedsPshortcOallocatorlEunsignedsPshortgRsPgR),G__defined_typename("vector<UShort_t>"),-1,4,"fCT_Calorimeter_E_DetectorNbr=",0,(char*)NULL);
+   G__memvar_setup((void*)0,117,0,0,G__get_linked_tagnum(&G__TComptonTelescopeDataDictLN_vectorlEunsignedsPshortcOallocatorlEunsignedsPshortgRsPgR),G__defined_typename("vector<UShort_t>"),-1,4,"fCT_Calorimeter_E_ChannelNbr=",0,(char*)NULL);
+   G__memvar_setup((void*)0,117,0,0,G__get_linked_tagnum(&G__TComptonTelescopeDataDictLN_vectorlEdoublecOallocatorlEdoublegRsPgR),G__defined_typename("vector<Double_t>"),-1,4,"fCT_Calorimeter_E_Energy=",0,(char*)NULL);
+   G__memvar_setup((void*)0,117,0,0,G__get_linked_tagnum(&G__TComptonTelescopeDataDictLN_vectorlEunsignedsPshortcOallocatorlEunsignedsPshortgRsPgR),G__defined_typename("vector<UShort_t>"),-1,4,"fCT_Calorimeter_T_TowerNbr=",0,(char*)NULL);
+   G__memvar_setup((void*)0,117,0,0,G__get_linked_tagnum(&G__TComptonTelescopeDataDictLN_vectorlEunsignedsPshortcOallocatorlEunsignedsPshortgRsPgR),G__defined_typename("vector<UShort_t>"),-1,4,"fCT_Calorimeter_T_DetectorNbr=",0,(char*)NULL);
+   G__memvar_setup((void*)0,117,0,0,G__get_linked_tagnum(&G__TComptonTelescopeDataDictLN_vectorlEunsignedsPshortcOallocatorlEunsignedsPshortgRsPgR),G__defined_typename("vector<UShort_t>"),-1,4,"fCT_Calorimeter_T_ChannelNbr=",0,(char*)NULL);
+   G__memvar_setup((void*)0,117,0,0,G__get_linked_tagnum(&G__TComptonTelescopeDataDictLN_vectorlEdoublecOallocatorlEdoublegRsPgR),G__defined_typename("vector<Double_t>"),-1,4,"fCT_Calorimeter_T_Time=",0,(char*)NULL);
+   G__memvar_setup((void*)0,85,0,0,G__get_linked_tagnum(&G__TComptonTelescopeDataDictLN_TClass),-1,-2,4,"fgIsA=",0,(char*)NULL);
+   }
+   G__tag_memvar_reset();
+}
+
+extern "C" void G__cpp_setup_memvarTComptonTelescopeDataDict() {
+}
+/***********************************************************
+************************************************************
+************************************************************
+************************************************************
+************************************************************
+************************************************************
+************************************************************
+***********************************************************/
+
+/*********************************************************
+* Member function information setup for each class
+*********************************************************/
+static void G__setup_memfuncTComptonTelescopeData(void) {
+   /* TComptonTelescopeData */
+   G__tag_memfunc_setup(G__get_linked_tagnum(&G__TComptonTelescopeDataDictLN_TComptonTelescopeData));
+   G__memfunc_setup("TComptonTelescopeData",2130,G__TComptonTelescopeDataDict_162_0_1, 105, G__get_linked_tagnum(&G__TComptonTelescopeDataDictLN_TComptonTelescopeData), -1, 0, 0, 1, 1, 0, "", (char*)NULL, (void*) NULL, 0);
+   G__memfunc_setup("Clear",487,G__TComptonTelescopeDataDict_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("SetCTTrackerFrontETowerNbr",2576,G__TComptonTelescopeDataDict_162_0_5, 121, -1, -1, 0, 1, 1, 1, 0, "r - 'UShort_t' 10 - TowNbr", (char*)NULL, (void*) NULL, 0);
+   G__memfunc_setup("SetCTTrackerFrontEDetectorNbr",2873,G__TComptonTelescopeDataDict_162_0_6, 121, -1, -1, 0, 1, 1, 1, 0, "r - 'UShort_t' 10 - DetNbr", (char*)NULL, (void*) NULL, 0);
+   G__memfunc_setup("SetCTTrackerFrontEStripNbr",2577,G__TComptonTelescopeDataDict_162_0_7, 121, -1, -1, 0, 1, 1, 1, 0, "r - 'UShort_t' 10 - StripNbr", (char*)NULL, (void*) NULL, 0);
+   G__memfunc_setup("SetCTTrackerFrontEEnergy",2375,G__TComptonTelescopeDataDict_162_0_8, 121, -1, -1, 0, 1, 1, 1, 0, "d - 'Double_t' 10 - Energy", (char*)NULL, (void*) NULL, 0);
+   G__memfunc_setup("SetCTTrackerFrontTTowerNbr",2591,G__TComptonTelescopeDataDict_162_0_9, 121, -1, -1, 0, 1, 1, 1, 0, "r - 'UShort_t' 10 - TowNbr", (char*)NULL, (void*) NULL, 0);
+   G__memfunc_setup("SetCTTrackerFrontTDetectorNbr",2888,G__TComptonTelescopeDataDict_162_0_10, 121, -1, -1, 0, 1, 1, 1, 0, "r - 'UShort_t' 10 - DetNbr", (char*)NULL, (void*) NULL, 0);
+   G__memfunc_setup("SetCTTrackerFrontTStripNbr",2592,G__TComptonTelescopeDataDict_162_0_11, 121, -1, -1, 0, 1, 1, 1, 0, "r - 'UShort_t' 10 - StripNbr", (char*)NULL, (void*) NULL, 0);
+   G__memfunc_setup("SetCTTrackerFrontTTime",2171,G__TComptonTelescopeDataDict_162_0_12, 121, -1, -1, 0, 1, 1, 1, 0, "d - 'Double_t' 10 - Time", (char*)NULL, (void*) NULL, 0);
+   G__memfunc_setup("SetCTTrackerBackETowerNbr",2424,G__TComptonTelescopeDataDict_162_0_13, 121, -1, -1, 0, 1, 1, 1, 0, "r - 'UShort_t' 10 - TowNbr", (char*)NULL, (void*) NULL, 0);
+   G__memfunc_setup("SetCTTrackerBackEDetectorNbr",2721,G__TComptonTelescopeDataDict_162_0_14, 121, -1, -1, 0, 1, 1, 1, 0, "r - 'UShort_t' 10 - DetNbr", (char*)NULL, (void*) NULL, 0);
+   G__memfunc_setup("SetCTTrackerBackEStripNbr",2425,G__TComptonTelescopeDataDict_162_0_15, 121, -1, -1, 0, 1, 1, 1, 0, "r - 'UShort_t' 10 - StripNbr", (char*)NULL, (void*) NULL, 0);
+   G__memfunc_setup("SetCTTrackerBackEEnergy",2223,G__TComptonTelescopeDataDict_162_0_16, 121, -1, -1, 0, 1, 1, 1, 0, "d - 'Double_t' 10 - Energy", (char*)NULL, (void*) NULL, 0);
+   G__memfunc_setup("SetCTTrackerBackTTowerNbr",2439,G__TComptonTelescopeDataDict_162_0_17, 121, -1, -1, 0, 1, 1, 1, 0, "r - 'UShort_t' 10 - TowNbr", (char*)NULL, (void*) NULL, 0);
+   G__memfunc_setup("SetCTTrackerBackTDetectorNbr",2736,G__TComptonTelescopeDataDict_162_0_18, 121, -1, -1, 0, 1, 1, 1, 0, "r - 'UShort_t' 10 - DetNbr", (char*)NULL, (void*) NULL, 0);
+   G__memfunc_setup("SetCTTrackerBackTStripNbr",2440,G__TComptonTelescopeDataDict_162_0_19, 121, -1, -1, 0, 1, 1, 1, 0, "r - 'UShort_t' 10 - StripNbr", (char*)NULL, (void*) NULL, 0);
+   G__memfunc_setup("SetCTTrackerBackTTime",2019,G__TComptonTelescopeDataDict_162_0_20, 121, -1, -1, 0, 1, 1, 1, 0, "d - 'Double_t' 10 - Time", (char*)NULL, (void*) NULL, 0);
+   G__memfunc_setup("SetCTCalorimeterETowerNbr",2482,G__TComptonTelescopeDataDict_162_0_21, 121, -1, -1, 0, 1, 1, 1, 0, "r - 'UShort_t' 10 - TowNbr", (char*)NULL, (void*) NULL, 0);
+   G__memfunc_setup("SetCTCalorimeterEDetectorNbr",2779,G__TComptonTelescopeDataDict_162_0_22, 121, -1, -1, 0, 1, 1, 1, 0, "r - 'UShort_t' 10 - DetNbr", (char*)NULL, (void*) NULL, 0);
+   G__memfunc_setup("SetCTCalorimeterEChannelNbr",2650,G__TComptonTelescopeDataDict_162_0_23, 121, -1, -1, 0, 1, 1, 1, 0, "r - 'UShort_t' 10 - ChannelNbr", (char*)NULL, (void*) NULL, 0);
+   G__memfunc_setup("SetCTCalorimeterEEnergy",2281,G__TComptonTelescopeDataDict_162_0_24, 121, -1, -1, 0, 1, 1, 1, 0, "d - 'Double_t' 10 - Energy", (char*)NULL, (void*) NULL, 0);
+   G__memfunc_setup("SetCTCalorimeterTTowerNbr",2497,G__TComptonTelescopeDataDict_162_0_25, 121, -1, -1, 0, 1, 1, 1, 0, "r - 'UShort_t' 10 - TowNbr", (char*)NULL, (void*) NULL, 0);
+   G__memfunc_setup("SetCTCalorimeterTDetectorNbr",2794,G__TComptonTelescopeDataDict_162_0_26, 121, -1, -1, 0, 1, 1, 1, 0, "r - 'UShort_t' 10 - DetNbr", (char*)NULL, (void*) NULL, 0);
+   G__memfunc_setup("SetCTCalorimeterTChannelNbr",2665,G__TComptonTelescopeDataDict_162_0_27, 121, -1, -1, 0, 1, 1, 1, 0, "r - 'UShort_t' 10 - ChannelNbr", (char*)NULL, (void*) NULL, 0);
+   G__memfunc_setup("SetCTCalorimeterTTime",2077,G__TComptonTelescopeDataDict_162_0_28, 121, -1, -1, 0, 1, 1, 1, 0, "d - 'Double_t' 10 - Time", (char*)NULL, (void*) NULL, 0);
+   G__memfunc_setup("GetCTTrackerFrontEMult",2163,G__TComptonTelescopeDataDict_162_0_29, 114, -1, G__defined_typename("UShort_t"), 0, 0, 1, 1, 8, "", (char*)NULL, (void*) NULL, 0);
+   G__memfunc_setup("GetCTTrackerFrontETowerNbr",2564,G__TComptonTelescopeDataDict_162_0_30, 114, -1, G__defined_typename("UShort_t"), 0, 1, 1, 1, 8, "i - 'Int_t' 10 - i", (char*)NULL, (void*) NULL, 0);
+   G__memfunc_setup("GetCTTrackerFrontEDetectorNbr",2861,G__TComptonTelescopeDataDict_162_0_31, 114, -1, G__defined_typename("UShort_t"), 0, 1, 1, 1, 8, "i - 'Int_t' 10 - i", (char*)NULL, (void*) NULL, 0);
+   G__memfunc_setup("GetCTTrackerFrontEStripNbr",2565,G__TComptonTelescopeDataDict_162_0_32, 114, -1, G__defined_typename("UShort_t"), 0, 1, 1, 1, 8, "i - 'Int_t' 10 - i", (char*)NULL, (void*) NULL, 0);
+   G__memfunc_setup("GetCTTrackerFrontEEnergy",2363,G__TComptonTelescopeDataDict_162_0_33, 100, -1, G__defined_typename("Double_t"), 0, 1, 1, 1, 8, "i - 'Int_t' 10 - i", (char*)NULL, (void*) NULL, 0);
+   G__memfunc_setup("GetCTTrackerFrontTMult",2178,G__TComptonTelescopeDataDict_162_0_34, 114, -1, G__defined_typename("UShort_t"), 0, 0, 1, 1, 8, "", (char*)NULL, (void*) NULL, 0);
+   G__memfunc_setup("GetCTTrackerFrontTTowerNbr",2579,G__TComptonTelescopeDataDict_162_0_35, 114, -1, G__defined_typename("UShort_t"), 0, 1, 1, 1, 8, "i - 'Int_t' 10 - i", (char*)NULL, (void*) NULL, 0);
+   G__memfunc_setup("GetCTTrackerFrontTDetectorNbr",2876,G__TComptonTelescopeDataDict_162_0_36, 114, -1, G__defined_typename("UShort_t"), 0, 1, 1, 1, 8, "i - 'Int_t' 10 - i", (char*)NULL, (void*) NULL, 0);
+   G__memfunc_setup("GetCTTrackerFrontTStripNbr",2580,G__TComptonTelescopeDataDict_162_0_37, 114, -1, G__defined_typename("UShort_t"), 0, 1, 1, 1, 8, "i - 'Int_t' 10 - i", (char*)NULL, (void*) NULL, 0);
+   G__memfunc_setup("GetCTTrackerFrontTTime",2159,G__TComptonTelescopeDataDict_162_0_38, 100, -1, G__defined_typename("Double_t"), 0, 1, 1, 1, 8, "i - 'Int_t' 10 - i", (char*)NULL, (void*) NULL, 0);
+   G__memfunc_setup("GetCTTrackerBackEMult",2011,G__TComptonTelescopeDataDict_162_0_39, 114, -1, G__defined_typename("UShort_t"), 0, 0, 1, 1, 8, "", (char*)NULL, (void*) NULL, 0);
+   G__memfunc_setup("GetCTTrackerBackETowerNbr",2412,G__TComptonTelescopeDataDict_162_0_40, 114, -1, G__defined_typename("UShort_t"), 0, 1, 1, 1, 8, "i - 'Int_t' 10 - i", (char*)NULL, (void*) NULL, 0);
+   G__memfunc_setup("GetCTTrackerBackEDetectorNbr",2709,G__TComptonTelescopeDataDict_162_0_41, 114, -1, G__defined_typename("UShort_t"), 0, 1, 1, 1, 8, "i - 'Int_t' 10 - i", (char*)NULL, (void*) NULL, 0);
+   G__memfunc_setup("GetCTTrackerBackEStripNbr",2413,G__TComptonTelescopeDataDict_162_0_42, 114, -1, G__defined_typename("UShort_t"), 0, 1, 1, 1, 8, "i - 'Int_t' 10 - i", (char*)NULL, (void*) NULL, 0);
+   G__memfunc_setup("GetCTTrackerBackEEnergy",2211,G__TComptonTelescopeDataDict_162_0_43, 100, -1, G__defined_typename("Double_t"), 0, 1, 1, 1, 8, "i - 'Int_t' 10 - i", (char*)NULL, (void*) NULL, 0);
+   G__memfunc_setup("GetCTTrackerBackTMult",2026,G__TComptonTelescopeDataDict_162_0_44, 114, -1, G__defined_typename("UShort_t"), 0, 0, 1, 1, 8, "", (char*)NULL, (void*) NULL, 0);
+   G__memfunc_setup("GetCTrackerTBackTTowerNbr",2427,G__TComptonTelescopeDataDict_162_0_45, 114, -1, G__defined_typename("UShort_t"), 0, 1, 1, 1, 8, "i - 'Int_t' 10 - i", (char*)NULL, (void*) NULL, 0);
+   G__memfunc_setup("GetCTTrackerBackTDetectorNbr",2724,G__TComptonTelescopeDataDict_162_0_46, 114, -1, G__defined_typename("UShort_t"), 0, 1, 1, 1, 8, "i - 'Int_t' 10 - i", (char*)NULL, (void*) NULL, 0);
+   G__memfunc_setup("GetCTTrackerBackTStripNbr",2428,G__TComptonTelescopeDataDict_162_0_47, 114, -1, G__defined_typename("UShort_t"), 0, 1, 1, 1, 8, "i - 'Int_t' 10 - i", (char*)NULL, (void*) NULL, 0);
+   G__memfunc_setup("GetCTTrackerBackTTime",2007,G__TComptonTelescopeDataDict_162_0_48, 100, -1, G__defined_typename("Double_t"), 0, 1, 1, 1, 8, "i - 'Int_t' 10 - i", (char*)NULL, (void*) NULL, 0);
+   G__memfunc_setup("GetCTCalorimeterEMult",2069,G__TComptonTelescopeDataDict_162_0_49, 114, -1, G__defined_typename("UShort_t"), 0, 0, 1, 1, 8, "", (char*)NULL, (void*) NULL, 0);
+   G__memfunc_setup("GetCTCalorimeterETowerNbr",2470,G__TComptonTelescopeDataDict_162_0_50, 114, -1, G__defined_typename("UShort_t"), 0, 1, 1, 1, 8, "i - 'Int_t' 10 - i", (char*)NULL, (void*) NULL, 0);
+   G__memfunc_setup("GetCTCalorimeterEDetectorNbr",2767,G__TComptonTelescopeDataDict_162_0_51, 114, -1, G__defined_typename("UShort_t"), 0, 1, 1, 1, 8, "i - 'Int_t' 10 - i", (char*)NULL, (void*) NULL, 0);
+   G__memfunc_setup("GetCTCalorimeterEChannelNbr",2638,G__TComptonTelescopeDataDict_162_0_52, 114, -1, G__defined_typename("UShort_t"), 0, 1, 1, 1, 8, "i - 'Int_t' 10 - i", (char*)NULL, (void*) NULL, 0);
+   G__memfunc_setup("GetCTCalorimeterEEnergy",2269,G__TComptonTelescopeDataDict_162_0_53, 100, -1, G__defined_typename("Double_t"), 0, 1, 1, 1, 8, "i - 'Int_t' 10 - i", (char*)NULL, (void*) NULL, 0);
+   G__memfunc_setup("GetCTCalorimeterTMult",2084,G__TComptonTelescopeDataDict_162_0_54, 114, -1, G__defined_typename("UShort_t"), 0, 0, 1, 1, 8, "", (char*)NULL, (void*) NULL, 0);
+   G__memfunc_setup("GetCTCalorimeterTTowerNbr",2485,G__TComptonTelescopeDataDict_162_0_55, 114, -1, G__defined_typename("UShort_t"), 0, 1, 1, 1, 8, "i - 'Int_t' 10 - i", (char*)NULL, (void*) NULL, 0);
+   G__memfunc_setup("GetCTCalorimeterTDetectorNbr",2782,G__TComptonTelescopeDataDict_162_0_56, 114, -1, G__defined_typename("UShort_t"), 0, 1, 1, 1, 8, "i - 'Int_t' 10 - i", (char*)NULL, (void*) NULL, 0);
+   G__memfunc_setup("GetCTCalorimeterTChannelNbr",2653,G__TComptonTelescopeDataDict_162_0_57, 114, -1, G__defined_typename("UShort_t"), 0, 1, 1, 1, 8, "i - 'Int_t' 10 - i", (char*)NULL, (void*) NULL, 0);
+   G__memfunc_setup("GetCTCalorimeterTTime",2065,G__TComptonTelescopeDataDict_162_0_58, 100, -1, G__defined_typename("Double_t"), 0, 1, 1, 1, 8, "i - 'Int_t' 10 - i", (char*)NULL, (void*) NULL, 0);
+   G__memfunc_setup("Class",502,G__TComptonTelescopeDataDict_162_0_59, 85, G__get_linked_tagnum(&G__TComptonTelescopeDataDictLN_TClass), -1, 0, 0, 3, 1, 0, "", (char*)NULL, (void*) G__func2void( (TClass* (*)())(&TComptonTelescopeData::Class) ), 0);
+   G__memfunc_setup("Class_Name",982,G__TComptonTelescopeDataDict_162_0_60, 67, -1, -1, 0, 0, 3, 1, 1, "", (char*)NULL, (void*) G__func2void( (const char* (*)())(&TComptonTelescopeData::Class_Name) ), 0);
+   G__memfunc_setup("Class_Version",1339,G__TComptonTelescopeDataDict_162_0_61, 115, -1, G__defined_typename("Version_t"), 0, 0, 3, 1, 0, "", (char*)NULL, (void*) G__func2void( (Version_t (*)())(&TComptonTelescopeData::Class_Version) ), 0);
+   G__memfunc_setup("Dictionary",1046,G__TComptonTelescopeDataDict_162_0_62, 121, -1, -1, 0, 0, 3, 1, 0, "", (char*)NULL, (void*) G__func2void( (void (*)())(&TComptonTelescopeData::Dictionary) ), 0);
+   G__memfunc_setup("IsA",253,(G__InterfaceMethod) NULL,85, G__get_linked_tagnum(&G__TComptonTelescopeDataDictLN_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__TComptonTelescopeDataDict_162_0_66, 121, -1, -1, 0, 1, 1, 1, 0, "u 'TBuffer' - 1 - b", (char*)NULL, (void*) NULL, 0);
+   G__memfunc_setup("DeclFileName",1145,G__TComptonTelescopeDataDict_162_0_67, 67, -1, -1, 0, 0, 3, 1, 1, "", (char*)NULL, (void*) G__func2void( (const char* (*)())(&TComptonTelescopeData::DeclFileName) ), 0);
+   G__memfunc_setup("ImplFileLine",1178,G__TComptonTelescopeDataDict_162_0_68, 105, -1, -1, 0, 0, 3, 1, 0, "", (char*)NULL, (void*) G__func2void( (int (*)())(&TComptonTelescopeData::ImplFileLine) ), 0);
+   G__memfunc_setup("ImplFileName",1171,G__TComptonTelescopeDataDict_162_0_69, 67, -1, -1, 0, 0, 3, 1, 1, "", (char*)NULL, (void*) G__func2void( (const char* (*)())(&TComptonTelescopeData::ImplFileName) ), 0);
+   G__memfunc_setup("DeclFileLine",1152,G__TComptonTelescopeDataDict_162_0_70, 105, -1, -1, 0, 0, 3, 1, 0, "", (char*)NULL, (void*) G__func2void( (int (*)())(&TComptonTelescopeData::DeclFileLine) ), 0);
+   // automatic copy constructor
+   G__memfunc_setup("TComptonTelescopeData", 2130, G__TComptonTelescopeDataDict_162_0_71, (int) ('i'), 
+G__get_linked_tagnum(&G__TComptonTelescopeDataDictLN_TComptonTelescopeData), -1, 0, 1, 1, 1, 0, "u 'TComptonTelescopeData' - 11 - -", (char*) NULL, (void*) NULL, 0);
+   // automatic destructor
+   G__memfunc_setup("~TComptonTelescopeData", 2256, G__TComptonTelescopeDataDict_162_0_72, (int) ('y'), -1, -1, 0, 0, 1, 1, 0, "", (char*) NULL, (void*) NULL, 1);
+   // automatic assignment operator
+   G__memfunc_setup("operator=", 937, G__TComptonTelescopeDataDict_162_0_73, (int) ('u'), G__get_linked_tagnum(&G__TComptonTelescopeDataDictLN_TComptonTelescopeData), -1, 1, 1, 1, 1, 0, "u 'TComptonTelescopeData' - 11 - -", (char*) NULL, (void*) NULL, 0);
+   G__tag_memfunc_reset();
+}
+
+
+/*********************************************************
+* Member function information setup
+*********************************************************/
+extern "C" void G__cpp_setup_memfuncTComptonTelescopeDataDict() {
+}
+
+/*********************************************************
+* 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() {
+
+   G__resetglobalenv();
+}
+extern "C" void G__cpp_setup_globalTComptonTelescopeDataDict() {
+  G__cpp_setup_global0();
+  G__cpp_setup_global1();
+}
+
+/*********************************************************
+* 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_funcTComptonTelescopeDataDict() {
+  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__TComptonTelescopeDataDictLN_TClass = { "TClass" , 99 , -1 };
+G__linked_taginfo G__TComptonTelescopeDataDictLN_TBuffer = { "TBuffer" , 99 , -1 };
+G__linked_taginfo G__TComptonTelescopeDataDictLN_TMemberInspector = { "TMemberInspector" , 99 , -1 };
+G__linked_taginfo G__TComptonTelescopeDataDictLN_TObject = { "TObject" , 99 , -1 };
+G__linked_taginfo G__TComptonTelescopeDataDictLN_vectorlEunsignedsPshortcOallocatorlEunsignedsPshortgRsPgR = { "vector<unsigned short,allocator<unsigned short> >" , 99 , -1 };
+G__linked_taginfo G__TComptonTelescopeDataDictLN_vectorlEdoublecOallocatorlEdoublegRsPgR = { "vector<double,allocator<double> >" , 99 , -1 };
+G__linked_taginfo G__TComptonTelescopeDataDictLN_vectorlEROOTcLcLTSchemaHelpercOallocatorlEROOTcLcLTSchemaHelpergRsPgR = { "vector<ROOT::TSchemaHelper,allocator<ROOT::TSchemaHelper> >" , 99 , -1 };
+G__linked_taginfo G__TComptonTelescopeDataDictLN_reverse_iteratorlEvectorlEROOTcLcLTSchemaHelpercOallocatorlEROOTcLcLTSchemaHelpergRsPgRcLcLiteratorgR = { "reverse_iterator<vector<ROOT::TSchemaHelper,allocator<ROOT::TSchemaHelper> >::iterator>" , 99 , -1 };
+G__linked_taginfo G__TComptonTelescopeDataDictLN_vectorlETVirtualArraymUcOallocatorlETVirtualArraymUgRsPgR = { "vector<TVirtualArray*,allocator<TVirtualArray*> >" , 99 , -1 };
+G__linked_taginfo G__TComptonTelescopeDataDictLN_reverse_iteratorlEvectorlETVirtualArraymUcOallocatorlETVirtualArraymUgRsPgRcLcLiteratorgR = { "reverse_iterator<vector<TVirtualArray*,allocator<TVirtualArray*> >::iterator>" , 99 , -1 };
+G__linked_taginfo G__TComptonTelescopeDataDictLN_TComptonTelescopeData = { "TComptonTelescopeData" , 99 , -1 };
+
+/* Reset class/struct taginfo */
+extern "C" void G__cpp_reset_tagtableTComptonTelescopeDataDict() {
+  G__TComptonTelescopeDataDictLN_TClass.tagnum = -1 ;
+  G__TComptonTelescopeDataDictLN_TBuffer.tagnum = -1 ;
+  G__TComptonTelescopeDataDictLN_TMemberInspector.tagnum = -1 ;
+  G__TComptonTelescopeDataDictLN_TObject.tagnum = -1 ;
+  G__TComptonTelescopeDataDictLN_vectorlEunsignedsPshortcOallocatorlEunsignedsPshortgRsPgR.tagnum = -1 ;
+  G__TComptonTelescopeDataDictLN_vectorlEdoublecOallocatorlEdoublegRsPgR.tagnum = -1 ;
+  G__TComptonTelescopeDataDictLN_vectorlEROOTcLcLTSchemaHelpercOallocatorlEROOTcLcLTSchemaHelpergRsPgR.tagnum = -1 ;
+  G__TComptonTelescopeDataDictLN_reverse_iteratorlEvectorlEROOTcLcLTSchemaHelpercOallocatorlEROOTcLcLTSchemaHelpergRsPgRcLcLiteratorgR.tagnum = -1 ;
+  G__TComptonTelescopeDataDictLN_vectorlETVirtualArraymUcOallocatorlETVirtualArraymUgRsPgR.tagnum = -1 ;
+  G__TComptonTelescopeDataDictLN_reverse_iteratorlEvectorlETVirtualArraymUcOallocatorlETVirtualArraymUgRsPgRcLcLiteratorgR.tagnum = -1 ;
+  G__TComptonTelescopeDataDictLN_TComptonTelescopeData.tagnum = -1 ;
+}
+
+
+extern "C" void G__cpp_setup_tagtableTComptonTelescopeDataDict() {
+
+   /* Setting up class,struct,union tag entry */
+   G__get_linked_tagnum_fwd(&G__TComptonTelescopeDataDictLN_TClass);
+   G__get_linked_tagnum_fwd(&G__TComptonTelescopeDataDictLN_TBuffer);
+   G__get_linked_tagnum_fwd(&G__TComptonTelescopeDataDictLN_TMemberInspector);
+   G__get_linked_tagnum_fwd(&G__TComptonTelescopeDataDictLN_TObject);
+   G__get_linked_tagnum_fwd(&G__TComptonTelescopeDataDictLN_vectorlEunsignedsPshortcOallocatorlEunsignedsPshortgRsPgR);
+   G__get_linked_tagnum_fwd(&G__TComptonTelescopeDataDictLN_vectorlEdoublecOallocatorlEdoublegRsPgR);
+   G__get_linked_tagnum_fwd(&G__TComptonTelescopeDataDictLN_vectorlEROOTcLcLTSchemaHelpercOallocatorlEROOTcLcLTSchemaHelpergRsPgR);
+   G__get_linked_tagnum_fwd(&G__TComptonTelescopeDataDictLN_reverse_iteratorlEvectorlEROOTcLcLTSchemaHelpercOallocatorlEROOTcLcLTSchemaHelpergRsPgRcLcLiteratorgR);
+   G__get_linked_tagnum_fwd(&G__TComptonTelescopeDataDictLN_vectorlETVirtualArraymUcOallocatorlETVirtualArraymUgRsPgR);
+   G__get_linked_tagnum_fwd(&G__TComptonTelescopeDataDictLN_reverse_iteratorlEvectorlETVirtualArraymUcOallocatorlETVirtualArraymUgRsPgRcLcLiteratorgR);
+   G__tagtable_setup(G__get_linked_tagnum_fwd(&G__TComptonTelescopeDataDictLN_TComptonTelescopeData),sizeof(TComptonTelescopeData),-1,29952,"ComptonTelescopeData structure",G__setup_memvarTComptonTelescopeData,G__setup_memfuncTComptonTelescopeData);
+}
+extern "C" void G__cpp_setupTComptonTelescopeDataDict(void) {
+  G__check_setup_version(30051515,"G__cpp_setupTComptonTelescopeDataDict()");
+  G__set_cpp_environmentTComptonTelescopeDataDict();
+  G__cpp_setup_tagtableTComptonTelescopeDataDict();
+
+  G__cpp_setup_inheritanceTComptonTelescopeDataDict();
+
+  G__cpp_setup_typetableTComptonTelescopeDataDict();
+
+  G__cpp_setup_memvarTComptonTelescopeDataDict();
+
+  G__cpp_setup_memfuncTComptonTelescopeDataDict();
+  G__cpp_setup_globalTComptonTelescopeDataDict();
+  G__cpp_setup_funcTComptonTelescopeDataDict();
+
+   if(0==G__getsizep2memfunc()) G__get_sizep2memfuncTComptonTelescopeDataDict();
+  return;
+}
+class G__cpp_setup_initTComptonTelescopeDataDict {
+  public:
+    G__cpp_setup_initTComptonTelescopeDataDict() { G__add_setup_func("TComptonTelescopeDataDict",(G__incsetup)(&G__cpp_setupTComptonTelescopeDataDict)); G__call_setup_funcs(); }
+   ~G__cpp_setup_initTComptonTelescopeDataDict() { G__remove_setup_func("TComptonTelescopeDataDict"); }
+};
+G__cpp_setup_initTComptonTelescopeDataDict G__cpp_setup_initializerTComptonTelescopeDataDict;
+
diff --git a/NPLib/ComptonTelescope/TComptonTelescopeDataDict.h b/NPLib/ComptonTelescope/TComptonTelescopeDataDict.h
new file mode 100644
index 0000000000000000000000000000000000000000..a30944881c25f521652a8d74e97dedb2b13b876b
--- /dev/null
+++ b/NPLib/ComptonTelescope/TComptonTelescopeDataDict.h
@@ -0,0 +1,54 @@
+/********************************************************************
+* TComptonTelescopeDataDict.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 TComptonTelescopeDataDict.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_tagtableTComptonTelescopeDataDict();
+extern void G__cpp_setup_inheritanceTComptonTelescopeDataDict();
+extern void G__cpp_setup_typetableTComptonTelescopeDataDict();
+extern void G__cpp_setup_memvarTComptonTelescopeDataDict();
+extern void G__cpp_setup_globalTComptonTelescopeDataDict();
+extern void G__cpp_setup_memfuncTComptonTelescopeDataDict();
+extern void G__cpp_setup_funcTComptonTelescopeDataDict();
+extern void G__set_cpp_environmentTComptonTelescopeDataDict();
+}
+
+
+#include "TObject.h"
+#include "TMemberInspector.h"
+#include "TComptonTelescopeData.h"
+#include <algorithm>
+namespace std { }
+using namespace std;
+
+#ifndef G__MEMFUNCBODY
+#endif
+
+extern G__linked_taginfo G__TComptonTelescopeDataDictLN_TClass;
+extern G__linked_taginfo G__TComptonTelescopeDataDictLN_TBuffer;
+extern G__linked_taginfo G__TComptonTelescopeDataDictLN_TMemberInspector;
+extern G__linked_taginfo G__TComptonTelescopeDataDictLN_TObject;
+extern G__linked_taginfo G__TComptonTelescopeDataDictLN_vectorlEunsignedsPshortcOallocatorlEunsignedsPshortgRsPgR;
+extern G__linked_taginfo G__TComptonTelescopeDataDictLN_vectorlEdoublecOallocatorlEdoublegRsPgR;
+extern G__linked_taginfo G__TComptonTelescopeDataDictLN_vectorlEROOTcLcLTSchemaHelpercOallocatorlEROOTcLcLTSchemaHelpergRsPgR;
+extern G__linked_taginfo G__TComptonTelescopeDataDictLN_reverse_iteratorlEvectorlEROOTcLcLTSchemaHelpercOallocatorlEROOTcLcLTSchemaHelpergRsPgRcLcLiteratorgR;
+extern G__linked_taginfo G__TComptonTelescopeDataDictLN_vectorlETVirtualArraymUcOallocatorlETVirtualArraymUgRsPgR;
+extern G__linked_taginfo G__TComptonTelescopeDataDictLN_reverse_iteratorlEvectorlETVirtualArraymUcOallocatorlETVirtualArraymUgRsPgRcLcLiteratorgR;
+extern G__linked_taginfo G__TComptonTelescopeDataDictLN_TComptonTelescopeData;
+
+/* STUB derived class for protected member access */
diff --git a/NPLib/ComptonTelescope/TComptonTelescopeProcessData.cxx b/NPLib/ComptonTelescope/TComptonTelescopeProcessData.cxx
new file mode 100755
index 0000000000000000000000000000000000000000..faee2d725e23b171d69e9c07e539546221d7a9d6
--- /dev/null
+++ b/NPLib/ComptonTelescope/TComptonTelescopeProcessData.cxx
@@ -0,0 +1,64 @@
+/*****************************************************************************
+ * 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: N. de Sereville  contact address: deserevi@ipno.in2p3.fr *
+ *                                                                           *
+ * Creation Date  : July 2012                                                *
+ * Last update    :                                                          *
+ *---------------------------------------------------------------------------*
+ * Decription:                                                               *
+ *  This class holds the raw data for a Compton telescope prototype made of  *
+ *  a silicon tracker detector and a LaBr3 calorimeter                       *
+ *                                                                           *
+ *---------------------------------------------------------------------------*
+ * Comment:                                                                  *
+ *                                                                           *
+ *                                                                           *
+ *****************************************************************************/
+#include <iostream>
+using namespace std;
+
+#include "TComptonTelescopeProcessData.h"
+
+ClassImp(TComptonTelescopeProcessData)
+
+TComptonTelescopeProcessData::TComptonTelescopeProcessData()
+{
+   // Default constructor
+   Clear();
+}
+
+
+
+TComptonTelescopeProcessData::~TComptonTelescopeProcessData()
+{
+}
+
+
+
+void TComptonTelescopeProcessData::Clear()
+{
+   // DSSSD
+   // (X,E)
+   fCT_Tracker_Compton_TowerNbr.clear();
+   fCT_Tracker_Compton_DetectorNbr.clear();
+   fCT_Tracker_Compton_Energy.clear();
+}
+
+
+
+void TComptonTelescopeProcessData::Dump() const
+{
+   cout << "XXXXXXXXXXXXXXXXXXXXXXXX New Event: Compton Telescope Process XXXXXXXXXXXXXXXXX" << endl;
+
+   // DSSSD
+   // (X,E)
+   cout << "CT_Tracker_Compton_Mult = " << fCT_Tracker_Compton_DetectorNbr.size() << endl;
+   for (UShort_t i = 0; i < fCT_Tracker_Compton_DetectorNbr.size(); i++)
+      cout << "TowNbr: " << fCT_Tracker_Compton_TowerNbr[i] << " DetNbr: " << fCT_Tracker_Compton_DetectorNbr[i] << " Energy: " << fCT_Tracker_Compton_Energy[i] << endl;
+}
diff --git a/NPLib/ComptonTelescope/TComptonTelescopeProcessData.h b/NPLib/ComptonTelescope/TComptonTelescopeProcessData.h
new file mode 100755
index 0000000000000000000000000000000000000000..3852d7c830ac332de613b0c94c527e59133a68de
--- /dev/null
+++ b/NPLib/ComptonTelescope/TComptonTelescopeProcessData.h
@@ -0,0 +1,65 @@
+#ifndef __COMPTONTELESCOPEPROCESSDATA__
+#define __COMPTONTELESCOPEPROCESSDATA__
+/*****************************************************************************
+ * 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: N. de Sereville  contact address: deserevi@ipno.in2p3.fr *
+ *                                                                           *
+ * Creation Date  : July 2012                                                *
+ * Last update    :                                                          *
+ *---------------------------------------------------------------------------*
+ * Decription:                                                               *
+ *  This class holds the raw data for a Compton telescope prototype made of  *
+ *  a silicon tracker detector and a LaBr3 calorimeter                       *
+ *                                                                           *
+ *---------------------------------------------------------------------------*
+ * Comment:                                                                  *
+ *                                                                           *
+ *                                                                           *
+ *****************************************************************************/
+#include <vector>
+#include "TObject.h"
+
+using namespace std ;
+class TComptonTelescopeProcessData : public TObject {
+   private:
+      // DSSSD tracker
+      // Energy
+      vector<UShort_t>   fCT_Tracker_Compton_TowerNbr;
+      vector<UShort_t>   fCT_Tracker_Compton_DetectorNbr;
+      vector<Double_t>   fCT_Tracker_Compton_Energy;
+
+
+   public:
+      TComptonTelescopeProcessData();
+      virtual ~TComptonTelescopeProcessData();
+
+      void Clear();
+      void Clear(const Option_t*) {};
+      void Dump() const;
+
+      /////////////////////           SETTERS           ////////////////////////
+      // DSSD
+      // (X,E)
+      void SetCTTrackerComptonTowerNbr(const UShort_t TowNbr)      {fCT_Tracker_Compton_TowerNbr.push_back(TowNbr);}
+      void SetCTTrackerComptonDetectorNbr(const UShort_t DetNbr)   {fCT_Tracker_Compton_DetectorNbr.push_back(DetNbr);}
+      void SetCTTrackerComptonEnergy(const Double_t Energy)        {fCT_Tracker_Compton_Energy.push_back(Energy);}
+
+
+      /////////////////////           GETTERS           ////////////////////////
+      // DSSD
+      // (X,E)
+      UShort_t   GetCTTrackerComptonMult()                      const {return fCT_Tracker_Compton_TowerNbr.size();}
+      UShort_t   GetCTTrackerComptonTowerNbr(const Int_t i)     const {return fCT_Tracker_Compton_TowerNbr[i];}
+      UShort_t   GetCTTrackerComptonDetectorNbr(const Int_t i)  const {return fCT_Tracker_Compton_DetectorNbr[i];}
+      Double_t   GetCTTrackerComptonEnergy(const Int_t i)       const {return fCT_Tracker_Compton_Energy[i];}
+
+      ClassDef(TComptonTelescopeProcessData,1)  // ComptonTelescopeProcessData structure
+};
+
+#endif
diff --git a/NPLib/ComptonTelescope/TComptonTelescopeProcessDataDict.cxx b/NPLib/ComptonTelescope/TComptonTelescopeProcessDataDict.cxx
new file mode 100644
index 0000000000000000000000000000000000000000..b73fc8d7877819a4e9c3be59a976714e12b11711
--- /dev/null
+++ b/NPLib/ComptonTelescope/TComptonTelescopeProcessDataDict.cxx
@@ -0,0 +1,891 @@
+//
+// File generated by rootcint at Tue Jul 17 16:40:46 2012
+
+// Do NOT change. Changes will be lost next time file is generated
+//
+
+#define R__DICTIONARY_FILENAME TComptonTelescopeProcessDataDict
+#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 "TComptonTelescopeProcessDataDict.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 TComptonTelescopeProcessData_ShowMembers(void *obj, TMemberInspector &R__insp);
+   static void *new_TComptonTelescopeProcessData(void *p = 0);
+   static void *newArray_TComptonTelescopeProcessData(Long_t size, void *p);
+   static void delete_TComptonTelescopeProcessData(void *p);
+   static void deleteArray_TComptonTelescopeProcessData(void *p);
+   static void destruct_TComptonTelescopeProcessData(void *p);
+   static void streamer_TComptonTelescopeProcessData(TBuffer &buf, void *obj);
+
+   // Function generating the singleton type initializer
+   static TGenericClassInfo *GenerateInitInstanceLocal(const ::TComptonTelescopeProcessData*)
+   {
+      ::TComptonTelescopeProcessData *ptr = 0;
+      static ::TVirtualIsAProxy* isa_proxy = new ::TInstrumentedIsAProxy< ::TComptonTelescopeProcessData >(0);
+      static ::ROOT::TGenericClassInfo 
+         instance("TComptonTelescopeProcessData", ::TComptonTelescopeProcessData::Class_Version(), "./TComptonTelescopeProcessData.h", 29,
+                  typeid(::TComptonTelescopeProcessData), DefineBehavior(ptr, ptr),
+                  &::TComptonTelescopeProcessData::Dictionary, isa_proxy, 0,
+                  sizeof(::TComptonTelescopeProcessData) );
+      instance.SetNew(&new_TComptonTelescopeProcessData);
+      instance.SetNewArray(&newArray_TComptonTelescopeProcessData);
+      instance.SetDelete(&delete_TComptonTelescopeProcessData);
+      instance.SetDeleteArray(&deleteArray_TComptonTelescopeProcessData);
+      instance.SetDestructor(&destruct_TComptonTelescopeProcessData);
+      instance.SetStreamerFunc(&streamer_TComptonTelescopeProcessData);
+      return &instance;
+   }
+   TGenericClassInfo *GenerateInitInstance(const ::TComptonTelescopeProcessData*)
+   {
+      return GenerateInitInstanceLocal((::TComptonTelescopeProcessData*)0);
+   }
+   // Static variable to force the class initialization
+   static ::ROOT::TGenericClassInfo *_R__UNIQUE_(Init) = GenerateInitInstanceLocal((const ::TComptonTelescopeProcessData*)0x0); R__UseDummy(_R__UNIQUE_(Init));
+} // end of namespace ROOT
+
+//______________________________________________________________________________
+TClass *TComptonTelescopeProcessData::fgIsA = 0;  // static to hold class pointer
+
+//______________________________________________________________________________
+const char *TComptonTelescopeProcessData::Class_Name()
+{
+   return "TComptonTelescopeProcessData";
+}
+
+//______________________________________________________________________________
+const char *TComptonTelescopeProcessData::ImplFileName()
+{
+   return ::ROOT::GenerateInitInstanceLocal((const ::TComptonTelescopeProcessData*)0x0)->GetImplFileName();
+}
+
+//______________________________________________________________________________
+int TComptonTelescopeProcessData::ImplFileLine()
+{
+   return ::ROOT::GenerateInitInstanceLocal((const ::TComptonTelescopeProcessData*)0x0)->GetImplFileLine();
+}
+
+//______________________________________________________________________________
+void TComptonTelescopeProcessData::Dictionary()
+{
+   fgIsA = ::ROOT::GenerateInitInstanceLocal((const ::TComptonTelescopeProcessData*)0x0)->GetClass();
+}
+
+//______________________________________________________________________________
+TClass *TComptonTelescopeProcessData::Class()
+{
+   if (!fgIsA) fgIsA = ::ROOT::GenerateInitInstanceLocal((const ::TComptonTelescopeProcessData*)0x0)->GetClass();
+   return fgIsA;
+}
+
+//______________________________________________________________________________
+void TComptonTelescopeProcessData::Streamer(TBuffer &R__b)
+{
+   // Stream an object of class TComptonTelescopeProcessData.
+
+   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 =  fCT_Tracker_Compton_TowerNbr;
+         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 =  fCT_Tracker_Compton_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<Double_t> &R__stl =  fCT_Tracker_Compton_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);
+         }
+      }
+      R__b.CheckByteCount(R__s, R__c, TComptonTelescopeProcessData::IsA());
+   } else {
+      R__c = R__b.WriteVersion(TComptonTelescopeProcessData::IsA(), kTRUE);
+      TObject::Streamer(R__b);
+      {
+         vector<UShort_t> &R__stl =  fCT_Tracker_Compton_TowerNbr;
+         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 =  fCT_Tracker_Compton_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<Double_t> &R__stl =  fCT_Tracker_Compton_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);
+            }
+         }
+      }
+      R__b.SetByteCount(R__c, kTRUE);
+   }
+}
+
+//______________________________________________________________________________
+void TComptonTelescopeProcessData::ShowMembers(TMemberInspector &R__insp)
+{
+      // Inspect the data members of an object of class TComptonTelescopeProcessData.
+      TClass *R__cl = ::TComptonTelescopeProcessData::IsA();
+      if (R__cl || R__insp.IsA()) { }
+      R__insp.Inspect(R__cl, R__insp.GetParent(), "fCT_Tracker_Compton_TowerNbr", (void*)&fCT_Tracker_Compton_TowerNbr);
+      R__insp.InspectMember("vector<UShort_t>", (void*)&fCT_Tracker_Compton_TowerNbr, "fCT_Tracker_Compton_TowerNbr.", false);
+      R__insp.Inspect(R__cl, R__insp.GetParent(), "fCT_Tracker_Compton_DetectorNbr", (void*)&fCT_Tracker_Compton_DetectorNbr);
+      R__insp.InspectMember("vector<UShort_t>", (void*)&fCT_Tracker_Compton_DetectorNbr, "fCT_Tracker_Compton_DetectorNbr.", false);
+      R__insp.Inspect(R__cl, R__insp.GetParent(), "fCT_Tracker_Compton_Energy", (void*)&fCT_Tracker_Compton_Energy);
+      R__insp.InspectMember("vector<Double_t>", (void*)&fCT_Tracker_Compton_Energy, "fCT_Tracker_Compton_Energy.", false);
+      TObject::ShowMembers(R__insp);
+}
+
+namespace ROOT {
+   // Wrappers around operator new
+   static void *new_TComptonTelescopeProcessData(void *p) {
+      return  p ? new(p) ::TComptonTelescopeProcessData : new ::TComptonTelescopeProcessData;
+   }
+   static void *newArray_TComptonTelescopeProcessData(Long_t nElements, void *p) {
+      return p ? new(p) ::TComptonTelescopeProcessData[nElements] : new ::TComptonTelescopeProcessData[nElements];
+   }
+   // Wrapper around operator delete
+   static void delete_TComptonTelescopeProcessData(void *p) {
+      delete ((::TComptonTelescopeProcessData*)p);
+   }
+   static void deleteArray_TComptonTelescopeProcessData(void *p) {
+      delete [] ((::TComptonTelescopeProcessData*)p);
+   }
+   static void destruct_TComptonTelescopeProcessData(void *p) {
+      typedef ::TComptonTelescopeProcessData current_t;
+      ((current_t*)p)->~current_t();
+   }
+   // Wrapper around a custom streamer member function.
+   static void streamer_TComptonTelescopeProcessData(TBuffer &buf, void *obj) {
+      ((::TComptonTelescopeProcessData*)obj)->::TComptonTelescopeProcessData::Streamer(buf);
+   }
+} // end of namespace ROOT for class ::TComptonTelescopeProcessData
+
+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>
+
+/********************************************************
+* TComptonTelescopeProcessDataDict.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_tagtableTComptonTelescopeProcessDataDict();
+
+extern "C" void G__set_cpp_environmentTComptonTelescopeProcessDataDict() {
+  G__add_compiledheader("TObject.h");
+  G__add_compiledheader("TMemberInspector.h");
+  G__add_compiledheader("TComptonTelescopeProcessData.h");
+  G__cpp_reset_tagtableTComptonTelescopeProcessDataDict();
+}
+#include <new>
+extern "C" int G__cpp_dllrevTComptonTelescopeProcessDataDict() { return(30051515); }
+
+/*********************************************************
+* Member function Interface Method
+*********************************************************/
+
+/* TComptonTelescopeProcessData */
+static int G__TComptonTelescopeProcessDataDict_162_0_1(G__value* result7, G__CONST char* funcname, struct G__param* libp, int hash)
+{
+   TComptonTelescopeProcessData* p = NULL;
+   char* gvp = (char*) G__getgvp();
+   int n = G__getaryconstruct();
+   if (n) {
+     if ((gvp == (char*)G__PVOID) || (gvp == 0)) {
+       p = new TComptonTelescopeProcessData[n];
+     } else {
+       p = new((void*) gvp) TComptonTelescopeProcessData[n];
+     }
+   } else {
+     if ((gvp == (char*)G__PVOID) || (gvp == 0)) {
+       p = new TComptonTelescopeProcessData;
+     } else {
+       p = new((void*) gvp) TComptonTelescopeProcessData;
+     }
+   }
+   result7->obj.i = (long) p;
+   result7->ref = (long) p;
+   G__set_tagnum(result7,G__get_linked_tagnum(&G__TComptonTelescopeProcessDataDictLN_TComptonTelescopeProcessData));
+   return(1 || funcname || hash || result7 || libp) ;
+}
+
+static int G__TComptonTelescopeProcessDataDict_162_0_2(G__value* result7, G__CONST char* funcname, struct G__param* libp, int hash)
+{
+      ((TComptonTelescopeProcessData*) G__getstructoffset())->Clear();
+      G__setnull(result7);
+   return(1 || funcname || hash || result7 || libp) ;
+}
+
+static int G__TComptonTelescopeProcessDataDict_162_0_5(G__value* result7, G__CONST char* funcname, struct G__param* libp, int hash)
+{
+      ((TComptonTelescopeProcessData*) G__getstructoffset())->SetCTTrackerComptonTowerNbr((const UShort_t) G__int(libp->para[0]));
+      G__setnull(result7);
+   return(1 || funcname || hash || result7 || libp) ;
+}
+
+static int G__TComptonTelescopeProcessDataDict_162_0_6(G__value* result7, G__CONST char* funcname, struct G__param* libp, int hash)
+{
+      ((TComptonTelescopeProcessData*) G__getstructoffset())->SetCTTrackerComptonDetectorNbr((const UShort_t) G__int(libp->para[0]));
+      G__setnull(result7);
+   return(1 || funcname || hash || result7 || libp) ;
+}
+
+static int G__TComptonTelescopeProcessDataDict_162_0_7(G__value* result7, G__CONST char* funcname, struct G__param* libp, int hash)
+{
+      ((TComptonTelescopeProcessData*) G__getstructoffset())->SetCTTrackerComptonEnergy((const Double_t) G__double(libp->para[0]));
+      G__setnull(result7);
+   return(1 || funcname || hash || result7 || libp) ;
+}
+
+static int G__TComptonTelescopeProcessDataDict_162_0_8(G__value* result7, G__CONST char* funcname, struct G__param* libp, int hash)
+{
+      G__letint(result7, 114, (long) ((const TComptonTelescopeProcessData*) G__getstructoffset())->GetCTTrackerComptonMult());
+   return(1 || funcname || hash || result7 || libp) ;
+}
+
+static int G__TComptonTelescopeProcessDataDict_162_0_9(G__value* result7, G__CONST char* funcname, struct G__param* libp, int hash)
+{
+      G__letint(result7, 114, (long) ((const TComptonTelescopeProcessData*) G__getstructoffset())->GetCTTrackerComptonTowerNbr((const Int_t) G__int(libp->para[0])));
+   return(1 || funcname || hash || result7 || libp) ;
+}
+
+static int G__TComptonTelescopeProcessDataDict_162_0_10(G__value* result7, G__CONST char* funcname, struct G__param* libp, int hash)
+{
+      G__letint(result7, 114, (long) ((const TComptonTelescopeProcessData*) G__getstructoffset())->GetCTTrackerComptonDetectorNbr((const Int_t) G__int(libp->para[0])));
+   return(1 || funcname || hash || result7 || libp) ;
+}
+
+static int G__TComptonTelescopeProcessDataDict_162_0_11(G__value* result7, G__CONST char* funcname, struct G__param* libp, int hash)
+{
+      G__letdouble(result7, 100, (double) ((const TComptonTelescopeProcessData*) G__getstructoffset())->GetCTTrackerComptonEnergy((const Int_t) G__int(libp->para[0])));
+   return(1 || funcname || hash || result7 || libp) ;
+}
+
+static int G__TComptonTelescopeProcessDataDict_162_0_12(G__value* result7, G__CONST char* funcname, struct G__param* libp, int hash)
+{
+      G__letint(result7, 85, (long) TComptonTelescopeProcessData::Class());
+   return(1 || funcname || hash || result7 || libp) ;
+}
+
+static int G__TComptonTelescopeProcessDataDict_162_0_13(G__value* result7, G__CONST char* funcname, struct G__param* libp, int hash)
+{
+      G__letint(result7, 67, (long) TComptonTelescopeProcessData::Class_Name());
+   return(1 || funcname || hash || result7 || libp) ;
+}
+
+static int G__TComptonTelescopeProcessDataDict_162_0_14(G__value* result7, G__CONST char* funcname, struct G__param* libp, int hash)
+{
+      G__letint(result7, 115, (long) TComptonTelescopeProcessData::Class_Version());
+   return(1 || funcname || hash || result7 || libp) ;
+}
+
+static int G__TComptonTelescopeProcessDataDict_162_0_15(G__value* result7, G__CONST char* funcname, struct G__param* libp, int hash)
+{
+      TComptonTelescopeProcessData::Dictionary();
+      G__setnull(result7);
+   return(1 || funcname || hash || result7 || libp) ;
+}
+
+static int G__TComptonTelescopeProcessDataDict_162_0_19(G__value* result7, G__CONST char* funcname, struct G__param* libp, int hash)
+{
+      ((TComptonTelescopeProcessData*) G__getstructoffset())->StreamerNVirtual(*(TBuffer*) libp->para[0].ref);
+      G__setnull(result7);
+   return(1 || funcname || hash || result7 || libp) ;
+}
+
+static int G__TComptonTelescopeProcessDataDict_162_0_20(G__value* result7, G__CONST char* funcname, struct G__param* libp, int hash)
+{
+      G__letint(result7, 67, (long) TComptonTelescopeProcessData::DeclFileName());
+   return(1 || funcname || hash || result7 || libp) ;
+}
+
+static int G__TComptonTelescopeProcessDataDict_162_0_21(G__value* result7, G__CONST char* funcname, struct G__param* libp, int hash)
+{
+      G__letint(result7, 105, (long) TComptonTelescopeProcessData::ImplFileLine());
+   return(1 || funcname || hash || result7 || libp) ;
+}
+
+static int G__TComptonTelescopeProcessDataDict_162_0_22(G__value* result7, G__CONST char* funcname, struct G__param* libp, int hash)
+{
+      G__letint(result7, 67, (long) TComptonTelescopeProcessData::ImplFileName());
+   return(1 || funcname || hash || result7 || libp) ;
+}
+
+static int G__TComptonTelescopeProcessDataDict_162_0_23(G__value* result7, G__CONST char* funcname, struct G__param* libp, int hash)
+{
+      G__letint(result7, 105, (long) TComptonTelescopeProcessData::DeclFileLine());
+   return(1 || funcname || hash || result7 || libp) ;
+}
+
+// automatic copy constructor
+static int G__TComptonTelescopeProcessDataDict_162_0_24(G__value* result7, G__CONST char* funcname, struct G__param* libp, int hash)
+
+{
+   TComptonTelescopeProcessData* p;
+   void* tmp = (void*) G__int(libp->para[0]);
+   p = new TComptonTelescopeProcessData(*(TComptonTelescopeProcessData*) tmp);
+   result7->obj.i = (long) p;
+   result7->ref = (long) p;
+   G__set_tagnum(result7,G__get_linked_tagnum(&G__TComptonTelescopeProcessDataDictLN_TComptonTelescopeProcessData));
+   return(1 || funcname || hash || result7 || libp) ;
+}
+
+// automatic destructor
+typedef TComptonTelescopeProcessData G__TTComptonTelescopeProcessData;
+static int G__TComptonTelescopeProcessDataDict_162_0_25(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[] (TComptonTelescopeProcessData*) soff;
+     } else {
+       G__setgvp((long) G__PVOID);
+       for (int i = n - 1; i >= 0; --i) {
+         ((TComptonTelescopeProcessData*) (soff+(sizeof(TComptonTelescopeProcessData)*i)))->~G__TTComptonTelescopeProcessData();
+       }
+       G__setgvp((long)gvp);
+     }
+   } else {
+     if (gvp == (char*)G__PVOID) {
+       delete (TComptonTelescopeProcessData*) soff;
+     } else {
+       G__setgvp((long) G__PVOID);
+       ((TComptonTelescopeProcessData*) (soff))->~G__TTComptonTelescopeProcessData();
+       G__setgvp((long)gvp);
+     }
+   }
+   G__setnull(result7);
+   return(1 || funcname || hash || result7 || libp) ;
+}
+
+// automatic assignment operator
+static int G__TComptonTelescopeProcessDataDict_162_0_26(G__value* result7, G__CONST char* funcname, struct G__param* libp, int hash)
+{
+   TComptonTelescopeProcessData* dest = (TComptonTelescopeProcessData*) G__getstructoffset();
+   *dest = *(TComptonTelescopeProcessData*) libp->para[0].ref;
+   const TComptonTelescopeProcessData& obj = *dest;
+   result7->ref = (long) (&obj);
+   result7->obj.i = (long) (&obj);
+   return(1 || funcname || hash || result7 || libp) ;
+}
+
+
+/* Setting up global function */
+
+/*********************************************************
+* Member function Stub
+*********************************************************/
+
+/* TComptonTelescopeProcessData */
+
+/*********************************************************
+* Global function Stub
+*********************************************************/
+
+/*********************************************************
+* Get size of pointer to member function
+*********************************************************/
+class G__Sizep2memfuncTComptonTelescopeProcessDataDict {
+ public:
+  G__Sizep2memfuncTComptonTelescopeProcessDataDict(): p(&G__Sizep2memfuncTComptonTelescopeProcessDataDict::sizep2memfunc) {}
+    size_t sizep2memfunc() { return(sizeof(p)); }
+  private:
+    size_t (G__Sizep2memfuncTComptonTelescopeProcessDataDict::*p)();
+};
+
+size_t G__get_sizep2memfuncTComptonTelescopeProcessDataDict()
+{
+  G__Sizep2memfuncTComptonTelescopeProcessDataDict 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_inheritanceTComptonTelescopeProcessDataDict() {
+
+   /* Setting up class inheritance */
+   if(0==G__getnumbaseclass(G__get_linked_tagnum(&G__TComptonTelescopeProcessDataDictLN_TComptonTelescopeProcessData))) {
+     TComptonTelescopeProcessData *G__Lderived;
+     G__Lderived=(TComptonTelescopeProcessData*)0x1000;
+     {
+       TObject *G__Lpbase=(TObject*)G__Lderived;
+       G__inheritance_setup(G__get_linked_tagnum(&G__TComptonTelescopeProcessDataDictLN_TComptonTelescopeProcessData),G__get_linked_tagnum(&G__TComptonTelescopeProcessDataDictLN_TObject),(long)G__Lpbase-(long)G__Lderived,1,1);
+     }
+   }
+}
+
+/*********************************************************
+* typedef information setup/
+*********************************************************/
+extern "C" void G__cpp_setup_typetableTComptonTelescopeProcessDataDict() {
+
+   /* 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("Int_t",105,-1,0,-1);
+   G__setnewtype(-1,"Signed integer 4 bytes (int)",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__TComptonTelescopeProcessDataDictLN_vectorlEROOTcLcLTSchemaHelpercOallocatorlEROOTcLcLTSchemaHelpergRsPgR),0,-1);
+   G__setnewtype(-1,NULL,0);
+   G__search_typename2("reverse_iterator<const_iterator>",117,G__get_linked_tagnum(&G__TComptonTelescopeProcessDataDictLN_reverse_iteratorlEvectorlEROOTcLcLTSchemaHelpercOallocatorlEROOTcLcLTSchemaHelpergRsPgRcLcLiteratorgR),0,G__get_linked_tagnum(&G__TComptonTelescopeProcessDataDictLN_vectorlEROOTcLcLTSchemaHelpercOallocatorlEROOTcLcLTSchemaHelpergRsPgR));
+   G__setnewtype(-1,NULL,0);
+   G__search_typename2("reverse_iterator<iterator>",117,G__get_linked_tagnum(&G__TComptonTelescopeProcessDataDictLN_reverse_iteratorlEvectorlEROOTcLcLTSchemaHelpercOallocatorlEROOTcLcLTSchemaHelpergRsPgRcLcLiteratorgR),0,G__get_linked_tagnum(&G__TComptonTelescopeProcessDataDictLN_vectorlEROOTcLcLTSchemaHelpercOallocatorlEROOTcLcLTSchemaHelpergRsPgR));
+   G__setnewtype(-1,NULL,0);
+   G__search_typename2("vector<TVirtualArray*>",117,G__get_linked_tagnum(&G__TComptonTelescopeProcessDataDictLN_vectorlETVirtualArraymUcOallocatorlETVirtualArraymUgRsPgR),0,-1);
+   G__setnewtype(-1,NULL,0);
+   G__search_typename2("reverse_iterator<const_iterator>",117,G__get_linked_tagnum(&G__TComptonTelescopeProcessDataDictLN_reverse_iteratorlEvectorlETVirtualArraymUcOallocatorlETVirtualArraymUgRsPgRcLcLiteratorgR),0,G__get_linked_tagnum(&G__TComptonTelescopeProcessDataDictLN_vectorlETVirtualArraymUcOallocatorlETVirtualArraymUgRsPgR));
+   G__setnewtype(-1,NULL,0);
+   G__search_typename2("reverse_iterator<iterator>",117,G__get_linked_tagnum(&G__TComptonTelescopeProcessDataDictLN_reverse_iteratorlEvectorlETVirtualArraymUcOallocatorlETVirtualArraymUgRsPgRcLcLiteratorgR),0,G__get_linked_tagnum(&G__TComptonTelescopeProcessDataDictLN_vectorlETVirtualArraymUcOallocatorlETVirtualArraymUgRsPgR));
+   G__setnewtype(-1,NULL,0);
+   G__search_typename2("vector<UShort_t>",117,G__get_linked_tagnum(&G__TComptonTelescopeProcessDataDictLN_vectorlEunsignedsPshortcOallocatorlEunsignedsPshortgRsPgR),0,-1);
+   G__setnewtype(-1,NULL,0);
+   G__search_typename2("vector<Double_t>",117,G__get_linked_tagnum(&G__TComptonTelescopeProcessDataDictLN_vectorlEdoublecOallocatorlEdoublegRsPgR),0,-1);
+   G__setnewtype(-1,NULL,0);
+}
+
+/*********************************************************
+* Data Member information setup/
+*********************************************************/
+
+   /* Setting up class,struct,union tag member variable */
+
+   /* TComptonTelescopeProcessData */
+static void G__setup_memvarTComptonTelescopeProcessData(void) {
+   G__tag_memvar_setup(G__get_linked_tagnum(&G__TComptonTelescopeProcessDataDictLN_TComptonTelescopeProcessData));
+   { TComptonTelescopeProcessData *p; p=(TComptonTelescopeProcessData*)0x1000; if (p) { }
+   G__memvar_setup((void*)0,117,0,0,G__get_linked_tagnum(&G__TComptonTelescopeProcessDataDictLN_vectorlEunsignedsPshortcOallocatorlEunsignedsPshortgRsPgR),G__defined_typename("vector<UShort_t>"),-1,4,"fCT_Tracker_Compton_TowerNbr=",0,(char*)NULL);
+   G__memvar_setup((void*)0,117,0,0,G__get_linked_tagnum(&G__TComptonTelescopeProcessDataDictLN_vectorlEunsignedsPshortcOallocatorlEunsignedsPshortgRsPgR),G__defined_typename("vector<UShort_t>"),-1,4,"fCT_Tracker_Compton_DetectorNbr=",0,(char*)NULL);
+   G__memvar_setup((void*)0,117,0,0,G__get_linked_tagnum(&G__TComptonTelescopeProcessDataDictLN_vectorlEdoublecOallocatorlEdoublegRsPgR),G__defined_typename("vector<Double_t>"),-1,4,"fCT_Tracker_Compton_Energy=",0,(char*)NULL);
+   G__memvar_setup((void*)0,85,0,0,G__get_linked_tagnum(&G__TComptonTelescopeProcessDataDictLN_TClass),-1,-2,4,"fgIsA=",0,(char*)NULL);
+   }
+   G__tag_memvar_reset();
+}
+
+extern "C" void G__cpp_setup_memvarTComptonTelescopeProcessDataDict() {
+}
+/***********************************************************
+************************************************************
+************************************************************
+************************************************************
+************************************************************
+************************************************************
+************************************************************
+***********************************************************/
+
+/*********************************************************
+* Member function information setup for each class
+*********************************************************/
+static void G__setup_memfuncTComptonTelescopeProcessData(void) {
+   /* TComptonTelescopeProcessData */
+   G__tag_memfunc_setup(G__get_linked_tagnum(&G__TComptonTelescopeProcessDataDictLN_TComptonTelescopeProcessData));
+   G__memfunc_setup("TComptonTelescopeProcessData",2865,G__TComptonTelescopeProcessDataDict_162_0_1, 105, G__get_linked_tagnum(&G__TComptonTelescopeProcessDataDictLN_TComptonTelescopeProcessData), -1, 0, 0, 1, 1, 0, "", (char*)NULL, (void*) NULL, 0);
+   G__memfunc_setup("Clear",487,G__TComptonTelescopeProcessDataDict_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("SetCTTrackerComptonTowerNbr",2722,G__TComptonTelescopeProcessDataDict_162_0_5, 121, -1, -1, 0, 1, 1, 1, 0, "r - 'UShort_t' 10 - TowNbr", (char*)NULL, (void*) NULL, 0);
+   G__memfunc_setup("SetCTTrackerComptonDetectorNbr",3019,G__TComptonTelescopeProcessDataDict_162_0_6, 121, -1, -1, 0, 1, 1, 1, 0, "r - 'UShort_t' 10 - DetNbr", (char*)NULL, (void*) NULL, 0);
+   G__memfunc_setup("SetCTTrackerComptonEnergy",2521,G__TComptonTelescopeProcessDataDict_162_0_7, 121, -1, -1, 0, 1, 1, 1, 0, "d - 'Double_t' 10 - Energy", (char*)NULL, (void*) NULL, 0);
+   G__memfunc_setup("GetCTTrackerComptonMult",2309,G__TComptonTelescopeProcessDataDict_162_0_8, 114, -1, G__defined_typename("UShort_t"), 0, 0, 1, 1, 8, "", (char*)NULL, (void*) NULL, 0);
+   G__memfunc_setup("GetCTTrackerComptonTowerNbr",2710,G__TComptonTelescopeProcessDataDict_162_0_9, 114, -1, G__defined_typename("UShort_t"), 0, 1, 1, 1, 8, "i - 'Int_t' 10 - i", (char*)NULL, (void*) NULL, 0);
+   G__memfunc_setup("GetCTTrackerComptonDetectorNbr",3007,G__TComptonTelescopeProcessDataDict_162_0_10, 114, -1, G__defined_typename("UShort_t"), 0, 1, 1, 1, 8, "i - 'Int_t' 10 - i", (char*)NULL, (void*) NULL, 0);
+   G__memfunc_setup("GetCTTrackerComptonEnergy",2509,G__TComptonTelescopeProcessDataDict_162_0_11, 100, -1, G__defined_typename("Double_t"), 0, 1, 1, 1, 8, "i - 'Int_t' 10 - i", (char*)NULL, (void*) NULL, 0);
+   G__memfunc_setup("Class",502,G__TComptonTelescopeProcessDataDict_162_0_12, 85, G__get_linked_tagnum(&G__TComptonTelescopeProcessDataDictLN_TClass), -1, 0, 0, 3, 1, 0, "", (char*)NULL, (void*) G__func2void( (TClass* (*)())(&TComptonTelescopeProcessData::Class) ), 0);
+   G__memfunc_setup("Class_Name",982,G__TComptonTelescopeProcessDataDict_162_0_13, 67, -1, -1, 0, 0, 3, 1, 1, "", (char*)NULL, (void*) G__func2void( (const char* (*)())(&TComptonTelescopeProcessData::Class_Name) ), 0);
+   G__memfunc_setup("Class_Version",1339,G__TComptonTelescopeProcessDataDict_162_0_14, 115, -1, G__defined_typename("Version_t"), 0, 0, 3, 1, 0, "", (char*)NULL, (void*) G__func2void( (Version_t (*)())(&TComptonTelescopeProcessData::Class_Version) ), 0);
+   G__memfunc_setup("Dictionary",1046,G__TComptonTelescopeProcessDataDict_162_0_15, 121, -1, -1, 0, 0, 3, 1, 0, "", (char*)NULL, (void*) G__func2void( (void (*)())(&TComptonTelescopeProcessData::Dictionary) ), 0);
+   G__memfunc_setup("IsA",253,(G__InterfaceMethod) NULL,85, G__get_linked_tagnum(&G__TComptonTelescopeProcessDataDictLN_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__TComptonTelescopeProcessDataDict_162_0_19, 121, -1, -1, 0, 1, 1, 1, 0, "u 'TBuffer' - 1 - b", (char*)NULL, (void*) NULL, 0);
+   G__memfunc_setup("DeclFileName",1145,G__TComptonTelescopeProcessDataDict_162_0_20, 67, -1, -1, 0, 0, 3, 1, 1, "", (char*)NULL, (void*) G__func2void( (const char* (*)())(&TComptonTelescopeProcessData::DeclFileName) ), 0);
+   G__memfunc_setup("ImplFileLine",1178,G__TComptonTelescopeProcessDataDict_162_0_21, 105, -1, -1, 0, 0, 3, 1, 0, "", (char*)NULL, (void*) G__func2void( (int (*)())(&TComptonTelescopeProcessData::ImplFileLine) ), 0);
+   G__memfunc_setup("ImplFileName",1171,G__TComptonTelescopeProcessDataDict_162_0_22, 67, -1, -1, 0, 0, 3, 1, 1, "", (char*)NULL, (void*) G__func2void( (const char* (*)())(&TComptonTelescopeProcessData::ImplFileName) ), 0);
+   G__memfunc_setup("DeclFileLine",1152,G__TComptonTelescopeProcessDataDict_162_0_23, 105, -1, -1, 0, 0, 3, 1, 0, "", (char*)NULL, (void*) G__func2void( (int (*)())(&TComptonTelescopeProcessData::DeclFileLine) ), 0);
+   // automatic copy constructor
+   G__memfunc_setup("TComptonTelescopeProcessData", 2865, G__TComptonTelescopeProcessDataDict_162_0_24, (int) ('i'), 
+G__get_linked_tagnum(&G__TComptonTelescopeProcessDataDictLN_TComptonTelescopeProcessData), -1, 0, 1, 1, 1, 0, "u 'TComptonTelescopeProcessData' - 11 - -", (char*) NULL, (void*) NULL, 0);
+   // automatic destructor
+   G__memfunc_setup("~TComptonTelescopeProcessData", 2991, G__TComptonTelescopeProcessDataDict_162_0_25, (int) ('y'), -1, -1, 0, 0, 1, 1, 0, "", (char*) NULL, (void*) NULL, 1);
+   // automatic assignment operator
+   G__memfunc_setup("operator=", 937, G__TComptonTelescopeProcessDataDict_162_0_26, (int) ('u'), G__get_linked_tagnum(&G__TComptonTelescopeProcessDataDictLN_TComptonTelescopeProcessData), -1, 1, 1, 1, 1, 0, "u 'TComptonTelescopeProcessData' - 11 - -", (char*) NULL, (void*) NULL, 0);
+   G__tag_memfunc_reset();
+}
+
+
+/*********************************************************
+* Member function information setup
+*********************************************************/
+extern "C" void G__cpp_setup_memfuncTComptonTelescopeProcessDataDict() {
+}
+
+/*********************************************************
+* 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() {
+
+   G__resetglobalenv();
+}
+extern "C" void G__cpp_setup_globalTComptonTelescopeProcessDataDict() {
+  G__cpp_setup_global0();
+  G__cpp_setup_global1();
+}
+
+/*********************************************************
+* 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_funcTComptonTelescopeProcessDataDict() {
+  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__TComptonTelescopeProcessDataDictLN_TClass = { "TClass" , 99 , -1 };
+G__linked_taginfo G__TComptonTelescopeProcessDataDictLN_TBuffer = { "TBuffer" , 99 , -1 };
+G__linked_taginfo G__TComptonTelescopeProcessDataDictLN_TMemberInspector = { "TMemberInspector" , 99 , -1 };
+G__linked_taginfo G__TComptonTelescopeProcessDataDictLN_TObject = { "TObject" , 99 , -1 };
+G__linked_taginfo G__TComptonTelescopeProcessDataDictLN_vectorlEunsignedsPshortcOallocatorlEunsignedsPshortgRsPgR = { "vector<unsigned short,allocator<unsigned short> >" , 99 , -1 };
+G__linked_taginfo G__TComptonTelescopeProcessDataDictLN_vectorlEdoublecOallocatorlEdoublegRsPgR = { "vector<double,allocator<double> >" , 99 , -1 };
+G__linked_taginfo G__TComptonTelescopeProcessDataDictLN_vectorlEROOTcLcLTSchemaHelpercOallocatorlEROOTcLcLTSchemaHelpergRsPgR = { "vector<ROOT::TSchemaHelper,allocator<ROOT::TSchemaHelper> >" , 99 , -1 };
+G__linked_taginfo G__TComptonTelescopeProcessDataDictLN_reverse_iteratorlEvectorlEROOTcLcLTSchemaHelpercOallocatorlEROOTcLcLTSchemaHelpergRsPgRcLcLiteratorgR = { "reverse_iterator<vector<ROOT::TSchemaHelper,allocator<ROOT::TSchemaHelper> >::iterator>" , 99 , -1 };
+G__linked_taginfo G__TComptonTelescopeProcessDataDictLN_vectorlETVirtualArraymUcOallocatorlETVirtualArraymUgRsPgR = { "vector<TVirtualArray*,allocator<TVirtualArray*> >" , 99 , -1 };
+G__linked_taginfo G__TComptonTelescopeProcessDataDictLN_reverse_iteratorlEvectorlETVirtualArraymUcOallocatorlETVirtualArraymUgRsPgRcLcLiteratorgR = { "reverse_iterator<vector<TVirtualArray*,allocator<TVirtualArray*> >::iterator>" , 99 , -1 };
+G__linked_taginfo G__TComptonTelescopeProcessDataDictLN_TComptonTelescopeProcessData = { "TComptonTelescopeProcessData" , 99 , -1 };
+
+/* Reset class/struct taginfo */
+extern "C" void G__cpp_reset_tagtableTComptonTelescopeProcessDataDict() {
+  G__TComptonTelescopeProcessDataDictLN_TClass.tagnum = -1 ;
+  G__TComptonTelescopeProcessDataDictLN_TBuffer.tagnum = -1 ;
+  G__TComptonTelescopeProcessDataDictLN_TMemberInspector.tagnum = -1 ;
+  G__TComptonTelescopeProcessDataDictLN_TObject.tagnum = -1 ;
+  G__TComptonTelescopeProcessDataDictLN_vectorlEunsignedsPshortcOallocatorlEunsignedsPshortgRsPgR.tagnum = -1 ;
+  G__TComptonTelescopeProcessDataDictLN_vectorlEdoublecOallocatorlEdoublegRsPgR.tagnum = -1 ;
+  G__TComptonTelescopeProcessDataDictLN_vectorlEROOTcLcLTSchemaHelpercOallocatorlEROOTcLcLTSchemaHelpergRsPgR.tagnum = -1 ;
+  G__TComptonTelescopeProcessDataDictLN_reverse_iteratorlEvectorlEROOTcLcLTSchemaHelpercOallocatorlEROOTcLcLTSchemaHelpergRsPgRcLcLiteratorgR.tagnum = -1 ;
+  G__TComptonTelescopeProcessDataDictLN_vectorlETVirtualArraymUcOallocatorlETVirtualArraymUgRsPgR.tagnum = -1 ;
+  G__TComptonTelescopeProcessDataDictLN_reverse_iteratorlEvectorlETVirtualArraymUcOallocatorlETVirtualArraymUgRsPgRcLcLiteratorgR.tagnum = -1 ;
+  G__TComptonTelescopeProcessDataDictLN_TComptonTelescopeProcessData.tagnum = -1 ;
+}
+
+
+extern "C" void G__cpp_setup_tagtableTComptonTelescopeProcessDataDict() {
+
+   /* Setting up class,struct,union tag entry */
+   G__get_linked_tagnum_fwd(&G__TComptonTelescopeProcessDataDictLN_TClass);
+   G__get_linked_tagnum_fwd(&G__TComptonTelescopeProcessDataDictLN_TBuffer);
+   G__get_linked_tagnum_fwd(&G__TComptonTelescopeProcessDataDictLN_TMemberInspector);
+   G__get_linked_tagnum_fwd(&G__TComptonTelescopeProcessDataDictLN_TObject);
+   G__get_linked_tagnum_fwd(&G__TComptonTelescopeProcessDataDictLN_vectorlEunsignedsPshortcOallocatorlEunsignedsPshortgRsPgR);
+   G__get_linked_tagnum_fwd(&G__TComptonTelescopeProcessDataDictLN_vectorlEdoublecOallocatorlEdoublegRsPgR);
+   G__get_linked_tagnum_fwd(&G__TComptonTelescopeProcessDataDictLN_vectorlEROOTcLcLTSchemaHelpercOallocatorlEROOTcLcLTSchemaHelpergRsPgR);
+   G__get_linked_tagnum_fwd(&G__TComptonTelescopeProcessDataDictLN_reverse_iteratorlEvectorlEROOTcLcLTSchemaHelpercOallocatorlEROOTcLcLTSchemaHelpergRsPgRcLcLiteratorgR);
+   G__get_linked_tagnum_fwd(&G__TComptonTelescopeProcessDataDictLN_vectorlETVirtualArraymUcOallocatorlETVirtualArraymUgRsPgR);
+   G__get_linked_tagnum_fwd(&G__TComptonTelescopeProcessDataDictLN_reverse_iteratorlEvectorlETVirtualArraymUcOallocatorlETVirtualArraymUgRsPgRcLcLiteratorgR);
+   G__tagtable_setup(G__get_linked_tagnum_fwd(&G__TComptonTelescopeProcessDataDictLN_TComptonTelescopeProcessData),sizeof(TComptonTelescopeProcessData),-1,29952,"ComptonTelescopeProcessData structure",G__setup_memvarTComptonTelescopeProcessData,G__setup_memfuncTComptonTelescopeProcessData);
+}
+extern "C" void G__cpp_setupTComptonTelescopeProcessDataDict(void) {
+  G__check_setup_version(30051515,"G__cpp_setupTComptonTelescopeProcessDataDict()");
+  G__set_cpp_environmentTComptonTelescopeProcessDataDict();
+  G__cpp_setup_tagtableTComptonTelescopeProcessDataDict();
+
+  G__cpp_setup_inheritanceTComptonTelescopeProcessDataDict();
+
+  G__cpp_setup_typetableTComptonTelescopeProcessDataDict();
+
+  G__cpp_setup_memvarTComptonTelescopeProcessDataDict();
+
+  G__cpp_setup_memfuncTComptonTelescopeProcessDataDict();
+  G__cpp_setup_globalTComptonTelescopeProcessDataDict();
+  G__cpp_setup_funcTComptonTelescopeProcessDataDict();
+
+   if(0==G__getsizep2memfunc()) G__get_sizep2memfuncTComptonTelescopeProcessDataDict();
+  return;
+}
+class G__cpp_setup_initTComptonTelescopeProcessDataDict {
+  public:
+    G__cpp_setup_initTComptonTelescopeProcessDataDict() { G__add_setup_func("TComptonTelescopeProcessDataDict",(G__incsetup)(&G__cpp_setupTComptonTelescopeProcessDataDict)); G__call_setup_funcs(); }
+   ~G__cpp_setup_initTComptonTelescopeProcessDataDict() { G__remove_setup_func("TComptonTelescopeProcessDataDict"); }
+};
+G__cpp_setup_initTComptonTelescopeProcessDataDict G__cpp_setup_initializerTComptonTelescopeProcessDataDict;
+
diff --git a/NPLib/ComptonTelescope/TComptonTelescopeProcessDataDict.h b/NPLib/ComptonTelescope/TComptonTelescopeProcessDataDict.h
new file mode 100644
index 0000000000000000000000000000000000000000..9957accfe2d3e37aeed67d87e1acf736fe23f8d5
--- /dev/null
+++ b/NPLib/ComptonTelescope/TComptonTelescopeProcessDataDict.h
@@ -0,0 +1,54 @@
+/********************************************************************
+* TComptonTelescopeProcessDataDict.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 TComptonTelescopeProcessDataDict.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_tagtableTComptonTelescopeProcessDataDict();
+extern void G__cpp_setup_inheritanceTComptonTelescopeProcessDataDict();
+extern void G__cpp_setup_typetableTComptonTelescopeProcessDataDict();
+extern void G__cpp_setup_memvarTComptonTelescopeProcessDataDict();
+extern void G__cpp_setup_globalTComptonTelescopeProcessDataDict();
+extern void G__cpp_setup_memfuncTComptonTelescopeProcessDataDict();
+extern void G__cpp_setup_funcTComptonTelescopeProcessDataDict();
+extern void G__set_cpp_environmentTComptonTelescopeProcessDataDict();
+}
+
+
+#include "TObject.h"
+#include "TMemberInspector.h"
+#include "TComptonTelescopeProcessData.h"
+#include <algorithm>
+namespace std { }
+using namespace std;
+
+#ifndef G__MEMFUNCBODY
+#endif
+
+extern G__linked_taginfo G__TComptonTelescopeProcessDataDictLN_TClass;
+extern G__linked_taginfo G__TComptonTelescopeProcessDataDictLN_TBuffer;
+extern G__linked_taginfo G__TComptonTelescopeProcessDataDictLN_TMemberInspector;
+extern G__linked_taginfo G__TComptonTelescopeProcessDataDictLN_TObject;
+extern G__linked_taginfo G__TComptonTelescopeProcessDataDictLN_vectorlEunsignedsPshortcOallocatorlEunsignedsPshortgRsPgR;
+extern G__linked_taginfo G__TComptonTelescopeProcessDataDictLN_vectorlEdoublecOallocatorlEdoublegRsPgR;
+extern G__linked_taginfo G__TComptonTelescopeProcessDataDictLN_vectorlEROOTcLcLTSchemaHelpercOallocatorlEROOTcLcLTSchemaHelpergRsPgR;
+extern G__linked_taginfo G__TComptonTelescopeProcessDataDictLN_reverse_iteratorlEvectorlEROOTcLcLTSchemaHelpercOallocatorlEROOTcLcLTSchemaHelpergRsPgRcLcLiteratorgR;
+extern G__linked_taginfo G__TComptonTelescopeProcessDataDictLN_vectorlETVirtualArraymUcOallocatorlETVirtualArraymUgRsPgR;
+extern G__linked_taginfo G__TComptonTelescopeProcessDataDictLN_reverse_iteratorlEvectorlETVirtualArraymUcOallocatorlETVirtualArraymUgRsPgRcLcLiteratorgR;
+extern G__linked_taginfo G__TComptonTelescopeProcessDataDictLN_TComptonTelescopeProcessData;
+
+/* STUB derived class for protected member access */
diff --git a/NPLib/Eurogam/Makefile b/NPLib/Eurogam/Makefile
new file mode 100755
index 0000000000000000000000000000000000000000..745f0249cc2a2c2fcbc768a10cb62faa8b8681eb
--- /dev/null
+++ b/NPLib/Eurogam/Makefile
@@ -0,0 +1,37 @@
+include ../Makefile.arch
+ 
+
+#------------------------------------------------------------------------------
+SHARELIB      =  libEurogamData.so 
+
+all:            $(SHARELIB)
+#------------------------------------------------------------------------------
+
+############### Detector ##############
+
+## Eurogam ##
+libEurogamData.so:	TEurogamData.o	TEurogamDataDict.o
+			$(LD) $(SOFLAGS) $^ $(OutPutOpt) $@
+
+TEurogamDataDict.cxx:	TEurogamData.h
+			rootcint -f $@ -c $^
+
+# dependances
+TEurogamData.o:	TEurogamData.cxx	TEurogamData.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/Eurogam/TEurogamData.cxx b/NPLib/Eurogam/TEurogamData.cxx
new file mode 100755
index 0000000000000000000000000000000000000000..0511c1536478b01c3560f5dd26ece0d6ac93f2bb
--- /dev/null
+++ b/NPLib/Eurogam/TEurogamData.cxx
@@ -0,0 +1,56 @@
+#include <iostream>
+#include "TEurogamData.h"
+/*****************************************************************************
+ * 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: N. de Sereville  contact address: deserevi@ipno.in2p3.fr *
+ *                                                                           *
+ * Creation Date  : October 2009                                             *
+ * Last update    :                                                          *
+ *---------------------------------------------------------------------------*
+ * Decription:                                                               *
+ *  This class described the raw data of a Eurogam germanium detector        *
+ *                                                                           *
+ *                                                                           *
+ *---------------------------------------------------------------------------*
+ * Comment:                                                                  *
+ *                                                                           *
+ *                                                                           *
+ *****************************************************************************/
+
+ClassImp(TEurogamData)
+
+TEurogamData::TEurogamData()
+{
+}
+
+
+
+TEurogamData::~TEurogamData()
+{
+}
+
+
+
+void TEurogamData::Clear()
+{
+   fEurogam_DetectorNumber.clear();
+   fEurogam_Energy.clear();
+   fEurogam_Time.clear();
+}
+
+
+
+void TEurogamData::Dump() const
+{
+   cout << "XXXXXXXXXXX TEurogamData: New Event XXXXXXXXXXXXXXXXX" << endl;
+
+	for (UShort_t i = 0 ; i < fEurogam_DetectorNumber.size(); i ++) {
+      cout << "Eurogam Number " << fEurogam_DetectorNumber[i] << " Energy: " << fEurogam_Energy[i]  << " Time: "<< fEurogam_Time[i] << endl;
+   }
+}
diff --git a/NPLib/Eurogam/TEurogamData.h b/NPLib/Eurogam/TEurogamData.h
new file mode 100755
index 0000000000000000000000000000000000000000..c2e81d5d3859012df91edb4a41072af70a511e08
--- /dev/null
+++ b/NPLib/Eurogam/TEurogamData.h
@@ -0,0 +1,62 @@
+#ifndef __EurogamDATA__
+#define __EurogamDATA__
+/*****************************************************************************
+ * 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: N. de Sereville  contact address: deserevi@ipno.in2p3.fr *
+ *                                                                           *
+ * Creation Date  : October 2009                                             *
+ * Last update    :                                                          *
+ *---------------------------------------------------------------------------*
+ * Decription:                                                               *
+ *  This class described the raw data of a Eurogam germanium detector        *
+ *                                                                           *
+ *                                                                           *
+ *---------------------------------------------------------------------------*
+ * Comment:                                                                  *
+ *                                                                           *
+ *                                                                           *
+ *****************************************************************************/
+#include <vector>
+
+#include "TObject.h"
+using namespace std ;
+
+
+class TEurogamData : public TObject {
+ private:
+   vector<UShort_t>     fEurogam_DetectorNumber;
+   vector<Double_t>     fEurogam_Energy;	
+   vector<Double_t>     fEurogam_Time;
+   
+ public:
+   TEurogamData();
+   virtual ~TEurogamData();
+
+   void	Clear();
+   void	Clear(const Option_t*) {};
+   void	Dump() const;
+
+   /////////////////////           GETTERS           ////////////////////////
+   UShort_t GetEurogamDetectorNumber(Int_t i)   {return fEurogam_DetectorNumber.at(i);}
+   Double_t	GetEurogamEnergy(Int_t i)           {return fEurogam_Energy.at(i);}
+   Double_t GetEurogamTime(Int_t i)             {return fEurogam_Time.at(i);}
+
+   Double_t GetEurogamEnergyMult()              {return fEurogam_Energy.size();}
+   Double_t GetEurogamTimeMult()                {return fEurogam_Time.size();}
+   
+   
+   /////////////////////           SETTERS           ////////////////////////
+   void	SetEurogamDetectorNumber(Int_t N)      {fEurogam_DetectorNumber.push_back(N);}
+   void	SetEurogamEnergy(Double_t E)           {fEurogam_Energy.push_back(E);}
+   void	SetEurogamTime(Double_t T)             {fEurogam_Time.push_back(T);}
+   
+   ClassDef(TEurogamData,1)  // EurogamData structure
+};
+
+#endif
diff --git a/NPLib/Eurogam/TEurogamDataDict.cxx b/NPLib/Eurogam/TEurogamDataDict.cxx
new file mode 100644
index 0000000000000000000000000000000000000000..e187cc5de0600099434503b814549db34582858b
--- /dev/null
+++ b/NPLib/Eurogam/TEurogamDataDict.cxx
@@ -0,0 +1,897 @@
+//
+// File generated by rootcint at Tue Jul 17 16:40:49 2012
+
+// Do NOT change. Changes will be lost next time file is generated
+//
+
+#define R__DICTIONARY_FILENAME TEurogamDataDict
+#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 "TEurogamDataDict.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 TEurogamData_ShowMembers(void *obj, TMemberInspector &R__insp);
+   static void *new_TEurogamData(void *p = 0);
+   static void *newArray_TEurogamData(Long_t size, void *p);
+   static void delete_TEurogamData(void *p);
+   static void deleteArray_TEurogamData(void *p);
+   static void destruct_TEurogamData(void *p);
+   static void streamer_TEurogamData(TBuffer &buf, void *obj);
+
+   // Function generating the singleton type initializer
+   static TGenericClassInfo *GenerateInitInstanceLocal(const ::TEurogamData*)
+   {
+      ::TEurogamData *ptr = 0;
+      static ::TVirtualIsAProxy* isa_proxy = new ::TInstrumentedIsAProxy< ::TEurogamData >(0);
+      static ::ROOT::TGenericClassInfo 
+         instance("TEurogamData", ::TEurogamData::Class_Version(), "./TEurogamData.h", 31,
+                  typeid(::TEurogamData), DefineBehavior(ptr, ptr),
+                  &::TEurogamData::Dictionary, isa_proxy, 0,
+                  sizeof(::TEurogamData) );
+      instance.SetNew(&new_TEurogamData);
+      instance.SetNewArray(&newArray_TEurogamData);
+      instance.SetDelete(&delete_TEurogamData);
+      instance.SetDeleteArray(&deleteArray_TEurogamData);
+      instance.SetDestructor(&destruct_TEurogamData);
+      instance.SetStreamerFunc(&streamer_TEurogamData);
+      return &instance;
+   }
+   TGenericClassInfo *GenerateInitInstance(const ::TEurogamData*)
+   {
+      return GenerateInitInstanceLocal((::TEurogamData*)0);
+   }
+   // Static variable to force the class initialization
+   static ::ROOT::TGenericClassInfo *_R__UNIQUE_(Init) = GenerateInitInstanceLocal((const ::TEurogamData*)0x0); R__UseDummy(_R__UNIQUE_(Init));
+} // end of namespace ROOT
+
+//______________________________________________________________________________
+TClass *TEurogamData::fgIsA = 0;  // static to hold class pointer
+
+//______________________________________________________________________________
+const char *TEurogamData::Class_Name()
+{
+   return "TEurogamData";
+}
+
+//______________________________________________________________________________
+const char *TEurogamData::ImplFileName()
+{
+   return ::ROOT::GenerateInitInstanceLocal((const ::TEurogamData*)0x0)->GetImplFileName();
+}
+
+//______________________________________________________________________________
+int TEurogamData::ImplFileLine()
+{
+   return ::ROOT::GenerateInitInstanceLocal((const ::TEurogamData*)0x0)->GetImplFileLine();
+}
+
+//______________________________________________________________________________
+void TEurogamData::Dictionary()
+{
+   fgIsA = ::ROOT::GenerateInitInstanceLocal((const ::TEurogamData*)0x0)->GetClass();
+}
+
+//______________________________________________________________________________
+TClass *TEurogamData::Class()
+{
+   if (!fgIsA) fgIsA = ::ROOT::GenerateInitInstanceLocal((const ::TEurogamData*)0x0)->GetClass();
+   return fgIsA;
+}
+
+//______________________________________________________________________________
+void TEurogamData::Streamer(TBuffer &R__b)
+{
+   // Stream an object of class TEurogamData.
+
+   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 =  fEurogam_DetectorNumber;
+         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 =  fEurogam_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 =  fEurogam_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, TEurogamData::IsA());
+   } else {
+      R__c = R__b.WriteVersion(TEurogamData::IsA(), kTRUE);
+      TObject::Streamer(R__b);
+      {
+         vector<UShort_t> &R__stl =  fEurogam_DetectorNumber;
+         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 =  fEurogam_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 =  fEurogam_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 TEurogamData::ShowMembers(TMemberInspector &R__insp)
+{
+      // Inspect the data members of an object of class TEurogamData.
+      TClass *R__cl = ::TEurogamData::IsA();
+      if (R__cl || R__insp.IsA()) { }
+      R__insp.Inspect(R__cl, R__insp.GetParent(), "fEurogam_DetectorNumber", (void*)&fEurogam_DetectorNumber);
+      R__insp.InspectMember("vector<UShort_t>", (void*)&fEurogam_DetectorNumber, "fEurogam_DetectorNumber.", false);
+      R__insp.Inspect(R__cl, R__insp.GetParent(), "fEurogam_Energy", (void*)&fEurogam_Energy);
+      R__insp.InspectMember("vector<Double_t>", (void*)&fEurogam_Energy, "fEurogam_Energy.", false);
+      R__insp.Inspect(R__cl, R__insp.GetParent(), "fEurogam_Time", (void*)&fEurogam_Time);
+      R__insp.InspectMember("vector<Double_t>", (void*)&fEurogam_Time, "fEurogam_Time.", false);
+      TObject::ShowMembers(R__insp);
+}
+
+namespace ROOT {
+   // Wrappers around operator new
+   static void *new_TEurogamData(void *p) {
+      return  p ? new(p) ::TEurogamData : new ::TEurogamData;
+   }
+   static void *newArray_TEurogamData(Long_t nElements, void *p) {
+      return p ? new(p) ::TEurogamData[nElements] : new ::TEurogamData[nElements];
+   }
+   // Wrapper around operator delete
+   static void delete_TEurogamData(void *p) {
+      delete ((::TEurogamData*)p);
+   }
+   static void deleteArray_TEurogamData(void *p) {
+      delete [] ((::TEurogamData*)p);
+   }
+   static void destruct_TEurogamData(void *p) {
+      typedef ::TEurogamData current_t;
+      ((current_t*)p)->~current_t();
+   }
+   // Wrapper around a custom streamer member function.
+   static void streamer_TEurogamData(TBuffer &buf, void *obj) {
+      ((::TEurogamData*)obj)->::TEurogamData::Streamer(buf);
+   }
+} // end of namespace ROOT for class ::TEurogamData
+
+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>
+
+/********************************************************
+* TEurogamDataDict.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_tagtableTEurogamDataDict();
+
+extern "C" void G__set_cpp_environmentTEurogamDataDict() {
+  G__add_compiledheader("TObject.h");
+  G__add_compiledheader("TMemberInspector.h");
+  G__add_compiledheader("TEurogamData.h");
+  G__cpp_reset_tagtableTEurogamDataDict();
+}
+#include <new>
+extern "C" int G__cpp_dllrevTEurogamDataDict() { return(30051515); }
+
+/*********************************************************
+* Member function Interface Method
+*********************************************************/
+
+/* TEurogamData */
+static int G__TEurogamDataDict_162_0_1(G__value* result7, G__CONST char* funcname, struct G__param* libp, int hash)
+{
+   TEurogamData* p = NULL;
+   char* gvp = (char*) G__getgvp();
+   int n = G__getaryconstruct();
+   if (n) {
+     if ((gvp == (char*)G__PVOID) || (gvp == 0)) {
+       p = new TEurogamData[n];
+     } else {
+       p = new((void*) gvp) TEurogamData[n];
+     }
+   } else {
+     if ((gvp == (char*)G__PVOID) || (gvp == 0)) {
+       p = new TEurogamData;
+     } else {
+       p = new((void*) gvp) TEurogamData;
+     }
+   }
+   result7->obj.i = (long) p;
+   result7->ref = (long) p;
+   G__set_tagnum(result7,G__get_linked_tagnum(&G__TEurogamDataDictLN_TEurogamData));
+   return(1 || funcname || hash || result7 || libp) ;
+}
+
+static int G__TEurogamDataDict_162_0_2(G__value* result7, G__CONST char* funcname, struct G__param* libp, int hash)
+{
+      ((TEurogamData*) G__getstructoffset())->Clear();
+      G__setnull(result7);
+   return(1 || funcname || hash || result7 || libp) ;
+}
+
+static int G__TEurogamDataDict_162_0_5(G__value* result7, G__CONST char* funcname, struct G__param* libp, int hash)
+{
+      G__letint(result7, 114, (long) ((TEurogamData*) G__getstructoffset())->GetEurogamDetectorNumber((Int_t) G__int(libp->para[0])));
+   return(1 || funcname || hash || result7 || libp) ;
+}
+
+static int G__TEurogamDataDict_162_0_6(G__value* result7, G__CONST char* funcname, struct G__param* libp, int hash)
+{
+      G__letdouble(result7, 100, (double) ((TEurogamData*) G__getstructoffset())->GetEurogamEnergy((Int_t) G__int(libp->para[0])));
+   return(1 || funcname || hash || result7 || libp) ;
+}
+
+static int G__TEurogamDataDict_162_0_7(G__value* result7, G__CONST char* funcname, struct G__param* libp, int hash)
+{
+      G__letdouble(result7, 100, (double) ((TEurogamData*) G__getstructoffset())->GetEurogamTime((Int_t) G__int(libp->para[0])));
+   return(1 || funcname || hash || result7 || libp) ;
+}
+
+static int G__TEurogamDataDict_162_0_8(G__value* result7, G__CONST char* funcname, struct G__param* libp, int hash)
+{
+      G__letdouble(result7, 100, (double) ((TEurogamData*) G__getstructoffset())->GetEurogamEnergyMult());
+   return(1 || funcname || hash || result7 || libp) ;
+}
+
+static int G__TEurogamDataDict_162_0_9(G__value* result7, G__CONST char* funcname, struct G__param* libp, int hash)
+{
+      G__letdouble(result7, 100, (double) ((TEurogamData*) G__getstructoffset())->GetEurogamTimeMult());
+   return(1 || funcname || hash || result7 || libp) ;
+}
+
+static int G__TEurogamDataDict_162_0_10(G__value* result7, G__CONST char* funcname, struct G__param* libp, int hash)
+{
+      ((TEurogamData*) G__getstructoffset())->SetEurogamDetectorNumber((Int_t) G__int(libp->para[0]));
+      G__setnull(result7);
+   return(1 || funcname || hash || result7 || libp) ;
+}
+
+static int G__TEurogamDataDict_162_0_11(G__value* result7, G__CONST char* funcname, struct G__param* libp, int hash)
+{
+      ((TEurogamData*) G__getstructoffset())->SetEurogamEnergy((Double_t) G__double(libp->para[0]));
+      G__setnull(result7);
+   return(1 || funcname || hash || result7 || libp) ;
+}
+
+static int G__TEurogamDataDict_162_0_12(G__value* result7, G__CONST char* funcname, struct G__param* libp, int hash)
+{
+      ((TEurogamData*) G__getstructoffset())->SetEurogamTime((Double_t) G__double(libp->para[0]));
+      G__setnull(result7);
+   return(1 || funcname || hash || result7 || libp) ;
+}
+
+static int G__TEurogamDataDict_162_0_13(G__value* result7, G__CONST char* funcname, struct G__param* libp, int hash)
+{
+      G__letint(result7, 85, (long) TEurogamData::Class());
+   return(1 || funcname || hash || result7 || libp) ;
+}
+
+static int G__TEurogamDataDict_162_0_14(G__value* result7, G__CONST char* funcname, struct G__param* libp, int hash)
+{
+      G__letint(result7, 67, (long) TEurogamData::Class_Name());
+   return(1 || funcname || hash || result7 || libp) ;
+}
+
+static int G__TEurogamDataDict_162_0_15(G__value* result7, G__CONST char* funcname, struct G__param* libp, int hash)
+{
+      G__letint(result7, 115, (long) TEurogamData::Class_Version());
+   return(1 || funcname || hash || result7 || libp) ;
+}
+
+static int G__TEurogamDataDict_162_0_16(G__value* result7, G__CONST char* funcname, struct G__param* libp, int hash)
+{
+      TEurogamData::Dictionary();
+      G__setnull(result7);
+   return(1 || funcname || hash || result7 || libp) ;
+}
+
+static int G__TEurogamDataDict_162_0_20(G__value* result7, G__CONST char* funcname, struct G__param* libp, int hash)
+{
+      ((TEurogamData*) G__getstructoffset())->StreamerNVirtual(*(TBuffer*) libp->para[0].ref);
+      G__setnull(result7);
+   return(1 || funcname || hash || result7 || libp) ;
+}
+
+static int G__TEurogamDataDict_162_0_21(G__value* result7, G__CONST char* funcname, struct G__param* libp, int hash)
+{
+      G__letint(result7, 67, (long) TEurogamData::DeclFileName());
+   return(1 || funcname || hash || result7 || libp) ;
+}
+
+static int G__TEurogamDataDict_162_0_22(G__value* result7, G__CONST char* funcname, struct G__param* libp, int hash)
+{
+      G__letint(result7, 105, (long) TEurogamData::ImplFileLine());
+   return(1 || funcname || hash || result7 || libp) ;
+}
+
+static int G__TEurogamDataDict_162_0_23(G__value* result7, G__CONST char* funcname, struct G__param* libp, int hash)
+{
+      G__letint(result7, 67, (long) TEurogamData::ImplFileName());
+   return(1 || funcname || hash || result7 || libp) ;
+}
+
+static int G__TEurogamDataDict_162_0_24(G__value* result7, G__CONST char* funcname, struct G__param* libp, int hash)
+{
+      G__letint(result7, 105, (long) TEurogamData::DeclFileLine());
+   return(1 || funcname || hash || result7 || libp) ;
+}
+
+// automatic copy constructor
+static int G__TEurogamDataDict_162_0_25(G__value* result7, G__CONST char* funcname, struct G__param* libp, int hash)
+
+{
+   TEurogamData* p;
+   void* tmp = (void*) G__int(libp->para[0]);
+   p = new TEurogamData(*(TEurogamData*) tmp);
+   result7->obj.i = (long) p;
+   result7->ref = (long) p;
+   G__set_tagnum(result7,G__get_linked_tagnum(&G__TEurogamDataDictLN_TEurogamData));
+   return(1 || funcname || hash || result7 || libp) ;
+}
+
+// automatic destructor
+typedef TEurogamData G__TTEurogamData;
+static int G__TEurogamDataDict_162_0_26(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[] (TEurogamData*) soff;
+     } else {
+       G__setgvp((long) G__PVOID);
+       for (int i = n - 1; i >= 0; --i) {
+         ((TEurogamData*) (soff+(sizeof(TEurogamData)*i)))->~G__TTEurogamData();
+       }
+       G__setgvp((long)gvp);
+     }
+   } else {
+     if (gvp == (char*)G__PVOID) {
+       delete (TEurogamData*) soff;
+     } else {
+       G__setgvp((long) G__PVOID);
+       ((TEurogamData*) (soff))->~G__TTEurogamData();
+       G__setgvp((long)gvp);
+     }
+   }
+   G__setnull(result7);
+   return(1 || funcname || hash || result7 || libp) ;
+}
+
+// automatic assignment operator
+static int G__TEurogamDataDict_162_0_27(G__value* result7, G__CONST char* funcname, struct G__param* libp, int hash)
+{
+   TEurogamData* dest = (TEurogamData*) G__getstructoffset();
+   *dest = *(TEurogamData*) libp->para[0].ref;
+   const TEurogamData& obj = *dest;
+   result7->ref = (long) (&obj);
+   result7->obj.i = (long) (&obj);
+   return(1 || funcname || hash || result7 || libp) ;
+}
+
+
+/* Setting up global function */
+
+/*********************************************************
+* Member function Stub
+*********************************************************/
+
+/* TEurogamData */
+
+/*********************************************************
+* Global function Stub
+*********************************************************/
+
+/*********************************************************
+* Get size of pointer to member function
+*********************************************************/
+class G__Sizep2memfuncTEurogamDataDict {
+ public:
+  G__Sizep2memfuncTEurogamDataDict(): p(&G__Sizep2memfuncTEurogamDataDict::sizep2memfunc) {}
+    size_t sizep2memfunc() { return(sizeof(p)); }
+  private:
+    size_t (G__Sizep2memfuncTEurogamDataDict::*p)();
+};
+
+size_t G__get_sizep2memfuncTEurogamDataDict()
+{
+  G__Sizep2memfuncTEurogamDataDict 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_inheritanceTEurogamDataDict() {
+
+   /* Setting up class inheritance */
+   if(0==G__getnumbaseclass(G__get_linked_tagnum(&G__TEurogamDataDictLN_TEurogamData))) {
+     TEurogamData *G__Lderived;
+     G__Lderived=(TEurogamData*)0x1000;
+     {
+       TObject *G__Lpbase=(TObject*)G__Lderived;
+       G__inheritance_setup(G__get_linked_tagnum(&G__TEurogamDataDictLN_TEurogamData),G__get_linked_tagnum(&G__TEurogamDataDictLN_TObject),(long)G__Lpbase-(long)G__Lderived,1,1);
+     }
+   }
+}
+
+/*********************************************************
+* typedef information setup/
+*********************************************************/
+extern "C" void G__cpp_setup_typetableTEurogamDataDict() {
+
+   /* 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("Int_t",105,-1,0,-1);
+   G__setnewtype(-1,"Signed integer 4 bytes (int)",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__TEurogamDataDictLN_vectorlEROOTcLcLTSchemaHelpercOallocatorlEROOTcLcLTSchemaHelpergRsPgR),0,-1);
+   G__setnewtype(-1,NULL,0);
+   G__search_typename2("reverse_iterator<const_iterator>",117,G__get_linked_tagnum(&G__TEurogamDataDictLN_reverse_iteratorlEvectorlEROOTcLcLTSchemaHelpercOallocatorlEROOTcLcLTSchemaHelpergRsPgRcLcLiteratorgR),0,G__get_linked_tagnum(&G__TEurogamDataDictLN_vectorlEROOTcLcLTSchemaHelpercOallocatorlEROOTcLcLTSchemaHelpergRsPgR));
+   G__setnewtype(-1,NULL,0);
+   G__search_typename2("reverse_iterator<iterator>",117,G__get_linked_tagnum(&G__TEurogamDataDictLN_reverse_iteratorlEvectorlEROOTcLcLTSchemaHelpercOallocatorlEROOTcLcLTSchemaHelpergRsPgRcLcLiteratorgR),0,G__get_linked_tagnum(&G__TEurogamDataDictLN_vectorlEROOTcLcLTSchemaHelpercOallocatorlEROOTcLcLTSchemaHelpergRsPgR));
+   G__setnewtype(-1,NULL,0);
+   G__search_typename2("vector<TVirtualArray*>",117,G__get_linked_tagnum(&G__TEurogamDataDictLN_vectorlETVirtualArraymUcOallocatorlETVirtualArraymUgRsPgR),0,-1);
+   G__setnewtype(-1,NULL,0);
+   G__search_typename2("reverse_iterator<const_iterator>",117,G__get_linked_tagnum(&G__TEurogamDataDictLN_reverse_iteratorlEvectorlETVirtualArraymUcOallocatorlETVirtualArraymUgRsPgRcLcLiteratorgR),0,G__get_linked_tagnum(&G__TEurogamDataDictLN_vectorlETVirtualArraymUcOallocatorlETVirtualArraymUgRsPgR));
+   G__setnewtype(-1,NULL,0);
+   G__search_typename2("reverse_iterator<iterator>",117,G__get_linked_tagnum(&G__TEurogamDataDictLN_reverse_iteratorlEvectorlETVirtualArraymUcOallocatorlETVirtualArraymUgRsPgRcLcLiteratorgR),0,G__get_linked_tagnum(&G__TEurogamDataDictLN_vectorlETVirtualArraymUcOallocatorlETVirtualArraymUgRsPgR));
+   G__setnewtype(-1,NULL,0);
+   G__search_typename2("vector<UShort_t>",117,G__get_linked_tagnum(&G__TEurogamDataDictLN_vectorlEunsignedsPshortcOallocatorlEunsignedsPshortgRsPgR),0,-1);
+   G__setnewtype(-1,NULL,0);
+   G__search_typename2("vector<Double_t>",117,G__get_linked_tagnum(&G__TEurogamDataDictLN_vectorlEdoublecOallocatorlEdoublegRsPgR),0,-1);
+   G__setnewtype(-1,NULL,0);
+}
+
+/*********************************************************
+* Data Member information setup/
+*********************************************************/
+
+   /* Setting up class,struct,union tag member variable */
+
+   /* TEurogamData */
+static void G__setup_memvarTEurogamData(void) {
+   G__tag_memvar_setup(G__get_linked_tagnum(&G__TEurogamDataDictLN_TEurogamData));
+   { TEurogamData *p; p=(TEurogamData*)0x1000; if (p) { }
+   G__memvar_setup((void*)0,117,0,0,G__get_linked_tagnum(&G__TEurogamDataDictLN_vectorlEunsignedsPshortcOallocatorlEunsignedsPshortgRsPgR),G__defined_typename("vector<UShort_t>"),-1,4,"fEurogam_DetectorNumber=",0,(char*)NULL);
+   G__memvar_setup((void*)0,117,0,0,G__get_linked_tagnum(&G__TEurogamDataDictLN_vectorlEdoublecOallocatorlEdoublegRsPgR),G__defined_typename("vector<Double_t>"),-1,4,"fEurogam_Energy=",0,(char*)NULL);
+   G__memvar_setup((void*)0,117,0,0,G__get_linked_tagnum(&G__TEurogamDataDictLN_vectorlEdoublecOallocatorlEdoublegRsPgR),G__defined_typename("vector<Double_t>"),-1,4,"fEurogam_Time=",0,(char*)NULL);
+   G__memvar_setup((void*)0,85,0,0,G__get_linked_tagnum(&G__TEurogamDataDictLN_TClass),-1,-2,4,"fgIsA=",0,(char*)NULL);
+   }
+   G__tag_memvar_reset();
+}
+
+extern "C" void G__cpp_setup_memvarTEurogamDataDict() {
+}
+/***********************************************************
+************************************************************
+************************************************************
+************************************************************
+************************************************************
+************************************************************
+************************************************************
+***********************************************************/
+
+/*********************************************************
+* Member function information setup for each class
+*********************************************************/
+static void G__setup_memfuncTEurogamData(void) {
+   /* TEurogamData */
+   G__tag_memfunc_setup(G__get_linked_tagnum(&G__TEurogamDataDictLN_TEurogamData));
+   G__memfunc_setup("TEurogamData",1182,G__TEurogamDataDict_162_0_1, 105, G__get_linked_tagnum(&G__TEurogamDataDictLN_TEurogamData), -1, 0, 0, 1, 1, 0, "", (char*)NULL, (void*) NULL, 0);
+   G__memfunc_setup("Clear",487,G__TEurogamDataDict_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("GetEurogamDetectorNumber",2451,G__TEurogamDataDict_162_0_5, 114, -1, G__defined_typename("UShort_t"), 0, 1, 1, 1, 0, "i - 'Int_t' 0 - i", (char*)NULL, (void*) NULL, 0);
+   G__memfunc_setup("GetEurogamEnergy",1626,G__TEurogamDataDict_162_0_6, 100, -1, G__defined_typename("Double_t"), 0, 1, 1, 1, 0, "i - 'Int_t' 0 - i", (char*)NULL, (void*) NULL, 0);
+   G__memfunc_setup("GetEurogamTime",1407,G__TEurogamDataDict_162_0_7, 100, -1, G__defined_typename("Double_t"), 0, 1, 1, 1, 0, "i - 'Int_t' 0 - i", (char*)NULL, (void*) NULL, 0);
+   G__memfunc_setup("GetEurogamEnergyMult",2044,G__TEurogamDataDict_162_0_8, 100, -1, G__defined_typename("Double_t"), 0, 0, 1, 1, 0, "", (char*)NULL, (void*) NULL, 0);
+   G__memfunc_setup("GetEurogamTimeMult",1825,G__TEurogamDataDict_162_0_9, 100, -1, G__defined_typename("Double_t"), 0, 0, 1, 1, 0, "", (char*)NULL, (void*) NULL, 0);
+   G__memfunc_setup("SetEurogamDetectorNumber",2463,G__TEurogamDataDict_162_0_10, 121, -1, -1, 0, 1, 1, 1, 0, "i - 'Int_t' 0 - N", (char*)NULL, (void*) NULL, 0);
+   G__memfunc_setup("SetEurogamEnergy",1638,G__TEurogamDataDict_162_0_11, 121, -1, -1, 0, 1, 1, 1, 0, "d - 'Double_t' 0 - E", (char*)NULL, (void*) NULL, 0);
+   G__memfunc_setup("SetEurogamTime",1419,G__TEurogamDataDict_162_0_12, 121, -1, -1, 0, 1, 1, 1, 0, "d - 'Double_t' 0 - T", (char*)NULL, (void*) NULL, 0);
+   G__memfunc_setup("Class",502,G__TEurogamDataDict_162_0_13, 85, G__get_linked_tagnum(&G__TEurogamDataDictLN_TClass), -1, 0, 0, 3, 1, 0, "", (char*)NULL, (void*) G__func2void( (TClass* (*)())(&TEurogamData::Class) ), 0);
+   G__memfunc_setup("Class_Name",982,G__TEurogamDataDict_162_0_14, 67, -1, -1, 0, 0, 3, 1, 1, "", (char*)NULL, (void*) G__func2void( (const char* (*)())(&TEurogamData::Class_Name) ), 0);
+   G__memfunc_setup("Class_Version",1339,G__TEurogamDataDict_162_0_15, 115, -1, G__defined_typename("Version_t"), 0, 0, 3, 1, 0, "", (char*)NULL, (void*) G__func2void( (Version_t (*)())(&TEurogamData::Class_Version) ), 0);
+   G__memfunc_setup("Dictionary",1046,G__TEurogamDataDict_162_0_16, 121, -1, -1, 0, 0, 3, 1, 0, "", (char*)NULL, (void*) G__func2void( (void (*)())(&TEurogamData::Dictionary) ), 0);
+   G__memfunc_setup("IsA",253,(G__InterfaceMethod) NULL,85, G__get_linked_tagnum(&G__TEurogamDataDictLN_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__TEurogamDataDict_162_0_20, 121, -1, -1, 0, 1, 1, 1, 0, "u 'TBuffer' - 1 - b", (char*)NULL, (void*) NULL, 0);
+   G__memfunc_setup("DeclFileName",1145,G__TEurogamDataDict_162_0_21, 67, -1, -1, 0, 0, 3, 1, 1, "", (char*)NULL, (void*) G__func2void( (const char* (*)())(&TEurogamData::DeclFileName) ), 0);
+   G__memfunc_setup("ImplFileLine",1178,G__TEurogamDataDict_162_0_22, 105, -1, -1, 0, 0, 3, 1, 0, "", (char*)NULL, (void*) G__func2void( (int (*)())(&TEurogamData::ImplFileLine) ), 0);
+   G__memfunc_setup("ImplFileName",1171,G__TEurogamDataDict_162_0_23, 67, -1, -1, 0, 0, 3, 1, 1, "", (char*)NULL, (void*) G__func2void( (const char* (*)())(&TEurogamData::ImplFileName) ), 0);
+   G__memfunc_setup("DeclFileLine",1152,G__TEurogamDataDict_162_0_24, 105, -1, -1, 0, 0, 3, 1, 0, "", (char*)NULL, (void*) G__func2void( (int (*)())(&TEurogamData::DeclFileLine) ), 0);
+   // automatic copy constructor
+   G__memfunc_setup("TEurogamData", 1182, G__TEurogamDataDict_162_0_25, (int) ('i'), G__get_linked_tagnum(&G__TEurogamDataDictLN_TEurogamData), -1, 0, 1, 1, 1, 0, "u 'TEurogamData' - 11 - -", (char*) NULL, (void*) NULL, 0);
+   // automatic destructor
+   G__memfunc_setup("~TEurogamData", 1308, G__TEurogamDataDict_162_0_26, (int) ('y'), -1, -1, 0, 0, 1, 1, 0, "", (char*) NULL, (void*) NULL, 1);
+   // automatic assignment operator
+   G__memfunc_setup("operator=", 937, G__TEurogamDataDict_162_0_27, (int) ('u'), G__get_linked_tagnum(&G__TEurogamDataDictLN_TEurogamData), -1, 1, 1, 1, 1, 0, "u 'TEurogamData' - 11 - -", (char*) NULL, (void*) NULL, 0);
+   G__tag_memfunc_reset();
+}
+
+
+/*********************************************************
+* Member function information setup
+*********************************************************/
+extern "C" void G__cpp_setup_memfuncTEurogamDataDict() {
+}
+
+/*********************************************************
+* 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() {
+
+   G__resetglobalenv();
+}
+extern "C" void G__cpp_setup_globalTEurogamDataDict() {
+  G__cpp_setup_global0();
+  G__cpp_setup_global1();
+}
+
+/*********************************************************
+* 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_funcTEurogamDataDict() {
+  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__TEurogamDataDictLN_TClass = { "TClass" , 99 , -1 };
+G__linked_taginfo G__TEurogamDataDictLN_TBuffer = { "TBuffer" , 99 , -1 };
+G__linked_taginfo G__TEurogamDataDictLN_TMemberInspector = { "TMemberInspector" , 99 , -1 };
+G__linked_taginfo G__TEurogamDataDictLN_TObject = { "TObject" , 99 , -1 };
+G__linked_taginfo G__TEurogamDataDictLN_vectorlEunsignedsPshortcOallocatorlEunsignedsPshortgRsPgR = { "vector<unsigned short,allocator<unsigned short> >" , 99 , -1 };
+G__linked_taginfo G__TEurogamDataDictLN_vectorlEdoublecOallocatorlEdoublegRsPgR = { "vector<double,allocator<double> >" , 99 , -1 };
+G__linked_taginfo G__TEurogamDataDictLN_vectorlEROOTcLcLTSchemaHelpercOallocatorlEROOTcLcLTSchemaHelpergRsPgR = { "vector<ROOT::TSchemaHelper,allocator<ROOT::TSchemaHelper> >" , 99 , -1 };
+G__linked_taginfo G__TEurogamDataDictLN_reverse_iteratorlEvectorlEROOTcLcLTSchemaHelpercOallocatorlEROOTcLcLTSchemaHelpergRsPgRcLcLiteratorgR = { "reverse_iterator<vector<ROOT::TSchemaHelper,allocator<ROOT::TSchemaHelper> >::iterator>" , 99 , -1 };
+G__linked_taginfo G__TEurogamDataDictLN_vectorlETVirtualArraymUcOallocatorlETVirtualArraymUgRsPgR = { "vector<TVirtualArray*,allocator<TVirtualArray*> >" , 99 , -1 };
+G__linked_taginfo G__TEurogamDataDictLN_reverse_iteratorlEvectorlETVirtualArraymUcOallocatorlETVirtualArraymUgRsPgRcLcLiteratorgR = { "reverse_iterator<vector<TVirtualArray*,allocator<TVirtualArray*> >::iterator>" , 99 , -1 };
+G__linked_taginfo G__TEurogamDataDictLN_TEurogamData = { "TEurogamData" , 99 , -1 };
+
+/* Reset class/struct taginfo */
+extern "C" void G__cpp_reset_tagtableTEurogamDataDict() {
+  G__TEurogamDataDictLN_TClass.tagnum = -1 ;
+  G__TEurogamDataDictLN_TBuffer.tagnum = -1 ;
+  G__TEurogamDataDictLN_TMemberInspector.tagnum = -1 ;
+  G__TEurogamDataDictLN_TObject.tagnum = -1 ;
+  G__TEurogamDataDictLN_vectorlEunsignedsPshortcOallocatorlEunsignedsPshortgRsPgR.tagnum = -1 ;
+  G__TEurogamDataDictLN_vectorlEdoublecOallocatorlEdoublegRsPgR.tagnum = -1 ;
+  G__TEurogamDataDictLN_vectorlEROOTcLcLTSchemaHelpercOallocatorlEROOTcLcLTSchemaHelpergRsPgR.tagnum = -1 ;
+  G__TEurogamDataDictLN_reverse_iteratorlEvectorlEROOTcLcLTSchemaHelpercOallocatorlEROOTcLcLTSchemaHelpergRsPgRcLcLiteratorgR.tagnum = -1 ;
+  G__TEurogamDataDictLN_vectorlETVirtualArraymUcOallocatorlETVirtualArraymUgRsPgR.tagnum = -1 ;
+  G__TEurogamDataDictLN_reverse_iteratorlEvectorlETVirtualArraymUcOallocatorlETVirtualArraymUgRsPgRcLcLiteratorgR.tagnum = -1 ;
+  G__TEurogamDataDictLN_TEurogamData.tagnum = -1 ;
+}
+
+
+extern "C" void G__cpp_setup_tagtableTEurogamDataDict() {
+
+   /* Setting up class,struct,union tag entry */
+   G__get_linked_tagnum_fwd(&G__TEurogamDataDictLN_TClass);
+   G__get_linked_tagnum_fwd(&G__TEurogamDataDictLN_TBuffer);
+   G__get_linked_tagnum_fwd(&G__TEurogamDataDictLN_TMemberInspector);
+   G__get_linked_tagnum_fwd(&G__TEurogamDataDictLN_TObject);
+   G__get_linked_tagnum_fwd(&G__TEurogamDataDictLN_vectorlEunsignedsPshortcOallocatorlEunsignedsPshortgRsPgR);
+   G__get_linked_tagnum_fwd(&G__TEurogamDataDictLN_vectorlEdoublecOallocatorlEdoublegRsPgR);
+   G__get_linked_tagnum_fwd(&G__TEurogamDataDictLN_vectorlEROOTcLcLTSchemaHelpercOallocatorlEROOTcLcLTSchemaHelpergRsPgR);
+   G__get_linked_tagnum_fwd(&G__TEurogamDataDictLN_reverse_iteratorlEvectorlEROOTcLcLTSchemaHelpercOallocatorlEROOTcLcLTSchemaHelpergRsPgRcLcLiteratorgR);
+   G__get_linked_tagnum_fwd(&G__TEurogamDataDictLN_vectorlETVirtualArraymUcOallocatorlETVirtualArraymUgRsPgR);
+   G__get_linked_tagnum_fwd(&G__TEurogamDataDictLN_reverse_iteratorlEvectorlETVirtualArraymUcOallocatorlETVirtualArraymUgRsPgRcLcLiteratorgR);
+   G__tagtable_setup(G__get_linked_tagnum_fwd(&G__TEurogamDataDictLN_TEurogamData),sizeof(TEurogamData),-1,29952,"EurogamData structure",G__setup_memvarTEurogamData,G__setup_memfuncTEurogamData);
+}
+extern "C" void G__cpp_setupTEurogamDataDict(void) {
+  G__check_setup_version(30051515,"G__cpp_setupTEurogamDataDict()");
+  G__set_cpp_environmentTEurogamDataDict();
+  G__cpp_setup_tagtableTEurogamDataDict();
+
+  G__cpp_setup_inheritanceTEurogamDataDict();
+
+  G__cpp_setup_typetableTEurogamDataDict();
+
+  G__cpp_setup_memvarTEurogamDataDict();
+
+  G__cpp_setup_memfuncTEurogamDataDict();
+  G__cpp_setup_globalTEurogamDataDict();
+  G__cpp_setup_funcTEurogamDataDict();
+
+   if(0==G__getsizep2memfunc()) G__get_sizep2memfuncTEurogamDataDict();
+  return;
+}
+class G__cpp_setup_initTEurogamDataDict {
+  public:
+    G__cpp_setup_initTEurogamDataDict() { G__add_setup_func("TEurogamDataDict",(G__incsetup)(&G__cpp_setupTEurogamDataDict)); G__call_setup_funcs(); }
+   ~G__cpp_setup_initTEurogamDataDict() { G__remove_setup_func("TEurogamDataDict"); }
+};
+G__cpp_setup_initTEurogamDataDict G__cpp_setup_initializerTEurogamDataDict;
+
diff --git a/NPLib/Eurogam/TEurogamDataDict.h b/NPLib/Eurogam/TEurogamDataDict.h
new file mode 100644
index 0000000000000000000000000000000000000000..6e689cc41b53e95d4f13e986bde730b02fbf2b14
--- /dev/null
+++ b/NPLib/Eurogam/TEurogamDataDict.h
@@ -0,0 +1,54 @@
+/********************************************************************
+* TEurogamDataDict.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 TEurogamDataDict.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_tagtableTEurogamDataDict();
+extern void G__cpp_setup_inheritanceTEurogamDataDict();
+extern void G__cpp_setup_typetableTEurogamDataDict();
+extern void G__cpp_setup_memvarTEurogamDataDict();
+extern void G__cpp_setup_globalTEurogamDataDict();
+extern void G__cpp_setup_memfuncTEurogamDataDict();
+extern void G__cpp_setup_funcTEurogamDataDict();
+extern void G__set_cpp_environmentTEurogamDataDict();
+}
+
+
+#include "TObject.h"
+#include "TMemberInspector.h"
+#include "TEurogamData.h"
+#include <algorithm>
+namespace std { }
+using namespace std;
+
+#ifndef G__MEMFUNCBODY
+#endif
+
+extern G__linked_taginfo G__TEurogamDataDictLN_TClass;
+extern G__linked_taginfo G__TEurogamDataDictLN_TBuffer;
+extern G__linked_taginfo G__TEurogamDataDictLN_TMemberInspector;
+extern G__linked_taginfo G__TEurogamDataDictLN_TObject;
+extern G__linked_taginfo G__TEurogamDataDictLN_vectorlEunsignedsPshortcOallocatorlEunsignedsPshortgRsPgR;
+extern G__linked_taginfo G__TEurogamDataDictLN_vectorlEdoublecOallocatorlEdoublegRsPgR;
+extern G__linked_taginfo G__TEurogamDataDictLN_vectorlEROOTcLcLTSchemaHelpercOallocatorlEROOTcLcLTSchemaHelpergRsPgR;
+extern G__linked_taginfo G__TEurogamDataDictLN_reverse_iteratorlEvectorlEROOTcLcLTSchemaHelpercOallocatorlEROOTcLcLTSchemaHelpergRsPgRcLcLiteratorgR;
+extern G__linked_taginfo G__TEurogamDataDictLN_vectorlETVirtualArraymUcOallocatorlETVirtualArraymUgRsPgR;
+extern G__linked_taginfo G__TEurogamDataDictLN_reverse_iteratorlEvectorlETVirtualArraymUcOallocatorlETVirtualArraymUgRsPgRcLcLiteratorgR;
+extern G__linked_taginfo G__TEurogamDataDictLN_TEurogamData;
+
+/* STUB derived class for protected member access */
diff --git a/NPLib/Maya/ConfigReader.cxx b/NPLib/Maya/ConfigReader.cxx
new file mode 100755
index 0000000000000000000000000000000000000000..cd12a58ff02e947b483673e3167772cd7236bbfc
--- /dev/null
+++ b/NPLib/Maya/ConfigReader.cxx
@@ -0,0 +1,434 @@
+/*****************************************************************************
+ * Copyright (C) 2008   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: M. Vandebrouck   contact address: vandebro@ipno.in2p3.fr *
+ *                  J. Gibelin                      gibelin@lpccaen.in2p3.fr *
+ *                                                                           *
+ * Creation Date  : November 2011                                            *
+ * Last update    :                                                          *
+ *---------------------------------------------------------------------------*
+ * Decription: This class holds a the configuration reader part for Maya     *
+ *                                                                           *
+ *---------------------------------------------------------------------------*
+ * Comment:                                                                  *
+ *                                                                           *
+ *****************************************************************************/
+#include <iostream>
+#include "ConfigReader.h"
+
+using std::cout;
+using std::endl;
+using std::cerr;
+using std::vector;
+
+//ClassImp(ConfigReader)
+
+ConfigReader::ConfigReader(){
+  // ForceInstantiation() ;
+  number_of_files = -1 ;
+  files_already_read = false ;
+  list_of_files_.clear();
+}
+
+ConfigReader::ConfigReader( std::vector<string> &v ){
+  //  ForceInstantiation() ;
+  files_already_read = false ;
+  list_of_files_.assign(v.begin(),v.end());
+  number_of_files = v.size() ;
+}
+
+ConfigReader::ConfigReader( char *f1, ...){
+  //  ForceInstantiation() ;
+  va_list marker;
+  char *file ;
+  list_of_files_.clear();
+  files_already_read = false ;
+
+  number_of_files = 1 ;    
+  va_start( marker, f1 );     /* Initialize variable arguments. */
+
+
+  trim(f1) ;
+
+  list_of_files_.push_back(f1) ;
+
+  while((file = va_arg( marker, char*)) != NULL)
+    {
+
+      trim(file) ;
+
+      if(file !=NULL && strlen(file)>0){
+
+	list_of_files_.push_back(file);
+	number_of_files++ ;
+
+      }
+
+    }
+  va_end( marker );              /* Reset variable arguments.      */
+
+
+
+}
+
+
+void ConfigReader::__ForceInstantiation__(){
+  bool b ;
+  Read<bool>("",b);
+
+  //
+  std::vector<int> iv1 ;
+  std::vector<std::vector<int> > iv2 ;
+  int i ;
+  Read<int>("",iv1,-1);
+  Read<int>("",iv2);
+  Read<int>("",i);
+
+  //
+  std::vector<float> fv1 ;
+  std::vector<std::vector<float> > fv2 ;
+  float f ;
+  Read<float>("",fv1,-1);
+  Read<float>("",fv2);
+  Read<float>("",f);
+
+  //
+  std::vector<double> dv1 ;
+  std::vector<std::vector<double> > dv2 ;
+  double d ;
+  Read<double>("",dv1,-1);
+  Read<double>("",dv2);
+  Read<double>("",d);
+
+  
+
+}
+
+
+int ConfigReader::AddFile(char *f){
+  if(f != NULL) list_of_files_.push_back(f) ;
+  number_of_files = list_of_files_.size() ;
+  return number_of_files ;
+}
+
+template<typename T> void ConfigReader::PrintVector( std::vector<T> & v1){
+  if(v1.empty()) {
+    cout << "1D Vector empty" << endl ;
+    return ;
+  }
+
+  for(unsigned int i=0;i<v1.size();i++){
+    cout << v1[i] << ", " ;
+  }
+  cout << "" <<endl ;
+}
+
+template<typename T> void ConfigReader::PrintVector( std::vector<std::vector<T> >& v2){
+  if(v2.empty()) {
+    cout << "2D Vector empty" << endl ;
+    return ;
+  }
+  for(unsigned int i=0;i<v2.size();i++){
+    PrintVector(v2[i]);
+  }
+  cout << endl ;
+}
+
+void ConfigReader::trim( char *c ){
+  string s(c);
+  trim(s);
+  c = (char*)s.c_str();
+}
+
+void ConfigReader::trim( string& s )
+{
+        // Remove leading and trailing whitespace
+        static const char whitespace[] = " \n\t\v\r\f";
+        s.erase( 0, s.find_first_not_of(whitespace) );
+        s.erase( s.find_last_not_of(whitespace) + 1U );
+}
+
+void ConfigReader::clean( string& s )
+{
+  //cout << "avant :" << s << endl ;
+  // Trim string
+  trim(s) ;
+  // Uncomment string
+  uncomment(s) ; 
+  // Remove all possible delimiters other than space
+  static const string delimiters = ",\n\t\v\r\f";
+  unsigned int position = s.find_first_of( delimiters );
+  while ( position != (unsigned int)string::npos ) 
+    {
+      s.replace( position, 1, " ");
+      position = s.find_first_of( delimiters, position + 1 );
+    } 
+  //cout << "apres :" << s << endl ;
+}
+
+void ConfigReader::uncomment( string& s )
+{
+  // Remove trailing comments
+   static const string comments = "//" ;
+  if(s.find(comments) < s.length()){
+    s.erase( s.find(comments) );
+  }
+
+}
+
+
+int ConfigReader::FindTokenInFile(string filename){
+  std::ifstream parfile;
+  string line,nextline,token ;
+
+  parfile.open(filename.c_str());
+
+  if (!parfile) {
+    std::cerr << "Unable to open file " << filename << endl;
+    return -1 ;
+  }
+
+  line = "" ;
+  nextline = "" ;
+  while(parfile)
+    {
+      // Read an entire line at a time
+      if(line.length()==0 && nextline.length()==0) {
+	std::getline( parfile, line );
+      }
+      trim(line) ;
+      if(!line.compare(0,2,"//") || line.compare(0,1,"[")) {
+	line = "" ; nextline = "" ;
+	continue ;
+      }
+      if(!line.compare(0,1,"[")) {
+	token = line.substr(1,line.find("]")-1);
+	trim(token);
+	cout << " token \e[32m'"  << token << "'\e[0m  found "<<endl ;
+
+	if((parameters_blocks.count(token)) == 0){
+	  parameters_blocks[token] =  new std::stringstream(std::stringstream::in | std::stringstream::out) ;
+	  parameters_nlines[token] = 0 ;
+	  parameters_written_in[token] = filename ;
+	  parameters_nparam[token] = 0  ;
+	  while(parfile){
+	    std::getline( parfile, nextline );
+	    clean(nextline) ;
+	    if(!nextline.compare(0,1,"[")) break ;
+	    else if(nextline.length()==0) continue ;
+	    *parameters_blocks[token] << "\n" ;
+	    *parameters_blocks[token] <<  nextline ;
+	    parameters_nlines[token]++ ;
+	    // -- Count the number of parameters --
+	    std::stringstream ss(nextline); // Insert the string into a stream
+	    std::string buf ;
+	    while (ss >> buf){
+	      parameters_nparam[token]++;
+	    }
+
+	    // --------
+	  }
+	  line = nextline ;
+	  nextline = "" ;
+	  //	  cout << *parameters_blocks[token] << endl ;
+	} else {
+	  cerr << "\nWarning: token \e[31m'"  << token 
+	       << "'\e[0m in  \e[31m" << filename 
+	       << "\e[0m already exists in \e[31m" << parameters_written_in[token] <<"\e[0m. Skip.\n "<<endl ;
+	  line = "" ; nextline = "" ;
+	}
+      }
+    }
+
+  parfile.close();
+  files_already_read = true ;
+
+  return files_already_read ;
+
+}
+
+int ConfigReader::FindAllToken(void){
+  tot_number_of_token = 0 ;
+  if(number_of_files>0){
+    for(int i=0;i<number_of_files;i++){      
+      cout << "Now reading " << list_of_files_.at(i) << endl ;
+      tot_number_of_token += FindTokenInFile(list_of_files_.at(i))  ;
+    }
+    return tot_number_of_token ;
+  }
+  return -1 ;
+}
+
+int ConfigReader::PrintListofToken(void){
+  if(PrintListofFiles()>0){
+    for(int i=0;i<(int)list_of_files_.size();i++){
+      cout << "In file: " << list_of_files_.at(i) << endl << endl ;
+      
+      for ( std::map< string,std::stringstream*  >::const_iterator iter = parameters_blocks.begin();
+	    iter != parameters_blocks.end(); ++iter ){
+	if(parameters_written_in[iter->first].compare(list_of_files_.at(i))==0){
+	  ((std::stringstream*)iter->second)->seekg(0,std::ios::beg);
+	  cout << "\e[33m***** " << iter->first << " ******\e[0m\n" 
+	       << ((std::stringstream*)iter->second)->rdbuf() << '\n' << endl;
+	  cout << "\e[34m### Stats: " << parameters_nlines[iter->first]<< " lines ### "   ;
+	  cout << parameters_nparam[iter->first] << " params ###\e[0m\n" << endl ;
+	}
+      }
+      
+    }
+    return (int)list_of_files_.size();
+  }
+  return 0 ;
+}
+
+int ConfigReader::PrintListofFiles(void){
+  if(number_of_files>0){
+    cout << number_of_files << " parameter file(s) defined :" << endl ;
+    for(int i=0;i<(int)list_of_files_.size();i++){      
+      cout << "  " << i+1 << ") " << list_of_files_.at(i) << " " << endl  ;
+    }
+    cout << endl ;
+    return number_of_files ;
+  } else {
+    cout << "No parameter files are defined" << endl << endl ;
+    return -1 ;
+  }
+}
+
+template<typename T> int ConfigReader::Read(string token, std::vector<std::vector <T> >&v2){
+  if(token.size()==0) return 0;
+  if(!files_already_read) {
+    if (FindAllToken() == -1) {
+      for(unsigned int i=0;i<v2.size();i++){
+	v2.at(i).clear() ; // clear the vector.
+      }
+      v2.clear();
+      return 0 ;
+    }
+  }
+
+  if((parameters_nparam).count(token)==0){
+    cout << "Warning: token \e[31m'" << token << "'\e[0m not found  in any files " << endl ;
+    for(unsigned int i=0;i<v2.size();i++){
+      v2.at(i).clear() ; // clear the vector.
+    }
+    v2.clear();
+    return 0;
+  }
+
+  // cout << "vec^2 of " << typeid(T).name() << " and size " << v2.size() << " " << v2.at(0).size() << endl ;
+  unsigned int npar = 0 ;
+  for(unsigned int i=0;i<v2.size();i++){
+    npar += Read(token,v2.at(i),2);
+  }
+
+  if(v2.size()*v2.at(0).size() != npar){ // mismatch between the number of parameters read and expected.
+    cerr << "\nWarning: 2D vector used to fill in parameters from token \e[31m'" << token 
+	 << "'\e[0m has a dimension of  \e[31m" <<  v2.size() << "x" << (v2.at(0).size()) << "=" 
+	 << (v2.size()*(v2.at(0).size())) << "\e[0m" << endl ;
+    cerr << "\tbut \e[31m" << parameters_nparam[token] << "\e[0m parameters were read in \e[31m" 
+	 <<  parameters_written_in[token] << "\e[0m" << endl ;
+    for(unsigned int i=0;i<v2.size();i++){
+      v2.at(i).clear() ; // clear the vector.
+    }
+    v2.clear();
+    return 0 ;
+  }
+  //  PrintVector(v2) ;
+  return npar ;
+}
+
+template<typename T> int ConfigReader::Read(string token, std::vector<T> &v1, int dimension = 1){
+  if((dimension<1) || (token.size()==0) ) return 0 ;
+  if(!files_already_read) {
+    if (FindAllToken() == -1) {
+      v1.clear() ; // if no file is found the vector is cleared ! 
+      return 0 ;
+    }
+  }
+
+  if((parameters_nparam).count(token)==0){
+    cout << "Warning: token \e[31m'" << token << "'\e[0m not found  in any files " << endl ;
+    v1.clear();
+    return 0;
+  }
+
+
+  if(dimension==1){ // check if the function as been call directly to fill a 1D vector (default)
+    parameters_blocks[token]->seekg(0,std::ios::beg); // rewind only if 1D 
+    if((int)v1.size() != parameters_nparam[token]){ // size mismatch
+      cerr << "\nWarning: 1D vector used to fill in parameters from token \e[31m'" << token 
+	   << "'\e[0m has a dimension of  \e[31m" <<  v1.size() << "\e[0m" << endl ;
+      cerr << "\tbut \e[31m" << parameters_nparam[token] << "\e[0m parameters were read in \e[31m" 
+	   <<  parameters_written_in[token] << "\e[0m" << endl ;
+      v1.clear();
+      return 0 ;
+    }
+  }
+
+  //  cout << "vec^1 of " << typeid(T).name() << ", size " << v1.size() << endl ;
+  // Tokenize
+  T buf ;
+  unsigned int npar = 0 ;
+
+  while ((*parameters_blocks[token] >> buf)){
+    v1.at(npar++) =  static_cast<T>(buf);
+    if(npar>=v1.size()) break ;
+  }
+  return npar ;
+}
+
+template<typename T> int ConfigReader::Read(string token, T &a){
+  if(token.size()==0)  return 0 ;
+  
+  if(!files_already_read) {
+    if (FindAllToken() == -1) {
+      a = 0 ; // if no file is found the coefficinnt is cleared
+      return 0 ;
+    }
+  }
+  
+  if((parameters_nparam).count(token)==0){
+    cout << "Warning: token \e[31m'" << token << "'\e[0m not found  in any files " << endl ;
+    a = 0 ;
+    return 0;
+  }
+  
+  *parameters_blocks[token] >> a ;
+
+  return 1 ;
+}
+
+/*
+int main(void) {
+
+  ConfigReader *cal_par = new ConfigReader();
+
+    cout << cal_par->AddFile("./test1.prm") << endl ;
+    cout << cal_par->AddFile("./test2.prm") << endl ;
+  
+  //  ConfigReader *cal_par = new ConfigReader("./test1.prm","./test2.prm");
+
+  //  cal_par->FindAllToken() ;
+  std::vector<std::vector <int> > matrice(3,vector<int>(4,0)) ;
+  cal_par->Read("par01",matrice);
+  
+  std::vector<float>  vecteur(7,0) ;
+  cal_par->Read("par2",vecteur);
+  
+  cal_par->PrintVector(matrice);  
+  cal_par->PrintVector(vecteur);  
+  
+  //  cout << cal_par->GetListofFiles().at(0) << endl ;
+
+  //cal_par->PrintListofToken();
+  delete cal_par ;
+  return 0 ;
+}
+*/
+
diff --git a/NPLib/Maya/ConfigReader.h b/NPLib/Maya/ConfigReader.h
new file mode 100755
index 0000000000000000000000000000000000000000..9ee70725a93ef9e26faa431e8fc9bc262a8faae5
--- /dev/null
+++ b/NPLib/Maya/ConfigReader.h
@@ -0,0 +1,105 @@
+/*****************************************************************************
+ * Copyright (C) 2008   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: M. Vandebrouck   contact address: vandebro@ipno.in2p3.fr *
+ *                  J. Gibelin                      gibelin@lpccaen.in2p3.fr *
+ *                                                                           *
+ * Creation Date  : November 2011                                            *
+ * Last update    :                                                          *
+ *---------------------------------------------------------------------------*
+ * Decription: This class holds a the configuration reader part for Maya     *
+ *                                                                           *
+ *---------------------------------------------------------------------------*
+ * Comment:                                                                  *
+ *                                                                           *
+ *****************************************************************************/
+#ifndef __CREADER__
+#define __CREADER__
+
+
+#include <string>
+#include <vector>
+#include <iostream>
+#include <map>
+#include <fstream>
+#include <sstream>
+#include <cstdarg>
+#include <cstdio>
+#include <cstring>
+
+using std::string;
+
+class ConfigReader{
+  // Data
+ protected:
+  std::map<string,std::stringstream*> parameters_blocks ; // entire data black following the presence of a token
+  std::map<string,string> parameters_written_in ; // file name where a given token is written in
+  std::map<string,int> parameters_nlines ; // number of parameters line for a given token 
+  std::map<string,int> parameters_nparam ; // total number of parameters for a gien token
+  std::vector<string> list_of_files_ ; // list of all the parameter files given
+  int number_of_files ; // number of parameter files
+  int tot_number_of_token ; // total number of token
+  std::vector<int> number_of_token_per_file ; // number of token per parameter file
+  bool files_already_read ;
+
+
+  // Methods
+ public:
+  ConfigReader( char*, ...);
+  ConfigReader( std::vector<string> &);
+  ConfigReader();
+  ~ConfigReader(){ 
+    std::cout <<  "ConfigReader: Clean the mess" << std::endl ; 
+
+    parameters_written_in.clear();
+
+    parameters_blocks.clear();
+    //map<string,std::stringstream*>::iterator iter;   
+    //for( iter = parameters_blocks.begin(); iter != parameters_blocks.end(); iter++ ) {
+    //
+    //  ((std::stringstream*)iter->second) ==;
+    //}
+
+    parameters_nlines.clear(); 
+    parameters_nparam.clear(); 
+    list_of_files_.clear(); 
+    number_of_token_per_file.clear();
+  };
+
+  //void Read(const string& , const std::vector<std::vector<int> >& ) const ; // call as read<T>
+  int AddFile(char*);
+  template<typename T> int Read(string, std::vector<std::vector<T> >&) ;
+  template<typename T> int Read(string, std::vector<T> &, int) ;
+  template<typename T> int Read(string, T &) ;
+
+  int FindAllToken() ;
+  int FindTokenInFile(string) ;
+  
+  int Dump(void){ return PrintListofToken() ;};
+  int PrintListofFiles(void);
+  int PrintListofToken(void);
+
+  std::vector<string> &GetListofFiles() {return list_of_files_ ; } ;
+
+  template<typename T> void PrintVector( std::vector<T> &) ; // not directly related but very usefull !!
+  template<typename T> void PrintVector( std::vector<std::vector<T> > &) ; // not directly related but very usefull !!
+
+ private:
+
+  void __ForceInstantiation__() ;
+  void trim( string&) ;
+  void trim( char *) ;
+  void clean(string&);
+  void uncomment( string&) ;
+
+  //  ClassDef(ConfigReader,1) 
+
+};
+
+#endif
+
diff --git a/NPLib/Maya/Makefile b/NPLib/Maya/Makefile
new file mode 100755
index 0000000000000000000000000000000000000000..878923d9927ad7cc0b1b7d711f50424bda5c2917
--- /dev/null
+++ b/NPLib/Maya/Makefile
@@ -0,0 +1,49 @@
+include ../Makefile.arch
+
+#------------------------------------------------------------------------------
+SHARELIB      =  libMayaData.so  libConfigReader.so   libMayaHisto.so
+
+all:            $(SHARELIB)
+#------------------------------------------------------------------------------
+############### Detector ##############
+
+## Maya ##
+libMayaData.so:	TMayaData.o	TMayaDataDict.o
+		$(LD) $(SOFLAGS) $^ $(OutPutOpt) $@
+
+TMayaDataDict.cxx:	TMayaData.h
+			rootcint -f $@ -c $^
+
+libMayaHisto.so:	TMayaHisto.o	TMayaHistoDict.o
+		$(LD) $(SOFLAGS) $^ $(OutPutOpt) $@
+
+TMayaHistoDict.cxx:	TMayaHisto.h
+			rootcint -f $@ -c $^
+
+libConfigReader.so:	ConfigReader.o
+		$(LD) $(SOFLAGS) $^ $(OutPutOpt) $@
+
+ConfigReaderDict.cxx:	TConfigReader.h
+			rootcint -f $@ -c $^
+
+# dependances
+TMayaData.o:		TMayaData.cxx	TMayaData.h
+TMayaHisto.o:		TMayaHisto.cxx	TMayaHisto.h
+ConfigReader.o:	ConfigReader.cxx	ConfigReader.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/Maya/TMayaData.cxx b/NPLib/Maya/TMayaData.cxx
new file mode 100755
index 0000000000000000000000000000000000000000..05f116081fcf00b9020894809f0d484e2e53efae
--- /dev/null
+++ b/NPLib/Maya/TMayaData.cxx
@@ -0,0 +1,450 @@
+/*****************************************************************************
+ * Copyright (C) 2008   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: M. Vandebrouck   contact address: vandebro@ipno.in2p3.fr *
+ *                  J. Gibelin                      gibelin@lpccaen.in2p3.fr *
+ *                                                                           *
+ * Creation Date  : November 2011                                            *
+ * Last update    :                                                          *
+ *---------------------------------------------------------------------------*
+ * Decription: This class holds Maya raw data                                *
+ *                                                                           *
+ *---------------------------------------------------------------------------*
+ * Comment:                                                                  *
+ *                                                                           *
+ *****************************************************************************/
+
+#include <iostream>
+#include <fstream>
+#include <TMath.h>
+using namespace std;
+
+#include "TMayaData.h"
+
+ClassImp(TMayaData)
+
+TMayaData::TMayaData()
+  : fMaya_PAD_E_calpar(MAYA_PAD_NCHCAL,vector<Float_t>(MAYA_PAD_NPARCAL)),
+    fMaya_QFIL_E_calpar(MAYA_QFIL_NCHCAL,vector<Float_t>(MAYA_QFIL_E_NPARCAL)),
+    fMaya_QFIL_T_calpar(MAYA_QFIL_NCHCAL,vector<Float_t>(MAYA_QFIL_T_NPARCAL)),
+    fMaya_Si_E_calpar(MAYA_SI_NCHCAL,vector<Float_t>(MAYA_SI_E_NPARCAL)),
+    fMaya_Si_T_calpar(MAYA_SI_NCHCAL,vector<Float_t>(MAYA_SI_T_NPARCAL))
+{
+  // Default constructor
+  fMaya_PAD_E_cal_threshold = 0. ;
+  Clear();
+  
+}
+
+TMayaData::~TMayaData()
+{
+  Clear();
+  fMaya_PAD_E_calpar.clear();
+  fMaya_QFIL_E_calpar.clear();
+  fMaya_QFIL_T_calpar.clear();
+  fMaya_Si_E_calpar.clear();
+  fMaya_Si_T_calpar.clear();	
+}
+
+void TMayaData::Clear()
+{
+   // (PAD)
+   bMaya_IsPAD_Calibrated = false ;
+   fMaya_PAD_E.clear();
+   fMaya_PAD_E_cal.clear();
+   fMaya_PAD_Nbr.clear();
+   fMaya_PAD_Col.clear();
+   fMaya_PAD_Row.clear();
+   fMaya_PAD_x.clear();
+   fMaya_PAD_y.clear();
+   fMaya_PAD_Sum = 0;
+   fMaya_PAD_Sum_cal = 0;
+   fMaya_PAD_Mult_cal = 0;
+
+   fMaya_PAD_Neighbors.clear();	
+   fMaya_PAD_map_idx.clear() ;
+   memset(fMaya_PAD_Row_Mult,0,32*sizeof(UShort_t)) ;
+   memset(fMaya_PAD_Row_Sum_cal,0,32*sizeof(Float_t)) ;
+   memset(fMaya_PAD_Row_Max_cal,0,32*sizeof(Float_t)) ;
+   memset(fMaya_PAD_Col_Mult,0,32*sizeof(UShort_t)) ;
+   memset(fMaya_PAD_Col_Sum_cal,0,32*sizeof(Float_t)) ;
+   memset(fMaya_PAD_Col_Max_cal,0,32*sizeof(Float_t)) ;
+
+   // (QFIL)
+   bMaya_IsQFIL_Calibrated = false ;
+   fMaya_QFIL_E_Nbr.clear();
+   fMaya_QFIL_E.clear();
+   fMaya_QFIL_E_cal.clear();
+   fMaya_QFIL_T.clear();
+   fMaya_QFIL_T_cal.clear();
+   fMaya_QFIL_T_Nbr.clear();
+   fMaya_QFIL_Sum = 0 ;   
+   fMaya_QFIL_Sum_cal = 0 ;   
+   fMaya_QFil_Pulse_Nbr.clear();
+   fMaya_QFil_Pulse_E.clear();
+   fMaya_QFil_Pulse_Ch.clear();
+   fMaya_QFil_Pulse_map_Current_Nbr.clear();
+   fMaya_QFil_Pulse_Sum_Ch.clear();
+   fMaya_QFil_Pulse_Sum.clear();
+   // (Max) 
+   //   fMaya_Max_cal = 0.;
+   //   fMaya_Max_Nbr = 0 ;
+
+   // Silicons
+   fMaya_Si_E_Nbr.clear();
+   fMaya_Si_E.clear();
+   fMaya_Si_E_cal.clear();
+   //
+   fMaya_Si_T_Nbr.clear();
+   fMaya_Si_T.clear();
+   fMaya_Si_T_cal.clear();
+}
+
+void TMayaData::SetEnergyPad(UShort_t N, UShort_t E) {
+  SetEnergyPad_CR(GetPadCol(N),GetPadRow(N),E);
+}
+
+void TMayaData::SetEnergyPad_CR(UShort_t C,UShort_t R, UShort_t E) {
+  /*  cout << 
+    fMaya_PAD_Col.size() << " " <<
+    fMaya_PAD_Row.size() << " " <<
+    fMaya_PAD_Nbr.size() << " " <<
+    fMaya_PAD_E.size() << " " <<
+    fMaya_PAD_map_idx.size() << endl ;
+  */
+  //
+  
+  fMaya_PAD_map_idx[GetPadIdx(C,R)] = fMaya_PAD_Nbr.size()-1 ;
+
+  fMaya_PAD_Col.push_back(C);
+  fMaya_PAD_Row.push_back(R);
+  fMaya_PAD_x.push_back(MAYA_PAD_HEIGHT*(2*C-R%2));
+  fMaya_PAD_y.push_back((1+(R-1)*1.5)*MAYA_PAD_SIZE);
+  fMaya_PAD_Nbr.push_back(GetPadIdx(C,R));
+  fMaya_PAD_E.push_back(E);
+  
+  //
+  
+  fMaya_PAD_map_idx[GetPadIdx(C,R)] = fMaya_PAD_Nbr.size()-1 ;
+
+}
+
+// SI
+void  TMayaData::SetEnergySi(UShort_t N,UShort_t E)  {
+  fMaya_Si_E.push_back(E) ;
+  fMaya_Si_E_Nbr.push_back(N) ;
+
+}
+
+void  TMayaData::SetTimeSi(UShort_t N,UShort_t T)  {
+  fMaya_Si_T.push_back(T) ;
+  fMaya_Si_T_Nbr.push_back(N) ;
+
+}
+
+void TMayaData::SetQFilPulse(UShort_t N,UShort_t E) {
+  fMaya_QFil_Pulse_map_Current_Nbr[N]++ ;
+  if(E>0){
+    fMaya_QFil_Pulse_Nbr.push_back(fMaya_QFil_Pulse_map_Current_Nbr[N]);
+    fMaya_QFil_Pulse_Ch.push_back(N);
+    fMaya_QFil_Pulse_E.push_back(E);
+    for (Int_t i = 0; i<(Int_t)fMaya_QFil_Pulse_Sum_Ch.size();i++){
+      // cout << fMaya_QFil_Pulse_Sum_Nbr.at(i) << endl;
+      if(fMaya_QFil_Pulse_Sum_Ch.at(i) == N) {
+	fMaya_QFil_Pulse_Sum.at(i) += E ;
+	return ;
+      }
+    }
+    fMaya_QFil_Pulse_Sum_Ch.push_back(N);
+    fMaya_QFil_Pulse_Sum.push_back(E);
+  }
+}
+
+// TOF
+void  TMayaData::SetTOF(UShort_t N,UShort_t T)  {
+  if(N==1) {
+    fMaya_TOF_GAL_HF = T ;
+    return ;
+  }
+  if(N==2) {
+    fMaya_TOF_GAL_DIAM = T ;
+    return ;
+  }
+  if(N==3) {
+    fMaya_TOF_TM_TRIG = T ;
+    return ;
+  }
+}
+
+
+void TMayaData::Dump()
+{
+   //cout << "XXXXXXXXXXXXXXXXXXXXXXXX New Event XXXXXXXXXXXXXXXXX" << endl;
+   /*
+   // (PAD)
+   cout << "Maya_PQD.Size = " << fMaya_PAD_E.size() << endl;
+   for (UShort_t i = 0; i < fMaya_PAD_E.size(); i++)
+     cout <<  " Energy: " << fMaya_PAD_E.at(i) << endl;
+  //sum 
+   cout<<"Maya_sum " << fMaya_Sum << endl;
+  // QFIL 
+   cout<<"Maya_QFIL_E " << fMaya_QFIL_E << endl;
+  // Si
+   cout<<"Maya_Si_E " << fMaya_Si_E << endl;
+   */
+}
+
+bool TMayaData::InitCalibrate( std::vector<string> &list_of_cal_files)
+{
+
+  ConfigReader *cal_par = new ConfigReader(list_of_cal_files);
+  cal_par->Read<Float_t>("PADS",fMaya_PAD_E_calpar);
+  cal_par->Read<Float_t>("PADS_THR",fMaya_PAD_E_cal_threshold);
+  cal_par->Read<bool>("PADS_CLEAN", bMaya_Clean_PADS);
+  cal_par->Read<Int_t>("PADS_MIN_NEIGHBORS",  fMaya_PAD_Neighbors_Min);
+  cal_par->Read<Float_t>("FILS_TIMECAL",  fMaya_QFIL_T_calpar);
+  cal_par->Read<Float_t>("SI",  fMaya_Si_E_calpar);
+
+  //cal_par->Read("tsi",fMaya_Si_E_calpar);
+  //     cal_par->Dump();
+//  vector<Float_t> u(MAYA_PAD_NPARCAL,0) ;
+//  u.at(1) = 1 ;
+//  for(unsigned int i=0;i<fMaya_PAD_E_calpar.size();i++){
+//    fMaya_PAD_E_calpar.at(i) = u ;
+//  }
+    //fMaya_PAD_E_calpar.clear();
+  delete cal_par ;
+  return kTRUE ;
+}
+
+
+bool TMayaData::Calibrate(){
+
+  //FILE *fichier_test;
+  //fichier_test = fopen("f.dat","w");
+  int tmpNbr ;
+  Float_t tmpCal ;
+  fMaya_PAD_Mult_cal = 0 ;
+  fMaya_PAD_Sum_cal = 0 ;
+  //possible example 
+  //if(!fMaya_PAD_E.empty()&& !fMaya_PAD_E_calpar.empty() )
+{
+
+    fMaya_PAD_E_cal.resize(fMaya_PAD_E.size());
+
+    for(unsigned int i=0;i<fMaya_PAD_E.size();i++){
+
+      tmpCal = 0 ; 
+
+      tmpNbr = fMaya_PAD_Nbr.at(i) - 1 ;
+
+      if(fMaya_PAD_Nbr.at(i)<fMaya_PAD_E_calpar.size()){
+	for(unsigned int j=0;j<fMaya_PAD_E_calpar.at(tmpNbr).size();j++){
+	  tmpCal += pow(fMaya_PAD_E.at(i),j)*fMaya_PAD_E_calpar.at(tmpNbr).at(j) ;
+	}
+	if(tmpCal>fMaya_PAD_E_cal_threshold){
+	  fMaya_PAD_E_cal.at(i) = tmpCal ;
+	  fMaya_PAD_Mult_cal++ ;
+	  fMaya_PAD_Row_Mult[ fMaya_PAD_Row.at(i)-1]++ ;
+	  fMaya_PAD_Col_Mult[ fMaya_PAD_Col.at(i)-1]++ ;
+	  fMaya_PAD_Sum_cal += tmpCal ;
+	} else {
+	  fMaya_PAD_E_cal.at(i) = 0. ;
+	}
+	//cout << fMaya_PAD_E.at(i) << " " <<
+        //fMaya_PAD_E_cal.at(i) << endl ;
+      }
+
+    }
+    //    cout << endl ;
+    bMaya_IsPAD_Calibrated = true ;
+  } 
+
+
+//else {
+//cout << "out Pad " << fMaya_PAD_E.size() << " " << fMaya_PAD_E_calpar.size() << endl ;
+ //   fMaya_PAD_E_cal.clear();
+//    return false ;
+ // }  
+
+  if(bMaya_IsPAD_Calibrated && bMaya_Clean_PADS){
+    // count the number of neighbors
+    // two cases have to be considered :
+    /*
+      
+         c-1  c   c+1  
+       c-1  c  c+1
+        |   |   |   |
+       / \ / \ / \ / \
+  r+2 |   |   |   |   |   odd 
+       \ / \ / \ / \ /
+  r+1   |   | B |   |     even 
+       / \ / \ / \ / \
+  r   |   | A |   |   |   odd  : ( r )%2 = 1
+       \ / \ / \ / \ /
+  r-1   |   |   |   |     even : (r-1)%2 = 0
+       / \ / \ / \ / \
+  r-2 |   |   |   |   |   odd  : (r-2)%2 = 1
+       \ / \ / \ / \ /
+     -------------------
+
+
+	Example:
+
+    * A(c,r) neighbors: (c-1,r-1)(c-1,r)(c-1,r+1)(c,r-1)(c+1,r)(c,r+1); 
+
+    * B(c,r') neighbors: (c,r'-1)(c-1,r')(c,r'+1)(c+1,r'-1)(c+1,r')(c+1,r'+1)
+
+Conclusion : all have two times r-1,r,r+1 combinaisons
+	odd  raws (A) don't have (c+1,r-1)(c+1,r+1)  , note r %2 = 1
+	even raws (B) don't have (c-1,r'-1)(c-1,r'+1), note r'%2 = 0
+
+    */
+	Int_t r0,c0 ;	
+    for(unsigned int i=0;i<fMaya_PAD_E_cal.size();i++){
+      fMaya_PAD_Neighbors.push_back(-1) ; // -1 because in the following
+				      // the pad (c,r) will be also tested
+      if(fMaya_PAD_E_cal.at(i)>0){
+	r0 = fMaya_PAD_Row.at(i) ;
+	c0 = fMaya_PAD_Col.at(i) ;
+
+        for(int r=r0-1;r<=r0+1;r++){
+	  for(int c=c0-1;c<=c0+1;c++){
+	if(!(abs(r-r0)==1 && c==c0-1+(r0%2)*2) && r>0 && c>0 && r<33 && c<33){	
+	    if(fMaya_PAD_map_idx.count(GetPadIdx(c,r))>0) {
+//	    cout << c0 << " " << r0 << " -> " << c << " " << r << endl ;
+	      if(fMaya_PAD_E_cal.at(fMaya_PAD_map_idx[GetPadIdx(c,r)])>0){
+		fMaya_PAD_Neighbors.at(i)++;
+	      }
+	    }
+	}
+	  }
+	}
+      }
+    }
+
+    memset(fMaya_PAD_Row_Mult,0,32*sizeof(UShort_t)) ;
+    memset(fMaya_PAD_Row_Sum_cal,0,32*sizeof(Float_t)) ;
+    memset(fMaya_PAD_Row_Max_cal,0,32*sizeof(Float_t)) ;
+
+    memset(fMaya_PAD_Col_Mult,0,32*sizeof(UShort_t)) ;
+    memset(fMaya_PAD_Col_Sum_cal,0,32*sizeof(Float_t)) ;
+    memset(fMaya_PAD_Col_Max_cal,0,32*sizeof(Float_t)) ;
+
+    // clean accordingly
+    for(unsigned int i=0;i<fMaya_PAD_E.size();i++){
+      if(fMaya_PAD_Neighbors.at(i)<fMaya_PAD_Neighbors_Min) {
+	fMaya_PAD_E_cal.at(i)=0.;
+	fMaya_PAD_Mult_cal-- ;
+      } else if (fMaya_PAD_E_cal.at(i)>0){
+	fMaya_PAD_Row_Mult[ fMaya_PAD_Row.at(i)-1]++ ;
+	fMaya_PAD_Row_Sum_cal[ fMaya_PAD_Row.at(i)-1] += fMaya_PAD_E_cal.at(i) ;
+	if(fMaya_PAD_Row_Max_cal[fMaya_PAD_Row.at(i)-1] < fMaya_PAD_E_cal.at(i)) {
+	  fMaya_PAD_Row_Max_cal[fMaya_PAD_Row.at(i)-1] = fMaya_PAD_E_cal.at(i) ;
+	} ;
+	fMaya_PAD_Col_Mult[ fMaya_PAD_Col.at(i)-1]++ ;
+	fMaya_PAD_Col_Sum_cal[ fMaya_PAD_Col.at(i)-1] += fMaya_PAD_E_cal.at(i) ;
+	if(fMaya_PAD_Col_Max_cal[fMaya_PAD_Col.at(i)-1] < fMaya_PAD_E_cal.at(i)) {
+	  fMaya_PAD_Col_Max_cal[fMaya_PAD_Col.at(i)-1] = fMaya_PAD_E_cal.at(i) ;
+	} ;
+      }
+    }
+
+  }
+
+ // if(!fMaya_QFIL_T.empty() && !fMaya_QFIL_T_calpar.empty() )
+{
+
+    fMaya_QFIL_T_cal.resize(fMaya_QFIL_T.size());
+
+    for(unsigned int i=0;i<fMaya_QFIL_T.size();i++){
+      
+      tmpCal = 0 ; 
+      
+      tmpNbr = fMaya_QFIL_T_Nbr.at(i) - 1 ;
+      if(fMaya_QFIL_T.at(i)>16380){ // timeout
+	fMaya_QFIL_T_cal.at(i) = 0 ;
+      } else {
+	if(fMaya_QFIL_T_Nbr.at(i)<fMaya_QFIL_T_calpar.size()){
+	  for(unsigned int j=0;j<fMaya_QFIL_T_calpar.at(tmpNbr).size();j++){
+	    tmpCal += pow(fMaya_QFIL_T.at(i),j)*fMaya_QFIL_T_calpar.at(tmpNbr).at(j) ;
+	  }
+	  fMaya_QFIL_T_cal.at(i) = tmpCal ;
+	  //fprintf(fichier_test,"%f \n",fMaya_QFIL_T_cal.at(i));
+	}
+      } 
+
+      
+      //      std::cout << fMaya_QFIL_T.at(i) << " " << 
+      //	fMaya_QFIL_T_cal.at(i) << std::endl ;
+    }
+    
+    
+  } 
+
+/*else {
+cout << "out Qfil " << endl ;
+    fMaya_QFIL_T_cal.clear();
+
+    //fclose(fichier_test);
+    return false ;
+
+
+  } */
+
+//////////////////////////////
+
+  
+
+  //if(!fMaya_Si_E.empty()&& !fMaya_Si_E_calpar.empty() )
+{
+//std::cout << "Do the calibration" << std::endl;
+    fMaya_Si_E_cal.resize(fMaya_Si_E.size());
+
+    for(unsigned int i=0;i<fMaya_Si_E.size();i++){
+      
+      tmpCal = 0 ; 
+      
+      tmpNbr = fMaya_Si_E_Nbr.at(i) - 1 ;
+      if(fMaya_Si_E.at(i)>16000){ // energy out
+	fMaya_Si_E_cal.at(i) = 0 ;
+      } else {
+	if(fMaya_Si_E_Nbr.at(i)<fMaya_Si_E_calpar.size()){
+	  for(unsigned int j=0;j<fMaya_Si_E_calpar.at(tmpNbr).size();j++){
+	    tmpCal += pow(fMaya_Si_E.at(i),j)*fMaya_Si_E_calpar.at(tmpNbr).at(j) ;
+	  }
+	  fMaya_Si_E_cal.at(i) = tmpCal ;
+	}
+      } 
+
+      
+          // std::cout << fMaya_Si_E.at(i) << " " << 
+      	//fMaya_Si_E_cal.at(i) << std::endl ;
+    }
+    
+    
+  } 
+
+/*else {
+std::cout << "No calib  Si E Size:" << fMaya_Si_E.size() << "   Calib size " << fMaya_Si_E_calpar.size() << std::endl;
+    fMaya_Si_E_cal.clear();
+    return false ;
+  } */
+
+
+
+
+/////////////////////////////  
+  return true ;
+}
+
+
+
+
+
+
diff --git a/NPLib/Maya/TMayaData.h b/NPLib/Maya/TMayaData.h
new file mode 100755
index 0000000000000000000000000000000000000000..461c8c9b0318861582123df46493860956ed00e6
--- /dev/null
+++ b/NPLib/Maya/TMayaData.h
@@ -0,0 +1,235 @@
+/*****************************************************************************
+ * Copyright (C) 2008   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: M. Vandebrouck   contact address: vandebro@ipno.in2p3.fr *
+ *                  J. Gibelin                      gibelin@lpccaen.in2p3.fr *
+ *                                                                           *
+ * Creation Date  : November 2011                                            *
+ * Last update    :                                                          *
+ *---------------------------------------------------------------------------*
+ * Decription: This class holds Maya raw data                                *
+ *                                                                           *
+ *---------------------------------------------------------------------------*
+ * Comment:                                                                  *
+ *                                                                           *
+ *****************************************************************************/
+#ifndef __MAYADATA__
+#define __MAYADATA__
+
+#include <vector>
+#include <map>
+
+#include "TObject.h"
+#include <iostream>
+#include "ConfigReader.h"
+
+#define	MAYA_PAD_NPARCAL 3
+#define	MAYA_PAD_NCHCAL	1024
+#define MAYA_PAD_SIZE 5 //mm
+#define MAYA_PAD_HEIGHT (MAYA_PAD_SIZE*0.8660254) //mm
+#define MAYA_QFIL_NCHCAL 33
+#define MAYA_QFIL_E_NPARCAL 2
+#define MAYA_QFIL_T_NPARCAL 2
+#define MAYA_SI_NCHCAL 20
+#define MAYA_SI_E_NPARCAL 2
+#define MAYA_SI_T_NPARCAL 2
+
+
+
+
+class TMayaData : public TObject {
+ private:
+
+ 
+  // (PAD)/CRAMS
+  vector<UShort_t> fMaya_PAD_Nbr;
+  vector<UShort_t> fMaya_PAD_Col;
+  vector<UShort_t> fMaya_PAD_Row;
+  vector<UShort_t> fMaya_PAD_E;
+  vector<Float_t> fMaya_PAD_x;
+  vector<Float_t> fMaya_PAD_y;
+
+  map<UShort_t,UShort_t> fMaya_PAD_map_idx ; //!
+  
+
+  bool bMaya_IsPAD_Calibrated ; 
+  bool bMaya_Clean_PADS ;  // boolean, parameter -> if true clean the PAD calibrated matrix
+  Int_t fMaya_PAD_Neighbors_Min; //! number of minimum Neighbors before cleaning
+  vector<vector<Float_t> > fMaya_PAD_E_calpar;//! 
+  vector<Float_t> fMaya_PAD_E_cal ;
+  vector<UShort_t> fMaya_PAD_Neighbors ;
+  Float_t fMaya_PAD_E_cal_threshold; //!
+  UShort_t fMaya_PAD_Mult_cal  ;
+  UShort_t fMaya_PAD_Row_Mult[32] ; 
+  Float_t fMaya_PAD_Row_Sum_cal[32] ; 
+  Float_t fMaya_PAD_Row_Max_cal[32] ; 
+  UShort_t fMaya_PAD_Col_Mult[32] ; 
+  Float_t fMaya_PAD_Col_Sum_cal[32] ; 
+  Float_t fMaya_PAD_Col_Max_cal[32] ; 
+
+  ULong64_t fMaya_PAD_Sum ;   
+  Float_t fMaya_PAD_Sum_cal ;   
+
+  // (QFIL)
+  bool bMaya_IsQFIL_Calibrated ;
+  vector<UShort_t> fMaya_QFIL_E_Nbr ;
+  vector<UShort_t> fMaya_QFIL_T_Nbr ;
+
+  vector<vector<Float_t> > fMaya_QFIL_E_calpar;//! 
+  vector<UShort_t> fMaya_QFIL_E ;
+  vector<Float_t> fMaya_QFIL_E_cal ;
+  vector<vector<Float_t> > fMaya_QFIL_T_calpar;//! 
+  vector<UShort_t> fMaya_QFIL_T ;
+  vector<Float_t> fMaya_QFIL_T_cal ;
+
+  ULong64_t fMaya_QFIL_Sum ;   
+  Float_t fMaya_QFIL_Sum_cal ;   
+
+  // (Max) 
+  // Float_t fMaya_Max_cal ;
+  // UShort_t fMaya_Max_Nbr ;
+
+  // Silicons
+  bool bMaya_IsSi_Calibrated ;
+  //  vector<UShort_t>  fMaya_Si_Nbr; // TODO
+  // * Energy * //
+  vector<UShort_t>  fMaya_Si_E_Nbr;
+  vector<UShort_t>  fMaya_Si_E;
+  vector<vector<Float_t> > fMaya_Si_E_calpar;//! 
+  vector<Float_t>  fMaya_Si_E_cal;
+  // * Time * //
+  //  map<UShort_t, UShort_t> fMaya_Si_EvsT_index; //! TODO
+  vector<UShort_t>  fMaya_Si_T_Nbr;
+  vector<UShort_t>  fMaya_Si_T;
+  vector<vector<Float_t> > fMaya_Si_T_calpar;//! 
+  vector<Float_t>  fMaya_Si_T_cal;
+
+  // FADC : to record wire pulses
+  vector<UShort_t> fMaya_QFil_Pulse_E; 
+  vector<UShort_t> fMaya_QFil_Pulse_Nbr; // sample number  
+  vector<UShort_t> fMaya_QFil_Pulse_Ch;  // FADC channel: [0:3]
+  map<UShort_t, UShort_t> fMaya_QFil_Pulse_map_Current_Nbr; //! keep track of current FADC sanple number within on channel, not save
+  vector<ULong64_t> fMaya_QFil_Pulse_Sum ;
+  vector<ULong64_t> fMaya_QFil_Pulse_Sum_Ch ;
+
+  // TOF
+  UShort_t fMaya_TOF_GAL_HF ;
+  UShort_t fMaya_TOF_GAL_DIAM ;
+  UShort_t fMaya_TOF_TM_TRIG ;
+
+ public:
+  TMayaData();
+  virtual ~TMayaData();
+
+  void	Clear();
+  void	Dump();
+   
+  /*           GETTERS           */
+  // (E)
+  UShort_t GetEsize(void)     {return fMaya_PAD_E.size();}
+  UShort_t GetEnergy(Int_t i) {return fMaya_PAD_E.at(i);}
+  UShort_t GetNbr(Int_t i)    {return fMaya_PAD_Nbr.at(i);}
+  UShort_t GetCol(Int_t i)    {return GetPadCol(fMaya_PAD_Nbr.at(i));}
+  UShort_t GetRow(Int_t i)    {return GetPadRow(fMaya_PAD_Nbr.at(i));}
+  //
+  Float_t GetEnergy_cal(Int_t i) {return fMaya_PAD_E_cal.at(i);}
+  /*
+  UShort_t *GetEnergy_cal(void) { 
+    UShort_t *a = new UShort_t [fMaya_PAD_E_cal.size()];
+    copy(fMaya_PAD_E_cal.begin(),fMaya_PAD_E_cal.end(), a);
+    return a;
+  }
+  */
+  UShort_t GetPADMult_cal(){ return fMaya_PAD_Mult_cal  ; }
+
+  //sum
+  ULong64_t GetPADSum()          {return fMaya_PAD_Sum;}
+  Float_t   GetPADSum_cal()      {return fMaya_PAD_Sum_cal;}
+  // si
+  UShort_t  GetEnergySi(Int_t i) { return fMaya_Si_E.at(i) ;} // for backward compatibility
+
+  UShort_t  GetSi_E_size()     {return fMaya_Si_E_Nbr.size();}
+  UShort_t  GetSi_E(Int_t i)   {return fMaya_Si_E.at(i);}
+  Float_t   GetSi_E_cal(Int_t i) {return fMaya_Si_E_cal.at(i);}
+  UShort_t  GetSi_E_Nbr(Int_t i)  {return fMaya_Si_E_Nbr.at(i);}
+  
+  UShort_t  GetSi_T_size()     {return fMaya_Si_T_Nbr.size();}
+  UShort_t  GetSi_T(Int_t i)   {return fMaya_Si_T.at(i);}
+  UShort_t  GetSi_T_Nbr(Int_t i)  {return fMaya_Si_T_Nbr.at(i);}
+
+
+  // wires
+  UShort_t  GetQFil_E_size()     {return fMaya_QFIL_E_Nbr.size();}
+  UShort_t  GetQFil_E(Int_t i)   {return fMaya_QFIL_E.at(i);}
+  UShort_t  GetQFil(Int_t i)   {return fMaya_QFIL_E.at(i);} // for backward compatibility
+  UShort_t  GetQFil_E_Nbr(Int_t i)  {return fMaya_QFIL_E_Nbr.at(i);}
+  
+  UShort_t  GetQFil_T_size()     {return fMaya_QFIL_T_Nbr.size();}
+  UShort_t  GetQFil_T(Int_t i)   {return fMaya_QFIL_T.at(i);}
+  Float_t  GetQFil_T_cal(Int_t i)   {return fMaya_QFIL_T_cal.at(i);}
+  UShort_t  GetQFil_T_Nbr(Int_t i)  {return fMaya_QFIL_T_Nbr.at(i);}
+
+  UShort_t  GetQFilPulse_size(void)   {return fMaya_QFil_Pulse_E.size();}
+  UShort_t  GetQFilPulse(Int_t i)   {return fMaya_QFil_Pulse_E.at(i);}
+  UShort_t  GetQFilPulseCh(Int_t i)   {return fMaya_QFil_Pulse_Ch.at(i);}
+  UShort_t  GetQFilPulseNbr(Int_t i)   {return fMaya_QFil_Pulse_Nbr.at(i);}
+  ULong64_t  GetQFilPulseSum(Int_t i)   {return fMaya_QFil_Pulse_Sum.at(i);}
+  UShort_t  GetQFilPulseSumCh(Int_t i)   {return fMaya_QFil_Pulse_Sum_Ch.at(i);}
+
+
+  /*           SETTERS           */
+  //sum
+  void SetPADSum(UShort_t E)        {fMaya_PAD_Sum += (Int_t)E ; }
+  void SetQFILSum(UShort_t E)        {fMaya_QFIL_Sum += (Int_t)E ; }
+  // (PAD)
+  void	SetEnergyPad_CR(UShort_t C, UShort_t R, UShort_t E) ; // column, row, energy
+  void	SetEnergyPad(UShort_t N, UShort_t E) ; // cumulated index, energy
+  
+  Int_t GetPadIdx(UShort_t C, UShort_t R){ return (R-1)*32+C;}; // from 1 to 1024
+  Int_t GetPadCol(UShort_t I){return int((I-1)%32)+1;};
+  Int_t GetPadRow(UShort_t I){return int((I-1)/32)+1;};
+
+
+  // QFIL
+  void SetQfil(UShort_t N,UShort_t E) {
+    fMaya_QFIL_E_Nbr.push_back(N);
+    fMaya_QFIL_E.push_back(E) ;
+    if(bMaya_IsQFIL_Calibrated){
+      fMaya_QFIL_E_cal.push_back(-1) ;
+    }
+  }
+
+  void SetTfil(UShort_t N,UShort_t T) {
+    fMaya_QFIL_T_Nbr.push_back(N);
+    fMaya_QFIL_T.push_back(T) ;
+    if(bMaya_IsQFIL_Calibrated){
+      fMaya_QFIL_T_cal.push_back(-1) ;
+    }
+  }
+
+  void SetQFilPulse(UShort_t N,UShort_t E); 
+
+  // SI
+  void SetEnergySi(UShort_t ,UShort_t );
+  void SetTimeSi(UShort_t ,UShort_t );
+
+  /*           CALIBRATION       */
+  bool InitCalibrate(std::vector<string>&) ; //!
+  bool Calibrate(void) ;                     //!
+  
+  // TOF
+
+  void SetTOF(UShort_t ,UShort_t ) ;
+  UShort_t GetTOF_GAL_HF() { return fMaya_TOF_GAL_HF ; } ;
+  UShort_t GetTOF_GAL_DIAM() { return fMaya_TOF_GAL_DIAM ; } ;
+  UShort_t GetTOF_TM_TRIG() { return fMaya_TOF_TM_TRIG ; } ;
+
+  ClassDef(TMayaData,2)  // MayaData structure
+    };
+
+#endif
diff --git a/NPLib/Maya/TMayaHisto.cxx b/NPLib/Maya/TMayaHisto.cxx
new file mode 100755
index 0000000000000000000000000000000000000000..fb60d48533ded43db9c510950a247efed5eea8ef
--- /dev/null
+++ b/NPLib/Maya/TMayaHisto.cxx
@@ -0,0 +1,1781 @@
+/*****************************************************************************
+ * Copyright (C) 2008   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: M. Vandebrouck   contact address: vandebro@ipno.in2p3.fr *
+ *                  J. Gibelin                      gibelin@lpccaen.in2p3.fr *
+ *                                                                           *
+ * Creation Date  : November 2011                                            *
+ * Last update    :                                                          *
+ *---------------------------------------------------------------------------*
+ * Decription: This class holds a special 2D Maya histogram                  *
+ *                                                                           *
+ *---------------------------------------------------------------------------*
+ * Comment:                                                                  *
+ *                                                                           *
+ *****************************************************************************/
+#include "TMayaHisto.h"
+
+//______________________________________________________________________________
+//                     TMayaHisto methods
+//  TMayaHisto a 2-D histogram with four bytes per cell (float)
+//______________________________________________________________________________
+
+ClassImp( TMayaHisto)
+
+   //______________________________________________________________________________
+TMayaHisto::TMayaHisto() :
+	TH2F() {
+	fHoneyCombBins = NULL;
+	fGCuts = NULL;
+	fRanges = NULL;
+	fRangeFunction = NULL;
+
+	fHoneyCombBins = new TClonesArray("TCutG", fNcells);
+	fRangeFunction = new TF1();
+	fGCuts = new TList();
+	fRanges = new TList();
+
+	fGCuts->SetOwner();
+	fRanges->SetOwner();
+	fHoneyCombBins->SetOwner();
+
+	// Constructor.
+}
+
+//______________________________________________________________________________
+TMayaHisto::~TMayaHisto() {
+	if (fHoneyCombBins) {
+		delete (fHoneyCombBins);
+		fHoneyCombBins = NULL;
+	}
+	if (fRangeFunction) {
+		delete (fRangeFunction);
+		fRangeFunction = NULL;
+	}
+	if (fGCuts) {
+		delete (fGCuts);
+		fGCuts = NULL;
+	}
+	if (fRanges) {
+		delete (fRanges);
+		fRanges = NULL;
+	}
+
+	// Destructor.
+}
+//______________________________________________________________________________
+TMayaHisto::TMayaHisto(const char *name, const char *title, Int_t nbinsx,
+		Int_t nbinsy, Double_t hsize) :
+	TH2F(name, title, nbinsx, 1.1, 1.1 + nbinsx, nbinsy, 1.1, 1.1 + nbinsx)
+/*
+ :TH2(name,title,
+ nbinsx,0,(nbinsx+(nbinsx>1)/2.)*hsize*TMath::Sqrt(3),
+ nbinsy,0,(int((nbinsy)/2)*3+.5+nbinsy%2*1.5)*hsize)
+ */// fill by (x,y)
+{
+
+	// Constructor.
+
+	fMinimum = -1111;
+	fMaximum = -1111;
+	fHoneyCombBins = NULL;
+	fGCuts = NULL;
+	fRanges = NULL;
+	fRangeFunction = NULL;
+
+	fHoneyCombSize = fabs(hsize);
+	fLineColor = 1;
+	if (hsize > 0) {
+		bShiftHexagon = 1;
+	} else {
+		bShiftHexagon = 0;
+	}
+	GetXaxis()->SetTickLength(0);
+	GetYaxis()->SetTickLength(0);
+	GetXaxis()->SetAxisColor(gStyle->GetCanvasColor());
+	GetYaxis()->SetAxisColor(gStyle->GetCanvasColor());
+	GetXaxis()->SetLabelColor(gStyle->GetCanvasColor());
+	GetYaxis()->SetLabelColor(gStyle->GetCanvasColor());
+
+	//GetYaxis()->SetBinLabel(nbinsy,atoi(1));
+
+	TArrayF::Set(fNcells);
+	if (fgDefaultSumw2)
+		Sumw2();
+	CreateHoneyCombStructure();
+
+	// Track
+	fLastNormalAxis = -1;
+	fOriginWeigh = .5;
+
+	nTrack = 0;
+	fGCuts = new TList;
+	fRanges = new TList;
+
+	fGCuts->SetOwner();
+	fRanges->SetOwner();
+	fHoneyCombBins->SetOwner();
+
+	fRangeFunction = new TF1("_dfltRangeFunction_", _dfltRangeFunction_, 0,
+			TMath::Sqrt(3* (TMath ::Power(nbinsx,2)+TMath::Power(nbinsy,2))),3);
+			fRangeFunction->SetParNames("base","range","slope");
+			fSearchDiv = 10;
+			fRangeThresRatio = .1;
+			fRangePrecision = fHoneyCombSize*.1;
+			// Style
+					fTCutGPatternStyle = 3001;
+				}
+
+	//______________________________________________________________________________
+TMayaHisto::TMayaHisto(const TMayaHisto &h2f) :
+	TH2F() {
+	// Copy constructor.
+
+	((TMayaHisto&) h2f).Copy(*this);
+}
+//______________________________________________________________________________
+
+TCutG *TMayaHisto::Hexagon(TString name, Float_t x0, Float_t y0) {
+	//  Float_t x [7] = {0},y[7] = {0} ;
+	Float_t x[7] = { -.5, 0, 0.5, 0.5, 0, -.5, -.5 };
+	Float_t y[7] = { 1. / 3., 2. / 3., 1. / 3., -1. / 3., -2. / 3., -1. / 3.,
+			1. / 3. };
+	for (int i = 0; i < 7; i++) {
+		//    x[i] = x0 + TMath::Cos(TMath::Pi()/3.*i+TMath::PiOver2());//* fHoneyCombSize ;
+		//    y[i] = y0 + TMath::Sin(TMath::Pi()/3.*i+TMath::PiOver2());//* fHoneyCombSize ;
+		x[i] *= 1 + 1e-3; // to be sure that boundaries overlap !
+		y[i] *= 1 + 1e-3; // to be sure that boundaries overlap !
+		x[i] += x0;
+		y[i] += y0;
+	}
+	TCutG *h = new TCutG(name.Data(), 7, x, y);
+	h->SetFillStyle(1000);
+	return h;
+}
+
+//______________________________________________________________________________
+void TMayaHisto::CreateHoneyCombStructure() {
+	fHoneyCombBins = new TClonesArray("TCutG", fNcells);
+	fHoneyCombBins->BypassStreamer(kFALSE);
+	fHoneyCombBins->SetOwner();
+	TString name;
+	TObject* obj;
+	Int_t bin;
+	Float_t x[7];
+	Float_t y[7];
+	// TClonesArray &ar = *fHoneyCombBins;
+	for (int i = 0; i < this->GetXaxis()->GetNbins(); i++) {
+		for (int j = 0; j < this->GetYaxis()->GetNbins(); j++) {
+			name = TString("pad_") + (Long_t)(i + 1) + TString("_") + (Long_t)(
+					j + 1);
+			bin = GetBin(i, j);
+			x[0]= -0.5;
+			x[1]=  0.0;
+			x[2]=  0.5;
+			x[3]=  0.5;
+			x[4]=  0.0;
+			x[5]= -0.5;
+			x[6]= -0.5;
+			y[0]=  1./3.;
+			y[1]=  2./3.;
+			y[2]=  1./3.;
+			y[3]= -1./3.;
+			y[4]= -2./3.;
+			y[5]= -1./3.;
+			y[6]=  1./3.;
+			for (int l = 0; l < 7; l++) {
+				x[l] *= 1 + 1e-3; // to be sure that boundaries overlap !
+				y[l] *= 1 + 1e-3; // to be sure that boundaries overlap !
+				x[l] += GetCdisp(i + 1, j + 1);
+				y[l] += GetRdisp(i + 1, j + 1);
+			}
+
+			new ((*fHoneyCombBins)[bin]) TCutG(name.Data(), 7, x, y);
+			obj = (fHoneyCombBins)->At(bin);
+			((TCutG*) obj)->SetFillStyle(1000);
+
+		}
+	}
+}
+
+//
+// Fill histogram according to position, not PAD indexes.
+//______________________________________________________________________________
+
+Int_t TMayaHisto::FillXY(Double_t X, Double_t Y, Double_t W) {
+	Int_t C, R;
+	if (GetCR(X, Y, C, R))
+		return Fill(C, R, W);
+	return 0;
+}
+
+//______________________________________________________________________________
+
+void TMayaHisto::Paint(Option_t *option = "") {
+	GetPainter(option);
+	//  gPad->SetFrameLineColor(gStyle->GetCanvasColor());
+	//  gPad->SetFrameFillStyle(4000);
+	//  gPad->SetFillStyle(4000);
+	//  gPad->SetFrameLineColor(gStyle->GetCanvasColor());
+
+	Double_t min, max;
+	if (fMinimum == -1111) {
+		min = GetMinimum();
+		if (min < 0)
+			min = 0;
+		fMinimum = min;
+	} else {
+		min = fMinimum;
+	}
+	if (fMaximum == -1111) {
+		max = GetMaximum();
+	} else {
+		max = fMaximum;
+	}
+
+	Int_t ncol = gStyle->GetNumberOfColors();
+
+	GetZaxis()->Set(ncol, min, max);
+
+	if (fPainter) {
+		fPainter->Paint("colz,hist");
+		fPainter->Paint("axis");
+		gPad->Clear();
+		if (GetEntries() != 0
+				&& (GetZaxis()->GetXmin() < GetZaxis()->GetXmax()))
+			((THistPainter*) fPainter)->PaintPalette();
+	}
+	gPad->Clear();
+
+	Int_t q = 0;
+	for (int i = 0; i < this->GetXaxis()->GetNbins(); i++) {
+		for (int j = 0; j < this->GetYaxis()->GetNbins(); j++) {
+			if (fArray[GetBin(i, j)] > min && max > 0) {
+				if (gPad->GetLogz()) {
+					q = int(log(fArray[GetBin(i, j)] - min + 1e-6) / log(max
+							- min + 1e-6) * ncol);
+				} else {
+					q = int((fArray[GetBin(i, j)] - min) / (max - min) * ncol);
+				}
+				GetPAD(i + 1, j + 1)->SetFillColor(gStyle->GetColorPalette(q
+						- 1));
+			} else {
+				if (GetPAD(i + 1, j + 1)->GetFillStyle() == 1000) {
+					GetPAD(i + 1, j + 1)->SetFillStyle(0);
+					GetPAD(i + 1, j + 1)->SetFillColor(
+							GetPAD(i + 1, j + 1)->GetLineColor());
+				} else {
+					GetPAD(i + 1, j + 1)->SetFillColor(
+							GetPAD(i + 1, j + 1)->GetLineColor());
+				}
+			}
+
+			//    if(((TCutG*)fHoneyCombBins->At(GetBin(i,j)))->GetFillColor()>0){
+			//    ((TCutG*)fHoneyCombBins->At(GetBin(i,j)))->SetLineWidth(fLineWidth);
+			GetPAD(i + 1, j + 1)->SetLineColor(fLineColor);
+			//    }
+			GetPAD(i + 1, j + 1)->Draw("f");
+			GetPAD(i + 1, j + 1)->Draw();
+
+		}
+	}
+
+	TIter next(GetListOfFunctions());
+	TObject *obj;
+
+	while ((obj = next())) { // loop over all functions
+		if (obj->InheritsFrom("TF1") && (strncmp(obj->GetName(), "disp", 4)
+				== 0)) {
+			obj->Draw("same");
+		} else if (!obj->InheritsFrom("TF1") && !obj->InheritsFrom("TH1")) {
+			obj->Draw("same");
+		}
+		/*
+		 if (obj->InheritsFrom("TAttMarker") && !obj->InheritsFrom("TF1")){
+		 obj->Draw("same");
+		 }
+		 if (obj->InheritsFrom("TAttMarker") && !obj->InheritsFrom("TF1")){
+		 obj->Draw("same");
+		 }
+		 */
+	}
+
+	//  if(GetFunction("TPolyMarker")) GetFunction("TPolyMarker")->Draw();
+}
+
+//______________________________________________________________________________
+void TMayaHisto::Copy(TObject &newth2) const {
+	// Copy.
+
+	TH2F::Copy((TMayaHisto&) newth2);
+}
+
+//______________________________________________________________________________
+TH1 *TMayaHisto::DrawCopy(Option_t *option) const {
+	// Draw copy.
+
+	TString opt = option;
+	opt.ToLower();
+	if (gPad && !opt.Contains("same"))
+		gPad->Clear();
+	TMayaHisto *newth2 = (TMayaHisto*) Clone();
+	newth2->SetDirectory(0);
+	newth2->SetBit(kCanDelete);
+	newth2->AppendPad(option);
+	return newth2;
+}
+
+//______________________________________________________________________________
+Double_t TMayaHisto::GetBinContent(Int_t bin) const {
+	// Get bin content.
+
+	if (fBuffer)
+		((TH2C*) this)->BufferEmpty();
+	if (bin < 0)
+		bin = 0;
+	if (bin >= fNcells)
+		bin = fNcells - 1;
+	if (!fArray)
+		return 0;
+	return Double_t(fArray[bin]);
+}
+
+//______________________________________________________________________________
+void TMayaHisto::Reset(Option_t *option) {
+	//*-*-*-*-*-*-*-*Reset this histogram: contents, errors, etc*-*-*-*-*-*-*-*
+	//*-*            ===========================================
+
+	TH2F::Reset(option);
+	//TArrayF::Reset();
+	nTrack = 0;
+	fLastNormalAxis = -1;
+	fGCuts->Clear();
+	fRanges->Clear();
+
+	TIter next(GetArrayOfPADs());
+	TObject *obj;
+	while ((obj = next())) {
+		((TCutG*) obj)->SetFillStyle(1000);
+		((TCutG*) obj)->SetFillColor(gStyle->GetCanvasColor());
+		((TCutG*) obj)->SetLineColor(fLineColor);
+	}
+
+}
+
+//______________________________________________________________________________
+void TMayaHisto::SetBinContent(Int_t bin, Double_t content) {
+	// Set bin content
+	if (bin < 0)
+		return;
+	if (bin >= fNcells)
+		return;
+	fArray[bin] = Float_t(content);
+	fEntries++;
+	fTsumw = 0;
+}
+
+//______________________________________________________________________________
+void TMayaHisto::SetBinsLength(Int_t n) {
+	// Set total number of bins including under/overflow
+	// Reallocate bin contents array
+
+	if (n < 0)
+		n = (fXaxis.GetNbins() + 2) * (fYaxis.GetNbins() + 2);
+	fNcells = n;
+	TArrayF::Set(n);
+}
+
+//
+// Return a pointer on the PAD at C,R
+//______________________________________________________________________________
+
+TCutG* TMayaHisto::GetPAD(Int_t C, Int_t R) {
+	return (TCutG*) fHoneyCombBins->At(GetBin(C - 1, R - 1));
+}
+
+//
+// Return a pointer on the PAD at X,Y
+//______________________________________________________________________________
+
+TCutG* TMayaHisto::GetPADXY(Double_t X, Double_t Y) {
+	Int_t C, R;
+	if (GetCR(X, Y, C, R))
+		return GetPAD(C, R);
+	return NULL;
+}
+
+//
+// Return the corresponding Y of the PAD in the ROOT referential
+//
+//    we want :                but we have in root :
+//
+//    +----------> x (C)       y (C)
+//    |			       ^
+//    |			       |
+//    |			       |
+//    V			       |
+//    y (R)                    +----------> x (R)
+//______________________________________________________________________________
+
+Double_t TMayaHisto::GetCdisp(Double_t C, Double_t R) {
+	Double_t fR, iR;
+	fR = modf(R, &iR);
+	return C + (int(iR - bShiftHexagon) % 2) / 2. + Xview_corr;
+}
+
+Double_t TMayaHisto::GetRdisp(Double_t C, Double_t R) {
+	return (GetYaxis()->GetNbins() - R) + Yview_corr + 1;
+}
+
+//
+// Give the X position  corresponding to the PAD(c,r)
+//______________________________________________________________________________
+
+Double_t TMayaHisto::GetX(Int_t C, Int_t R) {
+	if (C > 0 && R > 0 && C <= GetXaxis()->GetNbins() && R
+			<= GetYaxis()->GetNbins()) {
+		return fHoneyCombSize * TMath::Sqrt(3) / 2. * (2* C - (R + 1
+				- bShiftHexagon) % 2); // tested
+	} else {
+		return 0;
+	}
+}
+
+//
+// Give the Y position  corresponding to the PAD(c,r)
+//______________________________________________________________________________
+
+Double_t TMayaHisto::GetY(Int_t C, Int_t R) {
+	if (C > 0 && R > 0 && C <= GetXaxis()->GetNbins() && R
+			<= GetYaxis()->GetNbins()) {
+		return fHoneyCombSize * (1 + (R - 1) * 1.5); // tested
+	} else {
+		return 0;
+	}
+}
+
+//
+// Give the PAD C and R position  corresponding to the position (X,Y)
+// To avoid complicated calculations :
+// - find the "easiest" (in terms of analytical solution) pad
+// - check if the point is inside this pad
+// - otherwise check "intelligently" the neighbours
+// - of course exit as soon as found !
+//______________________________________________________________________________
+
+
+Bool_t TMayaHisto::GetCR(Double_t X, Double_t Y, Int_t &C, Int_t &R) {
+	Double_t fC = (Double_t) C, fR = (Double_t) R;
+	if (__GetCR__(X, Y, fC, fR, kFALSE)) {
+		C = int(fC);
+		R = int(fR);
+		return kTRUE;
+	}
+	return kFALSE;
+}
+
+//
+// Return X,Y from C,R displayed
+//______________________________________________________________________________
+
+
+Bool_t TMayaHisto::GetXY_CRdisp(Double_t fCd, Double_t fRd, Double_t &X,
+		Double_t &Y) { // from C,R fractional displayed to X
+
+	if (fCd > GetXaxis()->GetXmin() && fRd > GetYaxis()->GetXmin() && fCd
+			< GetXaxis()->GetXmax() && fRd < GetYaxis()->GetXmax()) { // strictly to avoid border effects !
+
+		X = (fCd - (Xview_corr + .5)) * (fHoneyCombSize * TMath::Sqrt(3))
+				* (GetXaxis()->GetXmax() - GetXaxis()->GetXmin())
+				/ GetXaxis()->GetNbins();
+
+		Y = ((Yview_corr - .4 - .1 / 3.) + GetYaxis()->GetXmax() - fRd)
+				* (fHoneyCombSize * 1.5) * (GetYaxis()->GetXmax()
+				- GetYaxis()->GetXmin()) / GetYaxis()->GetNbins();
+
+		return kTRUE;
+	} else {
+		return kFALSE;
+	}
+	return kFALSE;
+}
+
+//Double_t GetY_CRdisp(Double_t,Double_t){ // from C,R fractional displayed to Y
+//  return
+//}
+
+//
+//
+//______________________________________________________________________________
+
+Bool_t TMayaHisto::GetCR(Double_t X, Double_t Y, Double_t &C, Double_t &R) {
+	return __GetCR__(X, Y, C, R, kTRUE);
+}
+
+Bool_t TMayaHisto::GetCRdisp_XY(Double_t X, Double_t Y, Double_t &C,
+		Double_t &R) {
+
+	C = (Xview_corr + .5) + X / (fHoneyCombSize * TMath::Sqrt(3))
+			/ (GetXaxis()->GetXmax() - GetXaxis()->GetXmin())
+			* GetXaxis()->GetNbins();
+	R = (Yview_corr - .4 - .1 / 3.) + GetYaxis()->GetXmax() - (Y
+			/ fHoneyCombSize / 1.5) / (GetYaxis()->GetXmax()
+			- GetYaxis()->GetXmin()) * GetYaxis()->GetNbins();
+
+	if (C > GetXaxis()->GetXmin() && R > GetYaxis()->GetXmin() && C
+			< GetXaxis()->GetXmax() && R < GetYaxis()->GetXmax()) { // strictly to avoid border effects !
+		return kTRUE;
+	} else {
+		return kFALSE;
+	}
+}
+
+Bool_t TMayaHisto::__GetCR__(Double_t X, Double_t Y, Double_t &C, Double_t &R,
+		Bool_t IsFrac) {
+
+	Double_t fR = (Y / fHoneyCombSize - 1.) / 1.5 + 1;
+	Int_t iR = TMath::Nint(fR + 1e-6);
+
+	Double_t fC = (X / (TMath::Sqrt(3) * fHoneyCombSize)) - .5*
+			( (iR+bShiftHexagon)%2);
+			Int_t iC = TMath::Nint(fC+1e-6);
+
+			// std::cerr << "#C# C: "  << C <<
+			//      " " << R << " " << fC << " " << fR << " " << GetCdisp(fC,fR) << " " << GetRdisp(fC,fR) << std::endl;
+			C = -1; R = -1;
+			if(GetPAD(iC,iR)==NULL) return kFALSE;
+
+			if(GetPAD(iC,iR)->IsInside(GetCdisp(fC,fR),GetRdisp(fC,fR))) {
+				if(IsFrac) {
+					C = (iC) + (X-GetX(iC,iR))/(TMath::Sqrt(3)*fHoneyCombSize) ;
+      R = (iR) + (Y-GetY(iC,iR))/(TMath::Sqrt(3)*fHoneyCombSize) ;
+      //      std::cerr << iC << " + " << X << "-" << GetX(iC,iR) << " = " << C << std::endl ;
+      //      std::cerr << iR << " + " << Y << "-" << GetY(iC,iR) << " = " << R << std::endl ;
+      return kTRUE;
+    } else {
+      C = iC ; R = iR ;
+      return kTRUE;
+    }
+  } else {
+    for(int i=-1;i<=1;i++){
+      for(int j=-1;j<=1;j++){
+	if(GetPAD(iC+i,iR+j)!=NULL){
+	  if(GetPAD(iC+i,iR+j)->IsInside(GetCdisp(fC,fR),GetRdisp(fC,fR))){
+	    if(IsFrac){
+	      C = (iC+i) + (X-GetX(iC+i,iR+j))/(TMath::Sqrt(3)*fHoneyCombSize) ;
+	      R = (iR+j) + (Y-GetY(iC+i,iR+j))/(TMath::Sqrt(3)*fHoneyCombSize) ;
+	      //	      std::cerr << iC+i << " + " << X << "-" << GetX(iC+i,iR+j) << " = " << C << " []" << std::endl ;
+	      //	      std::cerr << iR+j << " + " << Y << "-" << GetY(iC+i,iR+j) << " = " << R << " []" << std::endl ;
+	      return kTRUE;
+	    } else {
+	      C = iC+i ; R = iR+j ;
+	      return kTRUE;
+	    }
+	  }
+	}
+      }
+    }
+
+  }
+  C = -1 ;
+  R = -1 ;
+  return kFALSE ;
+}
+
+	//
+	// Give the PAD C position  corresponding to the position (X,Y)
+	//______________________________________________________________________________
+
+Int_t TMayaHisto::GetC(Double_t X, Double_t Y) {
+	Int_t C, R;
+	GetCR(X, Y, C, R);
+	return C;
+}
+
+//
+// Give the PAD R position  corresponding to the position (X,Y)
+//______________________________________________________________________________
+
+Int_t TMayaHisto::GetR(Double_t X, Double_t Y) {
+	Int_t C, R;
+	GetCR(X, Y, C, R);
+	return R;
+}
+
+//
+// Give the PAD C position (fractional) corresponding to the position (X,Y)
+//______________________________________________________________________________
+
+Double_t TMayaHisto::GetfC(Double_t X, Double_t Y) {
+	Double_t C, R;
+	GetCR(X, Y, C, R);
+	return C;
+}
+
+//
+// Give the PAD R position (fractional) corresponding to the position (X,Y)
+//______________________________________________________________________________
+
+Double_t TMayaHisto::GetfR(Double_t X, Double_t Y) {
+	Double_t C, R;
+	GetCR(X, Y, C, R);
+	return R;
+}
+
+Double_t TMayaHisto::Axis_Angle[] = { TMath::Pi() / 3., -TMath::Pi() / 3., 0. };
+
+/*  HoneyComb symetry axis definition
+
+ / \ / \ / \ / \            axis 2
+ |   |   |   |   |     \   /
+ / \ / \ / \ / \ /       \ /
+ |   |   |   |   |    -----X------ axis 3
+ / \ / \ / \ / \       / \
+        |   |   |   |   |     /   \
+	 \ / \ / \ / \ /           axis 1
+
+ */
+
+//______________________________________________________________________________
+//
+// Give the Label corresponding to the PAD(c,r) for the Axis n
+//______________________________________________________________________________
+
+Int_t TMayaHisto::GetAxisLbl(Int_t C, Int_t R, Int_t N) {
+	switch (N) {
+	// -- Axis 1
+	case 1:
+		return C - int((R + bShiftHexagon) / 2.) + int(GetYaxis()->GetNbins()
+				/ 2.);
+		// -- Axis 2
+	case 2:
+		return C + int((R + 1 - bShiftHexagon) / 2);
+		// -- Axis 3
+	case 3:
+		return R;
+	}
+	return 0;
+}
+
+//______________________________________________________________________________
+//
+// Give the Index corresponding to the PAD(c,r) for the Axis N
+//______________________________________________________________________________
+
+Int_t TMayaHisto::GetAxisIdx(Int_t C, Int_t R, Int_t N) {
+	switch (N) {
+	// -- Axis 1
+	case 1:
+		if (bShiftHexagon == 1) {
+			return (GetAxisLbl(C, R, N) < int(GetYaxis()->GetNbins() / 2.) ? 2*
+					C - (R % 2) : R);
+		} else {
+			return (GetAxisLbl(C, R, N) <= int(GetYaxis()->GetNbins() / 2.) ? 2*
+					C + (R % 2) - 1
+					: R);
+		}
+		// -- Axis 2
+	case 2:
+		if (bShiftHexagon == 1) {
+			return (GetAxisLbl(C, R, N) <= GetXaxis()->GetNbins() ? R : 2*
+					(GetXaxis ()->GetNbins()-C)+R%2+1);
+				} else {
+					return (GetAxisLbl(C,R,N)<=GetXaxis()->GetNbins()?R:2*(GetXaxis()->GetNbins()-C)-R%2+2);
+    }
+			// -- Axis 3
+			case 3: return C;
+		}
+		return 0;
+	}
+
+	// ******* REVERSE FUNCTIONS ***********
+
+	//______________________________________________________________________________
+	//
+	// Give the Col corresponding to the PAD(Lbl,Idx) for the Axis N
+	//______________________________________________________________________________
+
+Int_t TMayaHisto::GetAxisCol(Int_t L, Int_t I, Int_t N) {
+	switch (N) {
+	// -- Axis 1
+	case 1:
+		return (L <= int(GetYaxis()->GetNbins() / 2) ? int(I / 2) + (I) % 2 : L
+				+ int((I + bShiftHexagon) / 2.) - int(GetYaxis()->GetNbins()
+				/ 2));
+		// -- Axis 2
+	case 2:
+		if (bShiftHexagon == 1) {
+			return (L <= GetXaxis()->GetNbins() ? L - int(I / 2)
+					: GetXaxis()->GetNbins() - int((I - 1) / 2.));
+		} else {
+			return (L <= GetXaxis()->GetNbins() ? L - int((I + 1) / 2)
+					: GetXaxis()->GetNbins() - int((I - 1) / 2.));
+		}
+		// -- Axis 3
+	case 3:
+		return I;
+	}
+	return 0;
+}
+
+//______________________________________________________________________________
+//
+// Give the Row corresponding to the PAD(Lbl,Idx) for the Axis N
+//______________________________________________________________________________
+
+Int_t TMayaHisto::GetAxisRow(Int_t L, Int_t I, Int_t N) {
+	switch (N) {
+	// -- Axis 1
+	case 1:
+		if (bShiftHexagon == 1) {
+			return (L < int(GetYaxis()->GetNbins() / 2) ? I - 2* L + 2*
+					int (GetYaxis()->GetNbins()/2):I);
+				} else {
+					return (L<int(GetYaxis()->GetNbins()/2)?1+I+2*(int(GetYaxis()->GetNbins()/2)-L):I);
+    }
+			// -- Axis 2
+			case 2: if(bShiftHexagon==1) {
+				return (L<=GetXaxis()->GetNbins()?I:2*(L-GetXaxis()->GetNbins())+I-1);
+			} else {
+				return (L<=GetXaxis()->GetNbins()?I:I+2*(L-GetXaxis()->GetNbins()-1));
+			}
+			// -- Axis 3
+			case 3: return L;
+		}
+		return 0;
+	}
+
+	//______________________________________________________________________________
+	//
+	// Check if Row and Col are inside a graphical cut g
+	//______________________________________________________________________________
+
+Bool_t TMayaHisto::IsInside(TCutG*g, Int_t C, Int_t R) {
+	if (g == NULL)
+		return kTRUE; // By default is inside !
+	return g->IsInside(GetCdisp(C, R), GetRdisp(C, R));
+}
+
+//______________________________________________________________________________
+//
+// Fit
+//______________________________________________________________________________
+
+Bool_t TMayaHisto::FitTrack(Option_t *o, Int_t Cmin, Int_t Cmax, // limits in Columns
+		Int_t Rmin, Int_t Rmax, // limits in Rows
+		TCutG *gFitRegion, // graphical cuts
+		Double_t x0, Double_t y0) { // forced point => "origin" option
+	TString opt = o;
+
+	Double_t A, B, C, UEV, Q, X, Xg, Y, Yg;
+	A = B = C = UEV = Q = X = Y = Xg = Yg = 0.;
+	//
+
+	Int_t Row, Col;
+	/*
+	 Int_t Cmin=1;
+	 Int_t Cmax=GetXaxis()->GetNbins();
+	 Int_t Rmin=1;
+	 Int_t Rmax=GetYaxis()->GetNbins();
+	 */
+	Double_t min = TMath::Max(fMinimum, 0.);
+	Double_t padVal;
+
+	// Prefit : find the right axe
+
+	typedef std::map<int, std::map<int, float> > axis_map;
+	typedef std::map<int, float> axis_fscalar;
+	typedef std::map<int, int> axis_iscalar;
+
+	axis_map PAD_Axis_Content[3];
+	axis_fscalar PAD_Axis_Max[3];
+	axis_iscalar PAD_Axis_Max_idx[3];
+	axis_fscalar PAD_Axis_PosX_Fit[3];
+	axis_fscalar PAD_Axis_PosY_Fit[3];
+
+	Char_t _id_[128] = "";
+	Int_t AxisIdx, AxisLbl;
+	Int_t c, r;
+	Double_t cd, rd;
+
+	if (gFitRegion == NULL) {
+		gFitRegion = new TCutG("square_region", 4);
+		gFitRegion->SetPoint(0, GetCdisp(Cmin, Rmin) - .1, GetRdisp(Cmin, Rmin)
+				+ .1);
+		gFitRegion->SetPoint(1, GetCdisp(Cmin, Rmax) - .1, GetRdisp(Cmin, Rmax)
+				- .1);
+		gFitRegion->SetPoint(2, GetCdisp(Cmax, Rmax) + .1, GetRdisp(Cmax, Rmax)
+				- .1);
+		gFitRegion->SetPoint(3, GetCdisp(Cmax, Rmin) + .1, GetRdisp(Cmax, Rmin)
+				+ .1);
+	}
+
+	if (opt.Contains("sech")) {
+
+		for (Row = Rmin; Row <= Rmax; Row++) {
+			for (Col = Cmin; Col <= Cmax; Col++) {
+
+				if (Col - GetAxisCol(GetAxisLbl(Col, Row, 1), GetAxisIdx(Col,
+						Row, 1), 1) != 0) {
+					std::cerr << "1) Problem w/ at (" << Col << "," << Row
+							<< ") : " << GetAxisCol(GetAxisLbl(Col, Row, 1),
+							GetAxisIdx(Col, Row, 1), 1) << "#"
+							<< GetAxisRow(GetAxisLbl(Col, Row, 1), GetAxisIdx(
+									Col, Row, 1), 1) << std::endl;
+				}
+
+				if (Col - GetAxisCol(GetAxisLbl(Col, Row, 2), GetAxisIdx(Col,
+						Row, 2), 2) != 0) {
+					std::cerr << "2) Problem w/ at (" << Col << "," << Row
+							<< ") : " << GetAxisIdx(Col, Row, 2) << "#"
+							<< GetAxisRow(GetAxisLbl(Col, Row, 2), GetAxisIdx(
+									Col, Row, 2), 2) << std::endl;
+				}
+
+				if (Col - GetAxisCol(GetAxisLbl(Col, Row, 3), GetAxisIdx(Col,
+						Row, 3), 3) != 0) {
+					std::cerr << "3) Problem w/ at (" << Col << "," << Row
+							<< ") : " << GetAxisCol(GetAxisLbl(Col, Row, 3),
+							GetAxisIdx(Col, Row, 3), 3) << "#"
+							<< GetAxisRow(GetAxisLbl(Col, Row, 3), GetAxisIdx(
+									Col, Row, 3), 3) << std::endl;
+				}
+
+				GetPAD(Col, Row)->SetLineWidth(1);
+
+				if (!IsInside(gFitRegion, Col, Row))
+					continue;
+
+				padVal = fArray[GetBin(Col - 1, Row - 1)];
+
+				if (padVal > min) {
+
+					// Axis 1
+					AxisLbl = GetAxisLbl(Col, Row, 1);
+					AxisIdx = GetAxisIdx(Col, Row, 1);
+					if (AxisLbl > 0 && AxisIdx > 0) {
+						PAD_Axis_Content[0][AxisLbl][AxisIdx] = padVal;
+						if (padVal > PAD_Axis_Max[0][AxisLbl] && padVal > 0) {
+							PAD_Axis_Max[0][AxisLbl] = padVal;
+							PAD_Axis_Max_idx[0][AxisLbl] = AxisIdx;
+						}
+					}
+
+					// Axis 2
+					AxisLbl = GetAxisLbl(Col, Row, 2);
+					AxisIdx = GetAxisIdx(Col, Row, 2);
+					if (AxisLbl > 0 && AxisIdx > 0) {
+						PAD_Axis_Content[1][AxisLbl][AxisIdx] = padVal;
+						if (padVal > PAD_Axis_Max[1][AxisLbl] && padVal > 0) {
+							PAD_Axis_Max[1][AxisLbl] = padVal;
+							PAD_Axis_Max_idx[1][AxisLbl] = AxisIdx;
+						}
+					}
+
+					// Axis 3
+					AxisLbl = GetAxisLbl(Col, Row, 3);
+					AxisIdx = GetAxisIdx(Col, Row, 3);
+					if (AxisLbl > 0 && AxisIdx > 0) {
+						PAD_Axis_Content[2][AxisLbl][AxisIdx] = padVal;
+						if (padVal > PAD_Axis_Max[2][AxisLbl] && padVal > 0) {
+							PAD_Axis_Max[2][AxisLbl] = padVal;
+							PAD_Axis_Max_idx[2][AxisLbl] = AxisIdx;
+						}
+					}
+				}
+			}
+		}
+
+		Int_t max_itr = -1;
+		for (Int_t i = 0; i < 3; i++) {
+			//   std::cerr << i+1 << ") " << PAD_Axis_Content[i].size() << std::endl ;
+			max_itr = TMath::Max(max_itr, (Int_t) GetAxisLbl(
+					GetXaxis()->GetNbins(), GetXaxis()->GetNbins(), i + 1));
+		}
+
+		Int_t NMax[3] = { 0 }, idx;
+		Double_t a1, a2, dR, Qo, Qp, Qm;
+		for (Int_t l = 1; l <= max_itr; l++) {
+			for (Int_t a = 0; a < 3; a++) {
+				idx = PAD_Axis_Max_idx[a][l];
+				if (idx > 0 && l > 0) {
+					Qo = (Double_t) PAD_Axis_Content[a][l][idx];
+					Qm = (Double_t) PAD_Axis_Content[a][l][idx - 1];
+					Qp = (Double_t) PAD_Axis_Content[a][l][idx + 1];
+					c = GetAxisCol(l, idx, a + 1);
+					r = GetAxisRow(l, idx, a + 1);
+
+					if (Qo > 0 && Qp > 0 && Qm > 0 && c > 0 && r > 0) {
+						NMax[a]++;
+						// why not doing the sech fit here already ?
+						// look at Thomas ROGER thesis, page 22
+						// note: here: Qo = Q0 ; Qp = Q+ ; Qm = Q-
+						a2 = .5* (TMath ::Sqrt(Qo/Qp)+TMath::Sqrt(Qo/Qm));
+						a1 = (TMath::Sqrt(Qo/Qp)-TMath::Sqrt(Qo/Qm))/(2.*TMath::SinH(a2));
+	    dR = (fHoneyCombSize)*TMath::Log((1+a1)/(1-a1))/TMath::Log(a2+TMath::Sqrt(a2*a2-1.));
+	    PAD_Axis_PosX_Fit[a][l] =  dR*TMath::Cos(Axis_Angle[a]) +  GetX(c,r) ;
+	    PAD_Axis_PosY_Fit[a][l] =  dR*TMath::Sin(Axis_Angle[a]) +  GetY(c,r) ;
+	    //	  std::cerr << "Fit axis " << a+1 << " (" << c << ","  << r << ") -> " ;
+	    //	  std::cerr << PAD_Axis_PosX_Fit[a][l] << "," << PAD_Axis_PosY_Fit[a][l] << " from " ;
+	    //	  std::cerr <<  GetX(c,r) << " " <<  GetY(c,r) ;
+	    //	  std::cerr << " w/ dR = "  << dR << std::endl ;
+	  }
+					}
+				}
+			}
+			Float_t max_tot = -1.;
+			fLastNormalAxis = -1;
+			for(Int_t i=0;i<3;i++) {
+				//    std::cerr << i+1 << ") " << NMax[i] << std::endl ;
+				if(NMax[i]>max_tot) {
+					max_tot = NMax[i];
+					fLastNormalAxis = i;
+				}
+			}
+
+			std::cerr << "The trajectory is 'perpendicular' to the Axis" << fLastNormalAxis+1 << std::endl;
+
+			// Highlight the maximums find on the axis
+			// and start the fit
+			TPolyMarker *MarkMax = new TPolyMarker();
+
+			A=B=C=UEV=Q=X=Y=Xg=Yg=0.;
+
+			for(Int_t l=1;l<=max_itr;l++) {
+				c = GetAxisCol(l,PAD_Axis_Max_idx[fLastNormalAxis][l],fLastNormalAxis+1);
+				r = GetAxisRow(l,PAD_Axis_Max_idx[fLastNormalAxis][l],fLastNormalAxis+1);
+				if(c>0 && r>0 && PAD_Axis_Max[fLastNormalAxis][l]>0) {
+					GetPAD(c,r)->SetLineWidth(3);
+					if(PAD_Axis_PosX_Fit[fLastNormalAxis][l]>0 && PAD_Axis_PosY_Fit[fLastNormalAxis][l]>0) {
+
+						// ** Fit **
+						padVal = PAD_Axis_Max[fLastNormalAxis][l];
+						//	std::cerr << padVal << " " << Q << " " << Xg << " " << Yg << std::endl ;
+						if(padVal>min) {
+							Q+=padVal;
+							Xg+=PAD_Axis_PosX_Fit[fLastNormalAxis][l]*padVal;
+							Yg+=PAD_Axis_PosY_Fit[fLastNormalAxis][l]*padVal;
+						}
+
+						// ** Graphics **
+						cd = GetCdisp(c,r);
+						rd = GetRdisp(c,r);
+						GetCRdisp_XY(PAD_Axis_PosX_Fit[fLastNormalAxis][l] ,PAD_Axis_PosY_Fit[fLastNormalAxis][l],cd,rd);
+						MarkMax->SetNextPoint(cd,rd);
+						//	std::cerr << c << ": " << PAD_Axis_PosX_Fit[fLastNormalAxis][l] << "->" << cd << " # " ;
+						//	std::cerr << r << ": " << PAD_Axis_PosY_Fit[fLastNormalAxis][l] << "->" << rd << std::endl ;
+					}
+				}
+			}
+
+			//
+			MarkMax->SetMarkerStyle(29);
+			MarkMax->SetMarkerSize(1);
+			MarkMax->SetMarkerColor(gStyle->GetCanvasColor());
+			fFunctions->Add(MarkMax);
+			//  ----
+
+			if(opt.Contains("origin")) {
+				Xg = (x0*Q*fOriginWeigh + Xg)/(Q*(1.+fOriginWeigh)); // modified center of gravity X position
+				Yg = (y0*Q*fOriginWeigh + Yg)/(Q*(1.+fOriginWeigh)); // modified center of gravity Y position
+			} else {
+				Xg/=Q; // center of gravity X position
+				Yg/=Q; // center of gravity Y position
+			}
+
+			for(Int_t l=1;l<=max_itr;l++) {
+				c = GetAxisCol(l,PAD_Axis_Max_idx[fLastNormalAxis][l],fLastNormalAxis+1);
+				r = GetAxisRow(l,PAD_Axis_Max_idx[fLastNormalAxis][l],fLastNormalAxis+1);
+				if(c>0 && r>0 && PAD_Axis_Max[fLastNormalAxis][l]>0) {
+					if(PAD_Axis_PosX_Fit[fLastNormalAxis][l]>0 && PAD_Axis_PosY_Fit[fLastNormalAxis][l]>0) {
+
+						// ** Fit **
+						padVal = PAD_Axis_Max[fLastNormalAxis][l];
+						if(padVal>min) {
+
+							X = PAD_Axis_PosX_Fit[fLastNormalAxis][l];
+							Y = PAD_Axis_PosY_Fit[fLastNormalAxis][l];
+
+							A+=padVal*(X-Xg)*(X-Xg); //X^2
+							B+=padVal*(X-Xg)*(Y-Yg); //YX
+							C+=padVal*(Y-Yg)*(Y-Yg); //X^2
+
+
+						}
+
+					}
+				}
+			}
+
+		}
+
+		//  -----
+		if(opt.Contains("chi2")) {
+			//  Double_t A, B, C, UEV, Q, X, Xg, Y, Yg;
+			A=B=C=UEV=Q=X=Y=Xg=Yg=0.;
+
+			for (Row=Rmin;Row<=Rmax;Row++) {
+				for (Col=Cmin;Col<=Cmax;Col++) {
+					if(!IsInside(gFitRegion,Col,Row)) continue;
+					padVal = fArray[GetBin(Col-1,Row-1)];
+					if(padVal>min) {
+						Q+=padVal;
+						Xg+=GetX(Col,Row)*padVal;
+						Yg+=GetY(Col,Row)*padVal;
+						//	std::cerr << Col << " " <<  Row << " " << GetX(Col,Row) << " " << GetY(Col,Row) << " " << padVal << std::endl ;
+					}
+				}
+			}
+			if(opt.Contains("origin")) {
+				Xg = (x0*Q*fOriginWeigh + Xg)/(Q*(1.+fOriginWeigh)); // modified center of gravity X position
+				Yg = (y0*Q*fOriginWeigh + Yg)/(Q*(1.+fOriginWeigh)); // modified center of gravity Y position
+			} else {
+				Xg/=Q; // center of gravity X position
+				Yg/=Q; // center of gravity Y position
+			}
+
+			for (Row=Rmin;Row<=Rmax;Row++) {
+				for(Col=Cmin;Col<=Cmax;Col++) {
+					if(!IsInside(gFitRegion,Col,Row)) continue;
+					padVal = fArray[GetBin(Col-1,Row-1)];
+					if(padVal>min) {
+						X = GetX(Col,Row);
+						Y = GetY(Col,Row);
+						A+=padVal*(X-Xg)*(X-Xg); //X^2
+						B+=padVal*(X-Xg)*(Y-Yg); //YX
+						C+=padVal*(Y-Yg)*(Y-Yg); //X^2
+					}
+				}
+			}
+
+		}
+
+		UEV=0.5*(A+C+sqrt((A+C)*(A+C)-4*(A*C-B*B))); // valeur propre de la matrice regression
+		Double_t a=B/(UEV-C); // coefficient directeur
+		Double_t b=Yg-a*Xg; // ordonnée a l origine Y = aX +b
+
+
+		nTrack++; // Yahoo !! One more track found !
+		if(opt.Contains("sech")) {
+			fNormalTrackAxis[nTrack] = fLastNormalAxis + 1;
+		} else {
+			if(a==0) {
+				fNormalTrackAxis[nTrack] = 1; // 2 can be Ok too anyway // TODO : fix this ?
+			} else {
+				Double_t _min_angle_tmp = 2*(TMath::TwoPi());
+				for(int i=0;i<3;i++) {
+					if(TMath::Abs(Axis_Angle[i] - TMath::ATan(-1./a /*= normal coef*/))<_min_angle_tmp) {
+						fNormalTrackAxis[nTrack] = i+1;
+						_min_angle_tmp = TMath::Abs(Axis_Angle[i] - TMath::ATan(-1./a));
+					};
+				}
+			}
+		}
+		sprintf(_id_,"traj_%d",nTrack);
+
+		TF1 *f = new TF1(_id_,"[1]*x+[0]",
+				(GetXaxis()->GetXmin()-.5)*fHoneyCombSize*TMath::Sqrt(3),
+				(GetXaxis()->GetXmax()+.5)*fHoneyCombSize*TMath::Sqrt(3));
+		f->SetParameter(0,b);
+		f->SetParameter(1,a);
+		fFunctions->Add(f);
+
+		if(gFitRegion!=NULL) {
+			sprintf(_id_,"gcut_%d",nTrack);
+			gFitRegion->SetName(_id_);
+			gFitRegion->SetTitle(_id_);
+			fGCuts->Add(gFitRegion);
+		}
+
+		std::cerr << "## " << _id_ << ":\t" << a << " " << b << " " << f->Eval(fHoneyCombSize*3) << std::endl;
+
+		// Now we display on screen
+
+		Double_t Cd0 = GetXaxis()->GetNbins(), Cd1 = 0.;
+		Double_t Rd0 = 0. , Rd1 = 0.;
+		Double_t Ctmp = 0, Rtmp =0.;
+		Double_t Xtmp = -100., Ytmp=100.;
+
+		if(a != 0) {
+			for(Int_t i=1;i<=TMath::Max(GetXaxis()->GetNbins(),GetYaxis()->GetNbins());i+=1) {
+				Xtmp = GetX(i,i);
+				Ytmp = a*Xtmp+b;
+
+				GetCRdisp_XY(Xtmp,Ytmp,Ctmp,Rtmp);
+
+				if(Ctmp>0 && Ctmp<=GetXaxis()->GetNbins() &&
+						Rtmp>0 && Rtmp<=GetYaxis()->GetNbins() ) {
+					if(Cd0>Ctmp) {
+						Cd0 = Ctmp;
+						Rd0 = Rtmp;
+					}
+					if(Cd1<Ctmp) {
+						Cd1 = Ctmp;
+						Rd1 = Rtmp;
+					}
+				}
+			}
+		}
+
+		std::cerr << " -- " << std::endl;
+		std::cerr << a << " " << b << std::endl;
+		std::cerr << " => " << std::endl;
+		std::cerr << Cd0 << " " << Cd1 << " " << Rd0 << " " << Rd1 << std::endl;
+
+		if(Cd1-Cd0 != 0) {
+			Double_t na = (Rd1-Rd0)/(Cd1-Cd0);
+			Double_t nb = Rd1-na*Cd1;
+
+			//std::cerr << na << " " << nb << std::endl ;
+			//    std::cerr << " -- " << std::endl ;
+			sprintf(_id_,"disptraj_%d",nTrack);
+			//    std::cerr << _id_ <<  std::endl ;
+			TF1 *fi = new TF1(_id_,"[1]*x+[0]",GetXaxis()->GetXmin(),GetXaxis()->GetXmax());
+
+			fi->SetLineColor(2);
+			fi->SetParameter(0,nb);
+			fi->SetParameter(1,na);
+			fFunctions->Add(fi);
+
+		}
+		return kTRUE;
+	}
+
+	//______________________________________________________________________________
+	//
+	// Find closest collinear axis to a give function coefficient
+	//______________________________________________________________________________
+	//
+
+Int_t TMayaHisto::FindClosestAxis(Double_t a) {
+	Double_t _min_angle_tmp = 2* (TMath ::TwoPi());
+	Int_t paxis = -1;
+	for(int i=0;i<3;i++) {
+		if(TMath::Abs(Axis_Angle[i] - TMath::ATan(a))<_min_angle_tmp) {
+			paxis = i+1;
+			_min_angle_tmp = TMath::Abs(Axis_Angle[i] - TMath::ATan(a));
+		};
+	}
+	std::cout << "# coeficient of " << a << " close to Axis " << paxis << std::endl;
+	return paxis;
+}
+
+//______________________________________________________________________________
+//
+// Find closest collinear axis to a give Track ID
+//______________________________________________________________________________
+//
+
+Int_t TMayaHisto::FindClosestAxis(Int_t ID) {
+	TF1 *t = GetTrajectory(ID);
+	if (t == NULL)
+		return -1;
+	std::cout << "# Axis " << ID << " with ";
+	return FindClosestAxis((Double_t) t->GetParameter(1));
+}
+
+//______________________________________________________________________________
+//
+// Project pad value on track ID i.e. on the most collinear axis, following natural direction
+//______________________________________________________________________________
+//
+
+TH1F* TMayaHisto::ProjectOnTrack(Int_t ID, Option_t *o, Double_t xo,
+		Double_t yo) {
+	// Option:
+	// +X -> xsens: sens in x (default previous value) become kTRUE
+	// +Y -> ysens: sens in y (default previous value) become kTRUE
+	// -X -> xsens: sens in x (default previous value) become kFALSE
+	// -Y -> ysens: sens in y (default previous value) become kFALSE
+	TString opt = o;
+	if (opt.Contains("+X"))
+		fRangeSensX = kTRUE; // TO BE USED !!
+	if (opt.Contains("+Y"))
+		fRangeSensY = kTRUE; // TO BE USED !!
+	if (opt.Contains("-X"))
+		fRangeSensX = kFALSE; // TO BE USED !!
+	if (opt.Contains("-Y"))
+		fRangeSensY = kFALSE; // TO BE USED !!
+
+	//
+	TF1 *t = GetTrajectory(ID);
+	if (t == NULL)
+		return NULL; //TEMP
+	TF1 *td = GetTrajectoryDisp(ID);
+	//  if(t==NULL || opt.Contains("refit") ) { // TODO
+	//    if(FitTrack("id=")) return NULL ;
+	//  }
+
+	// Int_t ax = FindClosestAxis(ID);
+	//  if(ax<=0) return NULL ;
+	TCutG *g = GetCutforTrack(ID);
+	if (g == NULL)
+		return NULL;
+
+	Double_t xp, yp;
+
+	Double_t ad = td->GetParameter(1);
+	Double_t bd = td->GetParameter(0);
+	Double_t cu = (ad * ad) / (1. + ad * ad); // normal unitary vector in disp coord
+	Double_t ru = (-ad) / (1. + ad * ad); // normal unitary vector in disp coord
+
+	// Projection histogram
+	Int_t Cmin = GetXaxis()->GetNbins() + 1, Cmax = -1;
+	Int_t Rmin = GetYaxis()->GetNbins() + 1, Rmax = -1;
+	for (Int_t C = 1; C <= GetXaxis()->GetNbins(); C++) {
+		for (Int_t R = 1; R <= GetYaxis()->GetNbins(); R++) {
+			if (IsInside(g, C, R)) {
+				if (C < Cmin) {
+					Cmin = C;
+				};
+				if (R < Rmin) {
+					Rmin = R;
+				};
+				if (C > Cmax) {
+					Cmax = C;
+				};
+				if (R > Rmax) {
+					Rmax = R;
+				};
+			}
+		}
+	}
+
+	Double_t cdo, rdo;
+	if (!opt.Contains("origin")) {
+		// origin of // TO BE
+		// the track // IMPROVED
+		xo = 0;
+		yo = t->GetParameter(0);
+	}
+
+	GetCRdisp_XY(xo, yo, cdo, rdo);
+
+	Double_t Xmax = GetX(TMath::Min(Cmax + 1, GetXaxis()->GetNbins()),
+			TMath::Min(Rmax + 1, GetYaxis()->GetNbins()));
+	Double_t Ymax = GetY(TMath::Min(Cmax + 1, GetXaxis()->GetNbins()),
+			TMath::Min(Rmax + 1, GetYaxis()->GetNbins()));
+
+	Double_t padVal;
+
+	char l[40];
+	sprintf(l, "cproj_%d", ID);
+	if (gROOT->Get(l))
+		gROOT->Delete(l);
+
+	Double_t xmin = 0;
+	Double_t xmax = TMath::Sqrt(TMath::Power(xo - Xmax, 2) + TMath::Power(yo
+			- Ymax, 2));
+	Int_t nbins = TMath::Floor(TMath::Sqrt(TMath::Power(Cmax - Cmin, 2)
+			+ TMath::Power(Rmax - Rmin, 2)));
+
+	TH1F *proj = new TH1F(l, l, nbins, xmin, xmax);
+
+	Double_t dist_min = xmin, dist_max = xmax; // distance from origin
+
+	// **Graphics**
+	TLine *pline;
+	TPolyMarker *MarkMax = new TPolyMarker();
+	// ************
+
+
+	Double_t dp_disp_min, dp_disp_max;
+
+	Double_t cd, rd, cp, rp, distp;
+	Double_t cd_min = xmax, rd_min = xmax;
+	Double_t cd_max = xmin, rd_max = xmin;
+	Double_t cp_min = xmax, rp_min = xmax;
+	Double_t cp_max = xmin, rp_max = xmin;
+
+	//
+
+	for (Int_t C = 1; C <= GetXaxis()->GetNbins(); C++) {
+		for (Int_t R = 1; R <= GetYaxis()->GetNbins(); R++) {
+			padVal = fArray[GetBin(C - 1, R - 1)];
+			if (IsInside(g, C, R) && (padVal > fMinimum)) {
+
+				dp_disp_min = 10* TMath ::Sqrt(Cmax * Cmax + Rmax * Rmax);
+				dp_disp_max = -1;
+
+				for (Int_t i = 0; i < GetPAD(C, R)->GetN(); i++) {
+					cd = GetPAD(C, R)->GetX()[i];
+					rd = GetPAD(C, R)->GetY()[i];
+					cp = (-(cd * ru - rd * cu) - bd * cu) / (ad * cu - ru);
+					rp = (ad * (rd * cu - cd * ru) - bd * ru) / (ad * cu - ru);
+					distp = TMath::Sqrt(TMath::Power(cdo - cp, 2)
+							+ TMath::Power(rdo - rp, 2));
+					if (distp < dp_disp_min) {
+						dp_disp_min = distp;
+						cd_min = cd;
+						rd_min = rd;
+						cp_min = cp;
+						rp_min = rp;
+						GetXY_CRdisp(cp_min, rp_min, xp, yp);
+						dist_min = TMath::Sqrt(TMath::Power(xo - xp, 2)
+								+ TMath::Power(yo - yp, 2));
+						//	    printf("-- %d) %g %g \n",i,xp,yp);
+					}
+					if (distp > dp_disp_max) {
+						dp_disp_max = distp;
+						cd_max = cd;
+						rd_max = rd;
+						cp_max = cp;
+						rp_max = rp;
+						GetXY_CRdisp(cp_max, rp_max, xp, yp);
+						dist_max = TMath::Sqrt(TMath::Power(xo - xp, 2)
+								+ TMath::Power(yo - yp, 2));
+						//  printf("++ %d) %g %g \n",i,xp,yp);
+					}
+
+					printf("%d) %g %g \n", i, dist_min, dist_max);
+
+				}
+
+				Int_t bin;
+				distp = dist_max;
+				const Double_t val_spread = dist_max - dist_min;
+				Double_t ratio = 0;
+				if (val_spread > 0) {
+					bin = proj->FindBin(distp, 0., 0.);
+					while (distp > dist_min) {
+
+						ratio = (distp - proj->GetBinLowEdge(bin))
+								/ (val_spread);
+						std::cout << distp << " > " << dist_min << std::endl;
+						proj->AddBinContent(bin, padVal * ratio);
+						bin--;
+						distp = TMath::Max(dist_min, proj->GetBinLowEdge(bin));
+
+					}
+				}
+
+				// **Graphics **
+				cd = GetCdisp(C, R);
+				rd = GetRdisp(C, R);
+				cp = (-(cd * ru - rd * cu) - bd * cu) / (ad * cu - ru); //seems Ok -> checked outside ROOT
+				rp = (ad * (rd * cu - cd * ru) - bd * ru) / (ad * cu - ru); //seems Ok  -> checked outside ROOT
+				pline = new TLine(cd, rd, cp, rp);
+				pline->SetLineColor(gStyle->GetCanvasColor());
+				fFunctions->Add(pline);
+				MarkMax->SetNextPoint(cd, rd);
+				MarkMax->SetNextPoint(cp, rp);
+
+				// ** Graphics **
+
+				// pline = new TLine(cd_min,rd_min,cp_min,rp_min) ;
+				// pline->SetLineColor(3);//gStyle->GetCanvasColor());
+				// fFunctions->Add(pline);
+				// MarkMax->SetNextPoint(cd_min,rd_min);
+				// MarkMax->SetNextPoint(cp_min,rp_min);
+
+				// pline = new TLine(cd_max,rd_max,cp_max,rp_max) ;
+				// pline->SetLineColor(4);//gStyle->GetCanvasColor());
+				// fFunctions->Add(pline);
+				// MarkMax->SetNextPoint(cd_max,rd_max);
+				// MarkMax->SetNextPoint(cp_max,rp_max);
+
+			}
+		}
+	}
+
+	// **Graphics **
+	MarkMax->SetMarkerStyle(8);
+	MarkMax->SetMarkerSize(.5);
+	MarkMax->SetMarkerColor(2);//gStyle->GetCanvasColor());
+	fFunctions->Add(MarkMax);
+	fRanges->Add(proj);
+	return proj;
+}
+
+//______________________________________________________________________________
+//
+// Pointer to the function describing track #id
+//______________________________________________________________________________
+//
+
+TF1* TMayaHisto::GetTrajectory(Int_t ID) {
+	char si[32];
+	sprintf(si, "%d", ID);
+	TString l = TString("traj_") + si;
+	return (TF1*) fFunctions->FindObject(l.Data());
+}
+
+//______________________________________________________________________________
+//
+// Pointer to the function describing track #id
+//______________________________________________________________________________
+//
+
+TF1* TMayaHisto::GetTrajectoryDisp(Int_t ID) {
+	char si[32];
+	sprintf(si, "%d", ID);
+	TString l = TString("disptraj_") + si;
+	return (TF1*) fFunctions->FindObject(l.Data());
+}
+
+//______________________________________________________________________________
+//
+// Pointer to the graphical cut used to fit the track ID
+//______________________________________________________________________________
+//
+
+TCutG* TMayaHisto::GetCutforTrack(Int_t ID) {
+	char si[32];
+	sprintf(si, "%d", ID);
+	TString l = TString("gcut_") + si;
+	return (TCutG*) fGCuts->FindObject(l.Data());
+}
+
+//______________________________________________________________________________
+//
+// Pointer to the histogram, result of the charge projection on track ID
+//______________________________________________________________________________
+//
+
+TH1F* TMayaHisto::GetChargeProjection(Int_t ID) {
+	char si[32];
+	sprintf(si, "%d", ID);
+	TString l = TString("cproj_") + si;
+	return (TH1F*) fRanges->FindObject(l.Data());
+}
+
+//______________________________________________________________________________
+//
+// Default range function.
+// Reminder: if another function is given,
+// the parameter corresponding to the range MUST be named "range" !
+//______________________________________________________________________________
+//
+
+Double_t TMayaHisto::_dfltRangeFunction_(Double_t *x, Double_t *par) {
+
+	/*.       |                  par[1]
+	 par[0]..+----------------. :
+	 .       |                 \:
+	 .       |                  \
+    .       |                  :\  par[2]
+	 .       |                  : \
+    ________|__________________:__\__________> x[0]
+
+	 Three parameter, one variable
+	 x[0] -> x
+	 par[0] -> Jump base height
+	 par[1] -> Range itself, thus named "range"
+	 par[2] -> Bragg peak end slope
+	 */
+	Double_t f;
+	if (par[2] >= 0) {
+		par[2] = -TMath::Abs(par[0] / par[1]);
+	}
+	if (x[0] < (par[1] - TMath::Abs(par[0] / (2. * par[2])))) { // par[1]-TMath::Abs(par[0]/(2.*par[2]) is the abscissa of the drop
+		return par[0];
+	} else {
+		f = par[2] * (x[0] - par[1]) + par[0] / 2.;
+		if (f > 0) {
+			return f;
+		} else {
+			return 0;
+		}
+	}
+}
+
+//______________________________________________________________________________
+//
+// Find range for the track number ID
+//______________________________________________________________________________
+//
+
+Double_t TMayaHisto::FindRange(Int_t ID, Option_t *o, Double_t xo, Double_t yo) {
+	// ID: already find trajectory number
+	// Option:
+	// +X -> xsens: sens in x (default previous value) become kTRUE
+	// +Y -> ysens: sens in y (default previous value) become kTRUE
+	// -X -> xsens: sens in x (default previous value) become kFALSE
+	// -Y -> ysens: sens in y (default previous value) become kFALSE
+
+	TString opt = o;
+	if (opt.Contains("+X"))
+		fRangeSensX = kTRUE;
+	if (opt.Contains("+Y"))
+		fRangeSensY = kTRUE;
+	if (opt.Contains("-X"))
+		fRangeSensX = kFALSE;
+	if (opt.Contains("-Y"))
+		fRangeSensY = kFALSE;
+
+	if (GetChargeProjection(ID) == NULL)
+		ProjectOnTrack(ID, o, xo, yo);
+
+	if (GetChargeProjection(ID) != NULL) {
+		if (GetChargeProjection(ID)->Integral() > 0) {
+			TF1 *_fmax;
+			TGraphErrors *h = new TGraphErrors(GetChargeProjection(ID));
+			Double_t lmax = h->GetXaxis()->GetXmax();
+			//      Double_t lmin = h->GetXaxis()->GetXmin() ;
+			Double_t emax = GetChargeProjection(ID)->GetMaximum();
+			//      Double_t emin = GetChargeProjection(ID)->GetMinimum() ;
+			Double_t range = lmax, xmax = lmax;
+			Int_t n = (GetChargeProjection(ID)->GetXaxis())->GetNbins();
+			if ((n * fSearchDiv) <= 0)
+				return -1;
+			Double_t dx = (h->GetXaxis()->GetXmax() - h->GetXaxis()->GetXmin())
+					/ (n * fSearchDiv);
+			TSpline3 *s = new TSpline3("s", h);
+			Double_t dstart = s->Derivative(lmax);
+			for (Double_t x = lmax; x > 0; x -= dx) {
+				if ((TMath::Sign(dstart, s->Derivative(x)) != dstart)
+						&& (h->Eval(x) > emax * fRangeThresRatio)) {
+					if ((TMath::Sign(dstart, s->Derivative(x - dx)) != dstart)) {
+
+						xmax = solveBisectD(s, 0, x, x + dx);
+						emax = s->Eval(xmax);
+						_fmax = new TF1("max", "[0]", h->GetXaxis()->GetXmin(),
+								lmax);
+						_fmax->SetParameter(0, s->Eval(x));
+						((TList*) h->GetListOfFunctions())->Add(_fmax);
+
+						break;
+					}
+				}
+				dstart = s->Derivative(x);
+			}
+
+			range = solveBisect(s, emax / 2., xmax, lmax);
+			_fmax = new TF1("max", "[0]", h->GetXaxis()->GetXmin(), lmax);
+			_fmax->SetParameter(0, s->Eval(range));
+			((TList*) h->GetListOfFunctions())->Add(_fmax);
+
+			if (opt.Contains("Fit")) {
+				if (strcmp(fRangeFunction->GetName(), "_dfltRangeFunction_")
+						== 0) {
+					fRangeFunction->SetParameter(fRangeFunction->GetParNumber(
+							"base"), emax);
+					fRangeFunction->SetParLimits(fRangeFunction->GetParNumber(
+							"base"), emax / 2., emax);
+					fRangeFunction->SetParameter(fRangeFunction->GetParNumber(
+							"slope"), lmax != 0 ? -emax / lmax : 0);
+				}
+				fRangeFunction->SetParLimits(fRangeFunction->GetParNumber(
+						"range"), 0, lmax);
+				fRangeFunction->SetParameter(fRangeFunction->GetParNumber(
+						"range"), lmax / 2.);
+				h->Fit(fRangeFunction, "b");
+				range = fRangeFunction->GetParameter("range");
+			}
+			h->Draw("A*");
+			s->Draw("same");
+
+			if (range < lmax && range > 0)
+				return range;
+
+			/*
+			 h->SetName("g");
+			 TFile *f = new TFile("tmp.root","recreate");
+			 f->cd();
+			 h->Write("g",kOverwrite);
+			 f->Close();
+			 */
+		} else {
+			return -1;
+		}
+	} else {
+		return -1;
+	}
+	return -1;
+}
+
+//______________________________________________________________________________
+//
+// HightLight pads corresponding to a given graphical cut
+//______________________________________________________________________________
+//
+void TMayaHisto::HighLightCut(TCutG*g) {
+	Int_t color;
+	for (Int_t Row = 1; Row <= GetYaxis()->GetNbins(); Row++) {
+		for (Int_t Col = 1; Col <= GetXaxis()->GetNbins(); Col++) {
+			color = GetPAD(Col, Row)->GetFillColor();
+			if (g == NULL) {
+				if (color != GetPAD(Col, Row)->GetLineColor() || color != 0) {
+					//	  GetPAD(Col,Row)->SetFillStyle(1000);
+					GetPAD(Col, Row)->SetFillColor(color);
+				} else {
+					GetPAD(Col, Row)->SetFillStyle(0);
+				}
+			} else if (g != NULL && IsInside(g, Col, Row)) {
+				GetPAD(Col, Row)->SetFillStyle(fTCutGPatternStyle);
+			}
+		}
+	}
+	gPad->Update();
+}
+
+//______________________________________________________________________________
+//
+// Find x | f(x) = y0 within the [xmin:xmax] range
+//______________________________________________________________________________
+//
+
+Double_t TMayaHisto::solveBisect(TSpline3 *s, Double_t y0, Double_t xmin,
+		Double_t xmax) {
+	Double_t xmid = .5* (xmax +xmin), ymin,ymid,ymax;
+	ymin = s->Eval(xmin)-y0;
+	ymax = s->Eval(xmax)-y0;
+
+	while (TMath::Abs(xmax - xmin) > fRangePrecision) {
+		xmid = (xmax + xmin) / 2.;
+		ymid = s->Eval(xmid)-y0;
+		// std::cout << "}" <<  xmin << " " << xmax << std::endl ;
+			if (ymin*ymid < 0) {
+				xmax = xmid;
+				ymax = ymid;
+			} else if (ymid*ymax < 0) {
+				xmin = xmid;
+				ymin = ymid;
+			} else {
+				return xmid;
+			}
+		}
+		return xmid;
+	}
+
+	//______________________________________________________________________________
+	//
+	// Find x | f'(x) = y0 within the [xmin:xmax] range
+	//______________________________________________________________________________
+	//
+
+Double_t TMayaHisto::solveBisectD(TSpline3 *s, Double_t y0, Double_t xmin,
+		Double_t xmax) {
+	Double_t xmid, ymin, ymid, ymax;
+	ymin = s->Derivative(xmin) - y0;
+	ymax = s->Derivative(xmax) - y0;
+	xmid = (xmax + xmin) / 2.;
+
+	while (TMath::Abs(xmax - xmin) > fRangePrecision) {
+		xmid = (xmax + xmin) / 2.;
+		ymid = s->Derivative(xmid) - y0;
+		//   std::cout << "}" <<  xmin << " " << xmax << std::endl ;
+		if (ymin * ymid < 0) {
+			xmax = xmid;
+			ymax = ymid;
+		} else if (ymid * ymax < 0) {
+			xmin = xmid;
+			ymin = ymid;
+		} else {
+			return xmid;
+		}
+	}
+	return xmid;
+}
+
+//______________________________________________________________________________
+/*
+ void TMayaHisto::Streamer(TBuffer &R__b)
+ {
+ // Stream an object of class TMayaHisto.
+
+ if (R__b.IsReading()) {
+ UInt_t R__s, R__c;
+ Version_t R__v = R__b.ReadVersion(&R__s, &R__c);
+ if (R__v > 2) {
+ R__b.ReadClassBuffer(TMayaHisto::Class(), this, R__v, R__s, R__c);
+ return;
+ }
+ //====process old versions before automatic schema evolution
+ if (R__v < 2) {
+ R__b.ReadVersion();
+ TH1::Streamer(R__b);
+ TArrayF::Streamer(R__b);
+ R__b.ReadVersion();
+ R__b >> fScalefactor;
+ R__b >> fTsumwy;
+ R__b >> fTsumwy2;
+ R__b >> fTsumwxy;
+ } else {
+ TH2::Streamer(R__b);
+ TArrayF::Streamer(R__b);
+ R__b.CheckByteCount(R__s, R__c, TMayaHisto::IsA());
+ }
+ //====end of old versions
+
+ } else {
+ R__b.WriteClassBuffer(TMayaHisto::Class(),this);
+ }
+
+ }
+ */
+//______________________________________________________________________________
+TMayaHisto& TMayaHisto::operator=(const TMayaHisto &h1) {
+	// Operator =
+
+	if (this != &h1)
+		((TMayaHisto&) h1).Copy(*this);
+	return *this;
+}
+
+//______________________________________________________________________________
+TMayaHisto operator*(Float_t c1, TMayaHisto &h1) {
+	// Operator *
+
+	TMayaHisto hnew = h1;
+	hnew.Scale(c1);
+	hnew.SetDirectory(0);
+	return hnew;
+}
+
+//______________________________________________________________________________
+TMayaHisto operator*(TMayaHisto &h1, Float_t c1) {
+	// Operator *
+
+	TMayaHisto hnew = h1;
+	hnew.Scale(c1);
+	hnew.SetDirectory(0);
+	return hnew;
+}
+
+//______________________________________________________________________________
+TMayaHisto operator+(TMayaHisto &h1, TMayaHisto &h2) {
+	// Operator +
+
+	TMayaHisto hnew = h1;
+	hnew.Add(&h2, 1);
+	hnew.SetDirectory(0);
+	return hnew;
+}
+
+//______________________________________________________________________________
+TMayaHisto operator-(TMayaHisto &h1, TMayaHisto &h2) {
+	// Operator -
+
+	TMayaHisto hnew = h1;
+	hnew.Add(&h2, -1);
+	hnew.SetDirectory(0);
+	return hnew;
+}
+
+//______________________________________________________________________________
+TMayaHisto operator*(TMayaHisto &h1, TMayaHisto &h2) {
+	// Operator *
+
+	TMayaHisto hnew = h1;
+	hnew.Multiply(&h2);
+	hnew.SetDirectory(0);
+	return hnew;
+}
+
+//______________________________________________________________________________
+TMayaHisto operator/(TMayaHisto &h1, TMayaHisto &h2) {
+	// Operator /
+
+	TMayaHisto hnew = h1;
+	hnew.Divide(&h2);
+	hnew.SetDirectory(0);
+	return hnew;
+}
+
+// Local IspellDict: english
diff --git a/NPLib/Maya/TMayaHisto.h b/NPLib/Maya/TMayaHisto.h
new file mode 100755
index 0000000000000000000000000000000000000000..46f1c27afab5da9ee11ce4a80292becef97adf0d
--- /dev/null
+++ b/NPLib/Maya/TMayaHisto.h
@@ -0,0 +1,199 @@
+/*****************************************************************************
+ * Copyright (C) 2008   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: M. Vandebrouck   contact address: vandebro@ipno.in2p3.fr *
+ *                  J. Gibelin                      gibelin@lpccaen.in2p3.fr *
+ *                                                                           *
+ * Creation Date  : November 2011                                            *
+ * Last update    :                                                          *
+ *---------------------------------------------------------------------------*
+ * Decription: This class holds a special 2D Maya histogram                  *
+ *                                                                           *
+ *---------------------------------------------------------------------------*
+ * Comment:                                                                  *
+ *                                                                           *
+ *****************************************************************************/
+#ifndef __MAYAHISTO__
+#define __MAYAHISTO__
+
+#include "TObject.h"
+#include "TROOT.h"
+#include "TFile.h"
+#include "TCutG.h"
+#include "TH2F.h"
+#include "TArrayF.h"
+#include "TClonesArray.h"
+#include "TMath.h"
+#include "string"
+#include "TString.h"
+#include "TStyle.h"
+#include "TPad.h"
+#include "TF1.h"
+//#include "TGraph.h"
+#include "TGraphErrors.h"
+#include "TDirectory.h"
+#include <iostream>
+#include <vector>
+#include <map>
+#include "THistPainter.h"
+#include "TMatrixFBase.h"
+#include "TPaletteAxis.h"
+#include "TVirtualHistPainter.h"
+#include "TPolyMarker.h"
+#include "TArrow.h"
+#include "TSpline.h"
+#include "TBuffer.h"
+#include <math.h>
+
+class TMayaHisto : public TH2F {
+
+public:
+   TMayaHisto();
+   TMayaHisto(const char *name,const char *title,Int_t nbinsx=32, Int_t nbinsy=32,Double_t hsize=5);
+   TMayaHisto(const TMayaHisto &h2f);
+
+   virtual ~TMayaHisto();
+   virtual void     AddBinContent(Int_t bin) {++fArray[bin];}
+   virtual void     AddBinContent(Int_t bin, Double_t w)
+                                 {fArray[bin] += Float_t (w);}
+   virtual void     Copy(TObject &hnew) const;
+   virtual TH1     *DrawCopy(Option_t *option="") const;
+   virtual Double_t GetBinContent(Int_t bin) const;
+   virtual Double_t GetBinContent(Int_t binx, Int_t biny) const {return GetBinContent(GetBin(binx,biny));}
+   virtual Double_t GetBinContent(Int_t binx, Int_t biny, Int_t) const {return GetBinContent(GetBin(binx,biny));}
+   virtual void     Reset(Option_t *option="");
+   virtual void     SetBinContent(Int_t bin, Double_t content);
+   virtual void     SetBinContent(Int_t binx, Int_t biny, Double_t content) {SetBinContent(GetBin(binx,biny),content);}
+   virtual void     SetBinContent(Int_t binx, Int_t biny, Int_t, Double_t content) {SetBinContent(GetBin(binx,biny),content);}
+   virtual void     SetBinsLength(Int_t n=-1);
+   //   virtual TPolyLine* Hexagon(Float_t,Float_t);
+   virtual TCutG* Hexagon(TString,Float_t,Float_t);
+   virtual void CreateHoneyCombStructure() ;
+//   virtual Int_t    Fill(Int_t C, Int_t R,Int_t W) { Int_t n = TH2::Fill(C,R,W); Draw(); return n ;};
+   virtual void     Paint(Option_t *);
+   virtual TAxis* GetCaxis() { return GetXaxis() ; }
+   virtual TAxis* GetRaxis() { return GetYaxis() ; }
+
+   virtual Int_t FillXY(Double_t,Double_t,Double_t);
+   virtual Int_t FillXY(Double_t X,Double_t Y) { return FillXY(X,Y,1.);};
+   virtual Double_t GetHoneyCombSize(void){ return fHoneyCombSize ;};
+   virtual Int_t    GetShiftHexagon(void){ return bShiftHexagon ;};
+   virtual Double_t SetHoneyCombSize(Double_t size){ fHoneyCombSize = size ; return fHoneyCombSize ;};
+   virtual Int_t    SetShiftHexagon(Int_t shift){
+     if(bShiftHexagon>0) { bShiftHexagon = 1 ; } else {  bShiftHexagon = 0 ;};
+     return bShiftHexagon ;};
+   Bool_t    FitTrack(void){return FitTrack("chi2",1,GetXaxis()->GetNbins(),1,GetYaxis()->GetNbins(),NULL,-1,-1); }; // *MENU*
+   Bool_t    FitTrack(Option_t *,Int_t,Int_t,Int_t,Int_t,TCutG*,Double_t, Double_t); // *MENU*
+   Bool_t    FitTrack(Option_t *o,Int_t c1,Int_t c2,Int_t r1,Int_t r2,Double_t x0, Double_t y0){return FitTrack(o,c1,c2,r1,r2,(TCutG*)NULL,x0,y0);};
+   Bool_t    FitTrack(Option_t *o,Int_t c1,Int_t c2,Int_t r1,Int_t r2){return FitTrack(o,c1,c2,r1,r2,(TCutG*)NULL,-1,-1);};
+   Bool_t    FitTrack(Option_t *o,TCutG *g,Double_t x0, Double_t y0){return FitTrack(o,1,GetXaxis()->GetNbins(),1,GetYaxis()->GetNbins(),g,x0,y0); };
+   Bool_t    FitTrack(Option_t *o,TCutG *g){return FitTrack(o,1,GetXaxis()->GetNbins(),1,GetYaxis()->GetNbins(),g,-1,-1); };
+   Bool_t    FitTrack(Option_t *o){return FitTrack(o,1,GetXaxis()->GetNbins(),1,GetYaxis()->GetNbins(),(TCutG*)NULL,-1,-1); };
+
+   Int_t     FindClosestAxis(Int_t) ; //Find closest collinear axis to a give Track ID
+   Int_t     FindClosestAxis(Double_t) ; // Find closest collinear axis to a give function coefficient
+   TH1F*     ProjectOnTrack(Int_t, Option_t *,Double_t,Double_t) ; // Project pad value on track ID
+   TH1F*     ProjectOnTrack(Int_t ID, Double_t xo,Double_t yo){ return ProjectOnTrack(ID,"origin",xo,yo);} ; // Project pad value on track ID
+   TH1F*     ProjectOnTrack(Int_t ID){ return ProjectOnTrack(ID,"",-1,-1);} ; // Project pad value on track ID
+
+   Double_t    FindRange(Int_t ID){return FindRange(ID,"",-1,-1);};
+   Double_t    FindRange(Int_t ,Option_t *, Double_t, Double_t);
+   Double_t    FindRange(Int_t ID, Double_t xo, Double_t yo){return FindRange(ID,"origin",xo,yo);};
+   Int_t       GetSearchDiv(){ return fSearchDiv ;};
+   Int_t       SetSearchDiv(Int_t d){ return fSearchDiv = d ;};
+   Bool_t  IsInside(TCutG*,Int_t,Int_t);
+   void    HighLightCut(TCutG*);
+   void    HighLightCut(){ HighLightCut(NULL);};
+   void    HighLightCutForTrack(Int_t ID){ HighLightCut(GetCutforTrack(ID));};
+   void    HighLightCutForTrack() { HighLightCut(NULL);};
+
+   Int_t   GetLastTrackNormalAxis(void) {return fLastNormalAxis+1 ; } ;
+   Int_t   GetNormalTrackAxis(Int_t ID) {return fNormalTrackAxis[ID] ; } ;
+   Int_t   GetAxisAngleDeg(Int_t ax) {return Axis_Angle[ax-1]*TMath::RadToDeg() ; } ;
+   Int_t   GetAxisAngle(Int_t ax) {return Axis_Angle[ax-1] ; } ;
+   TF1*    GetTrajectory(Int_t ID); // Pointer to the function decribing track #id
+   TF1*    GetTrajectoryDisp(Int_t ID); // Pointer to the function decribing on screen track #id
+   TH1F*    GetChargeProjection(Int_t ID); //  Pointer to the histogram, result of the charge projection on track ID
+   //   Double_t GetRange(Int_t); // Get range for track #id. If does not exist, find it //TODO
+   TCutG*  GetCutforTrack(Int_t);
+   // Convertion routines :
+
+   Double_t GetCdisp(Double_t, Double_t); // from C,R fractional to C as displayed
+   Double_t GetRdisp(Double_t, Double_t); // from C,R fractional to R as displayed
+   Double_t GetCdisp(Int_t C, Int_t R){ return GetCdisp((Double_t)C,(Double_t)R); }; // from C,R int to C as displayed
+   Double_t GetRdisp(Int_t C, Int_t R){ return GetRdisp((Double_t)C,(Double_t)R); }; // from C,R int to R as displayed
+   Double_t GetX(Int_t,Int_t); // from C,R int to X
+   Double_t GetY(Int_t,Int_t); // from C,R int to Y
+   //
+   Bool_t GetCR(Double_t,Double_t, Int_t&, Int_t&); // from X,Y  to C,R int -> call this one
+   Bool_t GetCR(Double_t,Double_t, Double_t&, Double_t&); // from X,Y  to C,R fractionnal  -> call this one
+   Bool_t GetCRdisp_XY(Double_t,Double_t, Double_t&, Double_t&); // from X,Y  to C,R disp
+   Bool_t GetXY_CRdisp(Double_t,Double_t, Double_t&, Double_t&); // from C,R disp to X,Y
+   //
+
+   //
+   Int_t GetC(Double_t,Double_t); // from X,Y  to C int
+   Int_t GetR(Double_t,Double_t); // from X,Y  to R int
+   Double_t GetfC(Double_t,Double_t); // from X,Y  to C fractional
+   Double_t GetfR(Double_t,Double_t); // from X,Y  to R fractional
+   Int_t GetAxisLbl(Int_t, Int_t, Int_t); // from C,R int to Axis # label int   (note: axis # is last arg.)
+   Int_t GetAxisIdx(Int_t, Int_t, Int_t); // from C,R int to Axis # index int   (note: axis # is last arg.)
+   Int_t GetAxisCol(Int_t, Int_t, Int_t); // from Axis label,index int to C int (note: axis # is last arg.)
+   Int_t GetAxisRow(Int_t, Int_t, Int_t); // from Axis label,index int to R int (note: axis # is last arg.)
+
+   //
+
+   TCutG* GetPAD(Int_t,Int_t);
+   TCutG* GetPADXY(Double_t,Double_t);
+   TClonesArray *GetArrayOfPADs(){ return fHoneyCombBins;} ;
+
+   //
+
+   Double_t solveBisect(TSpline3 *,Double_t,Double_t,Double_t);
+   Double_t solveBisectD(TSpline3 *,Double_t,Double_t,Double_t);
+
+   //
+           TMayaHisto&    operator=(const TMayaHisto &h1);
+   friend  TMayaHisto     operator*(Float_t c1, TMayaHisto &h1);
+   friend  TMayaHisto     operator*(TMayaHisto &h1, Float_t c1);
+   friend  TMayaHisto     operator+(TMayaHisto &h1, TMayaHisto &h2);
+   friend  TMayaHisto     operator-(TMayaHisto &h1, TMayaHisto &h2);
+   friend  TMayaHisto     operator*(TMayaHisto &h1, TMayaHisto &h2);
+   friend  TMayaHisto     operator/(TMayaHisto &h1, TMayaHisto &h2);
+
+
+ private:
+   Bool_t __GetCR__(Double_t,Double_t, Double_t&, Double_t&, Bool_t); // from X,Y to C,R fractionnal (true) or int (false).
+   TClonesArray *fHoneyCombBins ;//->Pointer to the array of HoneyCombBins
+   Double_t fHoneyCombSize ; //size of the hexagon used for the honey comb
+   Int_t bShiftHexagon ; // quantify if the first hexagon of the first line come before (1) or after (0) the fist hexagon of the second line
+   Int_t fLastNormalAxis ; // Axis number (1,2 or 3) perpendicular to the track fitted
+#define  Xview_corr .5
+#define  Yview_corr .5
+   Int_t fTCutGPatternStyle ;
+   Double_t fOriginWeigh ;
+   Int_t nTrack ;
+   TList *fGCuts ; //->
+   TList *fRanges ; //->
+   Int_t fSearchDiv ; // number of primary subdivisions for maxima, root, ... search
+   Bool_t fRangeSensX ; // search sens in X for range finding
+   Bool_t fRangeSensY ; // search sens in Y for range finding
+   Double_t fRangeThresRatio ; // % of the max of the "Bragg peak" to be considered above the background
+   Double_t fRangePrecision ; // numerical precision on the finding of the range
+   TF1 *fRangeFunction ; //->Function used to fit range, the parameter corresponding to the range MUST be named "range"
+
+   static Double_t Axis_Angle[] ;
+   static Double_t _dfltRangeFunction_(Double_t*,Double_t*); //! Default range function
+   std::map<int,int> fNormalTrackAxis ;
+
+   ClassDef(TMayaHisto,1);  //2-Dim histograms (one float per channel)
+};
+
+#endif
+
+// Local IspellDict: english
diff --git a/NPLib/Vamos/TVamosCHIODataDict.cxx b/NPLib/Vamos/TVamosCHIODataDict.cxx
new file mode 100644
index 0000000000000000000000000000000000000000..7a325273efc9ff898afcd0540ea66912a5420955
--- /dev/null
+++ b/NPLib/Vamos/TVamosCHIODataDict.cxx
@@ -0,0 +1,962 @@
+//
+// File generated by rootcint at Tue Jul 17 16:41:38 2012
+
+// Do NOT change. Changes will be lost next time file is generated
+//
+
+#define R__DICTIONARY_FILENAME TVamosCHIODataDict
+#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 "TVamosCHIODataDict.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 TVamosCHIOData_ShowMembers(void *obj, TMemberInspector &R__insp);
+   static void *new_TVamosCHIOData(void *p = 0);
+   static void *newArray_TVamosCHIOData(Long_t size, void *p);
+   static void delete_TVamosCHIOData(void *p);
+   static void deleteArray_TVamosCHIOData(void *p);
+   static void destruct_TVamosCHIOData(void *p);
+   static void streamer_TVamosCHIOData(TBuffer &buf, void *obj);
+
+   // Function generating the singleton type initializer
+   static TGenericClassInfo *GenerateInitInstanceLocal(const ::TVamosCHIOData*)
+   {
+      ::TVamosCHIOData *ptr = 0;
+      static ::TVirtualIsAProxy* isa_proxy = new ::TInstrumentedIsAProxy< ::TVamosCHIOData >(0);
+      static ::ROOT::TGenericClassInfo 
+         instance("TVamosCHIOData", ::TVamosCHIOData::Class_Version(), "./TVamosCHIOData.h", 31,
+                  typeid(::TVamosCHIOData), DefineBehavior(ptr, ptr),
+                  &::TVamosCHIOData::Dictionary, isa_proxy, 0,
+                  sizeof(::TVamosCHIOData) );
+      instance.SetNew(&new_TVamosCHIOData);
+      instance.SetNewArray(&newArray_TVamosCHIOData);
+      instance.SetDelete(&delete_TVamosCHIOData);
+      instance.SetDeleteArray(&deleteArray_TVamosCHIOData);
+      instance.SetDestructor(&destruct_TVamosCHIOData);
+      instance.SetStreamerFunc(&streamer_TVamosCHIOData);
+      return &instance;
+   }
+   TGenericClassInfo *GenerateInitInstance(const ::TVamosCHIOData*)
+   {
+      return GenerateInitInstanceLocal((::TVamosCHIOData*)0);
+   }
+   // Static variable to force the class initialization
+   static ::ROOT::TGenericClassInfo *_R__UNIQUE_(Init) = GenerateInitInstanceLocal((const ::TVamosCHIOData*)0x0); R__UseDummy(_R__UNIQUE_(Init));
+} // end of namespace ROOT
+
+//______________________________________________________________________________
+TClass *TVamosCHIOData::fgIsA = 0;  // static to hold class pointer
+
+//______________________________________________________________________________
+const char *TVamosCHIOData::Class_Name()
+{
+   return "TVamosCHIOData";
+}
+
+//______________________________________________________________________________
+const char *TVamosCHIOData::ImplFileName()
+{
+   return ::ROOT::GenerateInitInstanceLocal((const ::TVamosCHIOData*)0x0)->GetImplFileName();
+}
+
+//______________________________________________________________________________
+int TVamosCHIOData::ImplFileLine()
+{
+   return ::ROOT::GenerateInitInstanceLocal((const ::TVamosCHIOData*)0x0)->GetImplFileLine();
+}
+
+//______________________________________________________________________________
+void TVamosCHIOData::Dictionary()
+{
+   fgIsA = ::ROOT::GenerateInitInstanceLocal((const ::TVamosCHIOData*)0x0)->GetClass();
+}
+
+//______________________________________________________________________________
+TClass *TVamosCHIOData::Class()
+{
+   if (!fgIsA) fgIsA = ::ROOT::GenerateInitInstanceLocal((const ::TVamosCHIOData*)0x0)->GetClass();
+   return fgIsA;
+}
+
+//______________________________________________________________________________
+void TVamosCHIOData::Streamer(TBuffer &R__b)
+{
+   // Stream an object of class TVamosCHIOData.
+
+   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 =  fVamos_CHIO_A_PadNbr;
+         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 =  fVamos_CHIO_A_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++) {
+            unsigned short R__t;
+            R__b >> R__t;
+            R__stl.push_back(R__t);
+         }
+      }
+      {
+         vector<UShort_t> &R__stl =  fVamos_CHIO_B_PadNbr;
+         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 =  fVamos_CHIO_B_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++) {
+            unsigned short R__t;
+            R__b >> R__t;
+            R__stl.push_back(R__t);
+         }
+      }
+      {
+         vector<UShort_t> &R__stl =  fVamos_CHIO_C_PadNbr;
+         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 =  fVamos_CHIO_C_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++) {
+            unsigned short R__t;
+            R__b >> R__t;
+            R__stl.push_back(R__t);
+         }
+      }
+      R__b.CheckByteCount(R__s, R__c, TVamosCHIOData::IsA());
+   } else {
+      R__c = R__b.WriteVersion(TVamosCHIOData::IsA(), kTRUE);
+      TObject::Streamer(R__b);
+      {
+         vector<UShort_t> &R__stl =  fVamos_CHIO_A_PadNbr;
+         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 =  fVamos_CHIO_A_Energy;
+         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 =  fVamos_CHIO_B_PadNbr;
+         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 =  fVamos_CHIO_B_Energy;
+         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 =  fVamos_CHIO_C_PadNbr;
+         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 =  fVamos_CHIO_C_Energy;
+         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);
+            }
+         }
+      }
+      R__b.SetByteCount(R__c, kTRUE);
+   }
+}
+
+//______________________________________________________________________________
+void TVamosCHIOData::ShowMembers(TMemberInspector &R__insp)
+{
+      // Inspect the data members of an object of class TVamosCHIOData.
+      TClass *R__cl = ::TVamosCHIOData::IsA();
+      if (R__cl || R__insp.IsA()) { }
+      R__insp.Inspect(R__cl, R__insp.GetParent(), "fVamos_CHIO_A_PadNbr", (void*)&fVamos_CHIO_A_PadNbr);
+      R__insp.InspectMember("vector<UShort_t>", (void*)&fVamos_CHIO_A_PadNbr, "fVamos_CHIO_A_PadNbr.", false);
+      R__insp.Inspect(R__cl, R__insp.GetParent(), "fVamos_CHIO_A_Energy", (void*)&fVamos_CHIO_A_Energy);
+      R__insp.InspectMember("vector<UShort_t>", (void*)&fVamos_CHIO_A_Energy, "fVamos_CHIO_A_Energy.", false);
+      R__insp.Inspect(R__cl, R__insp.GetParent(), "fVamos_CHIO_B_PadNbr", (void*)&fVamos_CHIO_B_PadNbr);
+      R__insp.InspectMember("vector<UShort_t>", (void*)&fVamos_CHIO_B_PadNbr, "fVamos_CHIO_B_PadNbr.", false);
+      R__insp.Inspect(R__cl, R__insp.GetParent(), "fVamos_CHIO_B_Energy", (void*)&fVamos_CHIO_B_Energy);
+      R__insp.InspectMember("vector<UShort_t>", (void*)&fVamos_CHIO_B_Energy, "fVamos_CHIO_B_Energy.", false);
+      R__insp.Inspect(R__cl, R__insp.GetParent(), "fVamos_CHIO_C_PadNbr", (void*)&fVamos_CHIO_C_PadNbr);
+      R__insp.InspectMember("vector<UShort_t>", (void*)&fVamos_CHIO_C_PadNbr, "fVamos_CHIO_C_PadNbr.", false);
+      R__insp.Inspect(R__cl, R__insp.GetParent(), "fVamos_CHIO_C_Energy", (void*)&fVamos_CHIO_C_Energy);
+      R__insp.InspectMember("vector<UShort_t>", (void*)&fVamos_CHIO_C_Energy, "fVamos_CHIO_C_Energy.", false);
+      TObject::ShowMembers(R__insp);
+}
+
+namespace ROOT {
+   // Wrappers around operator new
+   static void *new_TVamosCHIOData(void *p) {
+      return  p ? new(p) ::TVamosCHIOData : new ::TVamosCHIOData;
+   }
+   static void *newArray_TVamosCHIOData(Long_t nElements, void *p) {
+      return p ? new(p) ::TVamosCHIOData[nElements] : new ::TVamosCHIOData[nElements];
+   }
+   // Wrapper around operator delete
+   static void delete_TVamosCHIOData(void *p) {
+      delete ((::TVamosCHIOData*)p);
+   }
+   static void deleteArray_TVamosCHIOData(void *p) {
+      delete [] ((::TVamosCHIOData*)p);
+   }
+   static void destruct_TVamosCHIOData(void *p) {
+      typedef ::TVamosCHIOData current_t;
+      ((current_t*)p)->~current_t();
+   }
+   // Wrapper around a custom streamer member function.
+   static void streamer_TVamosCHIOData(TBuffer &buf, void *obj) {
+      ((::TVamosCHIOData*)obj)->::TVamosCHIOData::Streamer(buf);
+   }
+} // end of namespace ROOT for class ::TVamosCHIOData
+
+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>
+
+/********************************************************
+* TVamosCHIODataDict.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_tagtableTVamosCHIODataDict();
+
+extern "C" void G__set_cpp_environmentTVamosCHIODataDict() {
+  G__add_compiledheader("TObject.h");
+  G__add_compiledheader("TMemberInspector.h");
+  G__add_compiledheader("TVamosCHIOData.h");
+  G__cpp_reset_tagtableTVamosCHIODataDict();
+}
+#include <new>
+extern "C" int G__cpp_dllrevTVamosCHIODataDict() { return(30051515); }
+
+/*********************************************************
+* Member function Interface Method
+*********************************************************/
+
+/* TVamosCHIOData */
+static int G__TVamosCHIODataDict_162_0_1(G__value* result7, G__CONST char* funcname, struct G__param* libp, int hash)
+{
+   TVamosCHIOData* p = NULL;
+   char* gvp = (char*) G__getgvp();
+   int n = G__getaryconstruct();
+   if (n) {
+     if ((gvp == (char*)G__PVOID) || (gvp == 0)) {
+       p = new TVamosCHIOData[n];
+     } else {
+       p = new((void*) gvp) TVamosCHIOData[n];
+     }
+   } else {
+     if ((gvp == (char*)G__PVOID) || (gvp == 0)) {
+       p = new TVamosCHIOData;
+     } else {
+       p = new((void*) gvp) TVamosCHIOData;
+     }
+   }
+   result7->obj.i = (long) p;
+   result7->ref = (long) p;
+   G__set_tagnum(result7,G__get_linked_tagnum(&G__TVamosCHIODataDictLN_TVamosCHIOData));
+   return(1 || funcname || hash || result7 || libp) ;
+}
+
+static int G__TVamosCHIODataDict_162_0_2(G__value* result7, G__CONST char* funcname, struct G__param* libp, int hash)
+{
+      ((TVamosCHIOData*) G__getstructoffset())->Clear();
+      G__setnull(result7);
+   return(1 || funcname || hash || result7 || libp) ;
+}
+
+static int G__TVamosCHIODataDict_162_0_5(G__value* result7, G__CONST char* funcname, struct G__param* libp, int hash)
+{
+      ((TVamosCHIOData*) G__getstructoffset())->SetVamosCHIOPadNbrA((UShort_t) G__int(libp->para[0]));
+      G__setnull(result7);
+   return(1 || funcname || hash || result7 || libp) ;
+}
+
+static int G__TVamosCHIODataDict_162_0_6(G__value* result7, G__CONST char* funcname, struct G__param* libp, int hash)
+{
+      ((TVamosCHIOData*) G__getstructoffset())->SetVamosCHIOEnergyA((UShort_t) G__int(libp->para[0]));
+      G__setnull(result7);
+   return(1 || funcname || hash || result7 || libp) ;
+}
+
+static int G__TVamosCHIODataDict_162_0_7(G__value* result7, G__CONST char* funcname, struct G__param* libp, int hash)
+{
+      ((TVamosCHIOData*) G__getstructoffset())->SetVamosCHIOPadNbrB((UShort_t) G__int(libp->para[0]));
+      G__setnull(result7);
+   return(1 || funcname || hash || result7 || libp) ;
+}
+
+static int G__TVamosCHIODataDict_162_0_8(G__value* result7, G__CONST char* funcname, struct G__param* libp, int hash)
+{
+      ((TVamosCHIOData*) G__getstructoffset())->SetVamosCHIOEnergyB((UShort_t) G__int(libp->para[0]));
+      G__setnull(result7);
+   return(1 || funcname || hash || result7 || libp) ;
+}
+
+static int G__TVamosCHIODataDict_162_0_9(G__value* result7, G__CONST char* funcname, struct G__param* libp, int hash)
+{
+      ((TVamosCHIOData*) G__getstructoffset())->SetVamosCHIOPadNbrC((UShort_t) G__int(libp->para[0]));
+      G__setnull(result7);
+   return(1 || funcname || hash || result7 || libp) ;
+}
+
+static int G__TVamosCHIODataDict_162_0_10(G__value* result7, G__CONST char* funcname, struct G__param* libp, int hash)
+{
+      ((TVamosCHIOData*) G__getstructoffset())->SetVamosCHIOEnergyC((UShort_t) G__int(libp->para[0]));
+      G__setnull(result7);
+   return(1 || funcname || hash || result7 || libp) ;
+}
+
+static int G__TVamosCHIODataDict_162_0_11(G__value* result7, G__CONST char* funcname, struct G__param* libp, int hash)
+{
+      G__letint(result7, 114, (long) ((TVamosCHIOData*) G__getstructoffset())->GetVamosCHIOMultA());
+   return(1 || funcname || hash || result7 || libp) ;
+}
+
+static int G__TVamosCHIODataDict_162_0_12(G__value* result7, G__CONST char* funcname, struct G__param* libp, int hash)
+{
+      G__letint(result7, 114, (long) ((TVamosCHIOData*) G__getstructoffset())->GetVamosCHIOPadNbrA((Int_t) G__int(libp->para[0])));
+   return(1 || funcname || hash || result7 || libp) ;
+}
+
+static int G__TVamosCHIODataDict_162_0_13(G__value* result7, G__CONST char* funcname, struct G__param* libp, int hash)
+{
+      G__letint(result7, 114, (long) ((TVamosCHIOData*) G__getstructoffset())->GetVamosCHIOEnergyA((Int_t) G__int(libp->para[0])));
+   return(1 || funcname || hash || result7 || libp) ;
+}
+
+static int G__TVamosCHIODataDict_162_0_14(G__value* result7, G__CONST char* funcname, struct G__param* libp, int hash)
+{
+      G__letint(result7, 114, (long) ((TVamosCHIOData*) G__getstructoffset())->GetVamosCHIOMultB());
+   return(1 || funcname || hash || result7 || libp) ;
+}
+
+static int G__TVamosCHIODataDict_162_0_15(G__value* result7, G__CONST char* funcname, struct G__param* libp, int hash)
+{
+      G__letint(result7, 114, (long) ((TVamosCHIOData*) G__getstructoffset())->GetVamosCHIOPadNbrB((Int_t) G__int(libp->para[0])));
+   return(1 || funcname || hash || result7 || libp) ;
+}
+
+static int G__TVamosCHIODataDict_162_0_16(G__value* result7, G__CONST char* funcname, struct G__param* libp, int hash)
+{
+      G__letint(result7, 114, (long) ((TVamosCHIOData*) G__getstructoffset())->GetVamosCHIOEnergyB((Int_t) G__int(libp->para[0])));
+   return(1 || funcname || hash || result7 || libp) ;
+}
+
+static int G__TVamosCHIODataDict_162_0_17(G__value* result7, G__CONST char* funcname, struct G__param* libp, int hash)
+{
+      G__letint(result7, 114, (long) ((TVamosCHIOData*) G__getstructoffset())->GetVamosCHIOMultC());
+   return(1 || funcname || hash || result7 || libp) ;
+}
+
+static int G__TVamosCHIODataDict_162_0_18(G__value* result7, G__CONST char* funcname, struct G__param* libp, int hash)
+{
+      G__letint(result7, 114, (long) ((TVamosCHIOData*) G__getstructoffset())->GetVamosCHIOPadNbrC((Int_t) G__int(libp->para[0])));
+   return(1 || funcname || hash || result7 || libp) ;
+}
+
+static int G__TVamosCHIODataDict_162_0_19(G__value* result7, G__CONST char* funcname, struct G__param* libp, int hash)
+{
+      G__letint(result7, 114, (long) ((TVamosCHIOData*) G__getstructoffset())->GetVamosCHIOEnergyC((Int_t) G__int(libp->para[0])));
+   return(1 || funcname || hash || result7 || libp) ;
+}
+
+static int G__TVamosCHIODataDict_162_0_20(G__value* result7, G__CONST char* funcname, struct G__param* libp, int hash)
+{
+      G__letint(result7, 85, (long) TVamosCHIOData::Class());
+   return(1 || funcname || hash || result7 || libp) ;
+}
+
+static int G__TVamosCHIODataDict_162_0_21(G__value* result7, G__CONST char* funcname, struct G__param* libp, int hash)
+{
+      G__letint(result7, 67, (long) TVamosCHIOData::Class_Name());
+   return(1 || funcname || hash || result7 || libp) ;
+}
+
+static int G__TVamosCHIODataDict_162_0_22(G__value* result7, G__CONST char* funcname, struct G__param* libp, int hash)
+{
+      G__letint(result7, 115, (long) TVamosCHIOData::Class_Version());
+   return(1 || funcname || hash || result7 || libp) ;
+}
+
+static int G__TVamosCHIODataDict_162_0_23(G__value* result7, G__CONST char* funcname, struct G__param* libp, int hash)
+{
+      TVamosCHIOData::Dictionary();
+      G__setnull(result7);
+   return(1 || funcname || hash || result7 || libp) ;
+}
+
+static int G__TVamosCHIODataDict_162_0_27(G__value* result7, G__CONST char* funcname, struct G__param* libp, int hash)
+{
+      ((TVamosCHIOData*) G__getstructoffset())->StreamerNVirtual(*(TBuffer*) libp->para[0].ref);
+      G__setnull(result7);
+   return(1 || funcname || hash || result7 || libp) ;
+}
+
+static int G__TVamosCHIODataDict_162_0_28(G__value* result7, G__CONST char* funcname, struct G__param* libp, int hash)
+{
+      G__letint(result7, 67, (long) TVamosCHIOData::DeclFileName());
+   return(1 || funcname || hash || result7 || libp) ;
+}
+
+static int G__TVamosCHIODataDict_162_0_29(G__value* result7, G__CONST char* funcname, struct G__param* libp, int hash)
+{
+      G__letint(result7, 105, (long) TVamosCHIOData::ImplFileLine());
+   return(1 || funcname || hash || result7 || libp) ;
+}
+
+static int G__TVamosCHIODataDict_162_0_30(G__value* result7, G__CONST char* funcname, struct G__param* libp, int hash)
+{
+      G__letint(result7, 67, (long) TVamosCHIOData::ImplFileName());
+   return(1 || funcname || hash || result7 || libp) ;
+}
+
+static int G__TVamosCHIODataDict_162_0_31(G__value* result7, G__CONST char* funcname, struct G__param* libp, int hash)
+{
+      G__letint(result7, 105, (long) TVamosCHIOData::DeclFileLine());
+   return(1 || funcname || hash || result7 || libp) ;
+}
+
+// automatic copy constructor
+static int G__TVamosCHIODataDict_162_0_32(G__value* result7, G__CONST char* funcname, struct G__param* libp, int hash)
+
+{
+   TVamosCHIOData* p;
+   void* tmp = (void*) G__int(libp->para[0]);
+   p = new TVamosCHIOData(*(TVamosCHIOData*) tmp);
+   result7->obj.i = (long) p;
+   result7->ref = (long) p;
+   G__set_tagnum(result7,G__get_linked_tagnum(&G__TVamosCHIODataDictLN_TVamosCHIOData));
+   return(1 || funcname || hash || result7 || libp) ;
+}
+
+// automatic destructor
+typedef TVamosCHIOData G__TTVamosCHIOData;
+static int G__TVamosCHIODataDict_162_0_33(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[] (TVamosCHIOData*) soff;
+     } else {
+       G__setgvp((long) G__PVOID);
+       for (int i = n - 1; i >= 0; --i) {
+         ((TVamosCHIOData*) (soff+(sizeof(TVamosCHIOData)*i)))->~G__TTVamosCHIOData();
+       }
+       G__setgvp((long)gvp);
+     }
+   } else {
+     if (gvp == (char*)G__PVOID) {
+       delete (TVamosCHIOData*) soff;
+     } else {
+       G__setgvp((long) G__PVOID);
+       ((TVamosCHIOData*) (soff))->~G__TTVamosCHIOData();
+       G__setgvp((long)gvp);
+     }
+   }
+   G__setnull(result7);
+   return(1 || funcname || hash || result7 || libp) ;
+}
+
+// automatic assignment operator
+static int G__TVamosCHIODataDict_162_0_34(G__value* result7, G__CONST char* funcname, struct G__param* libp, int hash)
+{
+   TVamosCHIOData* dest = (TVamosCHIOData*) G__getstructoffset();
+   *dest = *(TVamosCHIOData*) libp->para[0].ref;
+   const TVamosCHIOData& obj = *dest;
+   result7->ref = (long) (&obj);
+   result7->obj.i = (long) (&obj);
+   return(1 || funcname || hash || result7 || libp) ;
+}
+
+
+/* Setting up global function */
+
+/*********************************************************
+* Member function Stub
+*********************************************************/
+
+/* TVamosCHIOData */
+
+/*********************************************************
+* Global function Stub
+*********************************************************/
+
+/*********************************************************
+* Get size of pointer to member function
+*********************************************************/
+class G__Sizep2memfuncTVamosCHIODataDict {
+ public:
+  G__Sizep2memfuncTVamosCHIODataDict(): p(&G__Sizep2memfuncTVamosCHIODataDict::sizep2memfunc) {}
+    size_t sizep2memfunc() { return(sizeof(p)); }
+  private:
+    size_t (G__Sizep2memfuncTVamosCHIODataDict::*p)();
+};
+
+size_t G__get_sizep2memfuncTVamosCHIODataDict()
+{
+  G__Sizep2memfuncTVamosCHIODataDict 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_inheritanceTVamosCHIODataDict() {
+
+   /* Setting up class inheritance */
+   if(0==G__getnumbaseclass(G__get_linked_tagnum(&G__TVamosCHIODataDictLN_TVamosCHIOData))) {
+     TVamosCHIOData *G__Lderived;
+     G__Lderived=(TVamosCHIOData*)0x1000;
+     {
+       TObject *G__Lpbase=(TObject*)G__Lderived;
+       G__inheritance_setup(G__get_linked_tagnum(&G__TVamosCHIODataDictLN_TVamosCHIOData),G__get_linked_tagnum(&G__TVamosCHIODataDictLN_TObject),(long)G__Lpbase-(long)G__Lderived,1,1);
+     }
+   }
+}
+
+/*********************************************************
+* typedef information setup/
+*********************************************************/
+extern "C" void G__cpp_setup_typetableTVamosCHIODataDict() {
+
+   /* 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("Int_t",105,-1,0,-1);
+   G__setnewtype(-1,"Signed integer 4 bytes (int)",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__TVamosCHIODataDictLN_vectorlEROOTcLcLTSchemaHelpercOallocatorlEROOTcLcLTSchemaHelpergRsPgR),0,-1);
+   G__setnewtype(-1,NULL,0);
+   G__search_typename2("reverse_iterator<const_iterator>",117,G__get_linked_tagnum(&G__TVamosCHIODataDictLN_reverse_iteratorlEvectorlEROOTcLcLTSchemaHelpercOallocatorlEROOTcLcLTSchemaHelpergRsPgRcLcLiteratorgR),0,G__get_linked_tagnum(&G__TVamosCHIODataDictLN_vectorlEROOTcLcLTSchemaHelpercOallocatorlEROOTcLcLTSchemaHelpergRsPgR));
+   G__setnewtype(-1,NULL,0);
+   G__search_typename2("reverse_iterator<iterator>",117,G__get_linked_tagnum(&G__TVamosCHIODataDictLN_reverse_iteratorlEvectorlEROOTcLcLTSchemaHelpercOallocatorlEROOTcLcLTSchemaHelpergRsPgRcLcLiteratorgR),0,G__get_linked_tagnum(&G__TVamosCHIODataDictLN_vectorlEROOTcLcLTSchemaHelpercOallocatorlEROOTcLcLTSchemaHelpergRsPgR));
+   G__setnewtype(-1,NULL,0);
+   G__search_typename2("vector<TVirtualArray*>",117,G__get_linked_tagnum(&G__TVamosCHIODataDictLN_vectorlETVirtualArraymUcOallocatorlETVirtualArraymUgRsPgR),0,-1);
+   G__setnewtype(-1,NULL,0);
+   G__search_typename2("reverse_iterator<const_iterator>",117,G__get_linked_tagnum(&G__TVamosCHIODataDictLN_reverse_iteratorlEvectorlETVirtualArraymUcOallocatorlETVirtualArraymUgRsPgRcLcLiteratorgR),0,G__get_linked_tagnum(&G__TVamosCHIODataDictLN_vectorlETVirtualArraymUcOallocatorlETVirtualArraymUgRsPgR));
+   G__setnewtype(-1,NULL,0);
+   G__search_typename2("reverse_iterator<iterator>",117,G__get_linked_tagnum(&G__TVamosCHIODataDictLN_reverse_iteratorlEvectorlETVirtualArraymUcOallocatorlETVirtualArraymUgRsPgRcLcLiteratorgR),0,G__get_linked_tagnum(&G__TVamosCHIODataDictLN_vectorlETVirtualArraymUcOallocatorlETVirtualArraymUgRsPgR));
+   G__setnewtype(-1,NULL,0);
+   G__search_typename2("vector<UShort_t>",117,G__get_linked_tagnum(&G__TVamosCHIODataDictLN_vectorlEunsignedsPshortcOallocatorlEunsignedsPshortgRsPgR),0,-1);
+   G__setnewtype(-1,NULL,0);
+}
+
+/*********************************************************
+* Data Member information setup/
+*********************************************************/
+
+   /* Setting up class,struct,union tag member variable */
+
+   /* TVamosCHIOData */
+static void G__setup_memvarTVamosCHIOData(void) {
+   G__tag_memvar_setup(G__get_linked_tagnum(&G__TVamosCHIODataDictLN_TVamosCHIOData));
+   { TVamosCHIOData *p; p=(TVamosCHIOData*)0x1000; if (p) { }
+   G__memvar_setup((void*)0,117,0,0,G__get_linked_tagnum(&G__TVamosCHIODataDictLN_vectorlEunsignedsPshortcOallocatorlEunsignedsPshortgRsPgR),G__defined_typename("vector<UShort_t>"),-1,4,"fVamos_CHIO_A_PadNbr=",0,(char*)NULL);
+   G__memvar_setup((void*)0,117,0,0,G__get_linked_tagnum(&G__TVamosCHIODataDictLN_vectorlEunsignedsPshortcOallocatorlEunsignedsPshortgRsPgR),G__defined_typename("vector<UShort_t>"),-1,4,"fVamos_CHIO_A_Energy=",0,(char*)NULL);
+   G__memvar_setup((void*)0,117,0,0,G__get_linked_tagnum(&G__TVamosCHIODataDictLN_vectorlEunsignedsPshortcOallocatorlEunsignedsPshortgRsPgR),G__defined_typename("vector<UShort_t>"),-1,4,"fVamos_CHIO_B_PadNbr=",0,(char*)NULL);
+   G__memvar_setup((void*)0,117,0,0,G__get_linked_tagnum(&G__TVamosCHIODataDictLN_vectorlEunsignedsPshortcOallocatorlEunsignedsPshortgRsPgR),G__defined_typename("vector<UShort_t>"),-1,4,"fVamos_CHIO_B_Energy=",0,(char*)NULL);
+   G__memvar_setup((void*)0,117,0,0,G__get_linked_tagnum(&G__TVamosCHIODataDictLN_vectorlEunsignedsPshortcOallocatorlEunsignedsPshortgRsPgR),G__defined_typename("vector<UShort_t>"),-1,4,"fVamos_CHIO_C_PadNbr=",0,(char*)NULL);
+   G__memvar_setup((void*)0,117,0,0,G__get_linked_tagnum(&G__TVamosCHIODataDictLN_vectorlEunsignedsPshortcOallocatorlEunsignedsPshortgRsPgR),G__defined_typename("vector<UShort_t>"),-1,4,"fVamos_CHIO_C_Energy=",0,(char*)NULL);
+   G__memvar_setup((void*)0,85,0,0,G__get_linked_tagnum(&G__TVamosCHIODataDictLN_TClass),-1,-2,4,"fgIsA=",0,(char*)NULL);
+   }
+   G__tag_memvar_reset();
+}
+
+extern "C" void G__cpp_setup_memvarTVamosCHIODataDict() {
+}
+/***********************************************************
+************************************************************
+************************************************************
+************************************************************
+************************************************************
+************************************************************
+************************************************************
+***********************************************************/
+
+/*********************************************************
+* Member function information setup for each class
+*********************************************************/
+static void G__setup_memfuncTVamosCHIOData(void) {
+   /* TVamosCHIOData */
+   G__tag_memfunc_setup(G__get_linked_tagnum(&G__TVamosCHIODataDictLN_TVamosCHIOData));
+   G__memfunc_setup("TVamosCHIOData",1271,G__TVamosCHIODataDict_162_0_1, 105, G__get_linked_tagnum(&G__TVamosCHIODataDictLN_TVamosCHIOData), -1, 0, 0, 1, 1, 0, "", (char*)NULL, (void*) NULL, 0);
+   G__memfunc_setup("Clear",487,G__TVamosCHIODataDict_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("SetVamosCHIOPadNbrA",1741,G__TVamosCHIODataDict_162_0_5, 121, -1, -1, 0, 1, 1, 1, 0, "r - 'UShort_t' 0 - PadNbrA", (char*)NULL, (void*) NULL, 0);
+   G__memfunc_setup("SetVamosCHIOEnergyA",1792,G__TVamosCHIODataDict_162_0_6, 121, -1, -1, 0, 1, 1, 1, 0, "r - 'UShort_t' 0 - EnergyA", (char*)NULL, (void*) NULL, 0);
+   G__memfunc_setup("SetVamosCHIOPadNbrB",1742,G__TVamosCHIODataDict_162_0_7, 121, -1, -1, 0, 1, 1, 1, 0, "r - 'UShort_t' 0 - PadNbrB", (char*)NULL, (void*) NULL, 0);
+   G__memfunc_setup("SetVamosCHIOEnergyB",1793,G__TVamosCHIODataDict_162_0_8, 121, -1, -1, 0, 1, 1, 1, 0, "r - 'UShort_t' 0 - EnergyB", (char*)NULL, (void*) NULL, 0);
+   G__memfunc_setup("SetVamosCHIOPadNbrC",1743,G__TVamosCHIODataDict_162_0_9, 121, -1, -1, 0, 1, 1, 1, 0, "r - 'UShort_t' 0 - PadNbrC", (char*)NULL, (void*) NULL, 0);
+   G__memfunc_setup("SetVamosCHIOEnergyC",1794,G__TVamosCHIODataDict_162_0_10, 121, -1, -1, 0, 1, 1, 1, 0, "r - 'UShort_t' 0 - EnergyC", (char*)NULL, (void*) NULL, 0);
+   G__memfunc_setup("GetVamosCHIOMultA",1580,G__TVamosCHIODataDict_162_0_11, 114, -1, G__defined_typename("UShort_t"), 0, 0, 1, 1, 0, "", (char*)NULL, (void*) NULL, 0);
+   G__memfunc_setup("GetVamosCHIOPadNbrA",1729,G__TVamosCHIODataDict_162_0_12, 114, -1, G__defined_typename("UShort_t"), 0, 1, 1, 1, 0, "i - 'Int_t' 0 - i", (char*)NULL, (void*) NULL, 0);
+   G__memfunc_setup("GetVamosCHIOEnergyA",1780,G__TVamosCHIODataDict_162_0_13, 114, -1, G__defined_typename("UShort_t"), 0, 1, 1, 1, 0, "i - 'Int_t' 0 - i", (char*)NULL, (void*) NULL, 0);
+   G__memfunc_setup("GetVamosCHIOMultB",1581,G__TVamosCHIODataDict_162_0_14, 114, -1, G__defined_typename("UShort_t"), 0, 0, 1, 1, 0, "", (char*)NULL, (void*) NULL, 0);
+   G__memfunc_setup("GetVamosCHIOPadNbrB",1730,G__TVamosCHIODataDict_162_0_15, 114, -1, G__defined_typename("UShort_t"), 0, 1, 1, 1, 0, "i - 'Int_t' 0 - i", (char*)NULL, (void*) NULL, 0);
+   G__memfunc_setup("GetVamosCHIOEnergyB",1781,G__TVamosCHIODataDict_162_0_16, 114, -1, G__defined_typename("UShort_t"), 0, 1, 1, 1, 0, "i - 'Int_t' 0 - i", (char*)NULL, (void*) NULL, 0);
+   G__memfunc_setup("GetVamosCHIOMultC",1582,G__TVamosCHIODataDict_162_0_17, 114, -1, G__defined_typename("UShort_t"), 0, 0, 1, 1, 0, "", (char*)NULL, (void*) NULL, 0);
+   G__memfunc_setup("GetVamosCHIOPadNbrC",1731,G__TVamosCHIODataDict_162_0_18, 114, -1, G__defined_typename("UShort_t"), 0, 1, 1, 1, 0, "i - 'Int_t' 0 - i", (char*)NULL, (void*) NULL, 0);
+   G__memfunc_setup("GetVamosCHIOEnergyC",1782,G__TVamosCHIODataDict_162_0_19, 114, -1, G__defined_typename("UShort_t"), 0, 1, 1, 1, 0, "i - 'Int_t' 0 - i", (char*)NULL, (void*) NULL, 0);
+   G__memfunc_setup("Class",502,G__TVamosCHIODataDict_162_0_20, 85, G__get_linked_tagnum(&G__TVamosCHIODataDictLN_TClass), -1, 0, 0, 3, 1, 0, "", (char*)NULL, (void*) G__func2void( (TClass* (*)())(&TVamosCHIOData::Class) ), 0);
+   G__memfunc_setup("Class_Name",982,G__TVamosCHIODataDict_162_0_21, 67, -1, -1, 0, 0, 3, 1, 1, "", (char*)NULL, (void*) G__func2void( (const char* (*)())(&TVamosCHIOData::Class_Name) ), 0);
+   G__memfunc_setup("Class_Version",1339,G__TVamosCHIODataDict_162_0_22, 115, -1, G__defined_typename("Version_t"), 0, 0, 3, 1, 0, "", (char*)NULL, (void*) G__func2void( (Version_t (*)())(&TVamosCHIOData::Class_Version) ), 0);
+   G__memfunc_setup("Dictionary",1046,G__TVamosCHIODataDict_162_0_23, 121, -1, -1, 0, 0, 3, 1, 0, "", (char*)NULL, (void*) G__func2void( (void (*)())(&TVamosCHIOData::Dictionary) ), 0);
+   G__memfunc_setup("IsA",253,(G__InterfaceMethod) NULL,85, G__get_linked_tagnum(&G__TVamosCHIODataDictLN_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__TVamosCHIODataDict_162_0_27, 121, -1, -1, 0, 1, 1, 1, 0, "u 'TBuffer' - 1 - b", (char*)NULL, (void*) NULL, 0);
+   G__memfunc_setup("DeclFileName",1145,G__TVamosCHIODataDict_162_0_28, 67, -1, -1, 0, 0, 3, 1, 1, "", (char*)NULL, (void*) G__func2void( (const char* (*)())(&TVamosCHIOData::DeclFileName) ), 0);
+   G__memfunc_setup("ImplFileLine",1178,G__TVamosCHIODataDict_162_0_29, 105, -1, -1, 0, 0, 3, 1, 0, "", (char*)NULL, (void*) G__func2void( (int (*)())(&TVamosCHIOData::ImplFileLine) ), 0);
+   G__memfunc_setup("ImplFileName",1171,G__TVamosCHIODataDict_162_0_30, 67, -1, -1, 0, 0, 3, 1, 1, "", (char*)NULL, (void*) G__func2void( (const char* (*)())(&TVamosCHIOData::ImplFileName) ), 0);
+   G__memfunc_setup("DeclFileLine",1152,G__TVamosCHIODataDict_162_0_31, 105, -1, -1, 0, 0, 3, 1, 0, "", (char*)NULL, (void*) G__func2void( (int (*)())(&TVamosCHIOData::DeclFileLine) ), 0);
+   // automatic copy constructor
+   G__memfunc_setup("TVamosCHIOData", 1271, G__TVamosCHIODataDict_162_0_32, (int) ('i'), G__get_linked_tagnum(&G__TVamosCHIODataDictLN_TVamosCHIOData), -1, 0, 1, 1, 1, 0, "u 'TVamosCHIOData' - 11 - -", (char*) NULL, (void*) NULL, 0);
+   // automatic destructor
+   G__memfunc_setup("~TVamosCHIOData", 1397, G__TVamosCHIODataDict_162_0_33, (int) ('y'), -1, -1, 0, 0, 1, 1, 0, "", (char*) NULL, (void*) NULL, 1);
+   // automatic assignment operator
+   G__memfunc_setup("operator=", 937, G__TVamosCHIODataDict_162_0_34, (int) ('u'), G__get_linked_tagnum(&G__TVamosCHIODataDictLN_TVamosCHIOData), -1, 1, 1, 1, 1, 0, "u 'TVamosCHIOData' - 11 - -", (char*) NULL, (void*) NULL, 0);
+   G__tag_memfunc_reset();
+}
+
+
+/*********************************************************
+* Member function information setup
+*********************************************************/
+extern "C" void G__cpp_setup_memfuncTVamosCHIODataDict() {
+}
+
+/*********************************************************
+* 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() {
+
+   G__resetglobalenv();
+}
+extern "C" void G__cpp_setup_globalTVamosCHIODataDict() {
+  G__cpp_setup_global0();
+  G__cpp_setup_global1();
+}
+
+/*********************************************************
+* 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_funcTVamosCHIODataDict() {
+  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__TVamosCHIODataDictLN_TClass = { "TClass" , 99 , -1 };
+G__linked_taginfo G__TVamosCHIODataDictLN_TBuffer = { "TBuffer" , 99 , -1 };
+G__linked_taginfo G__TVamosCHIODataDictLN_TMemberInspector = { "TMemberInspector" , 99 , -1 };
+G__linked_taginfo G__TVamosCHIODataDictLN_TObject = { "TObject" , 99 , -1 };
+G__linked_taginfo G__TVamosCHIODataDictLN_vectorlEunsignedsPshortcOallocatorlEunsignedsPshortgRsPgR = { "vector<unsigned short,allocator<unsigned short> >" , 99 , -1 };
+G__linked_taginfo G__TVamosCHIODataDictLN_vectorlEROOTcLcLTSchemaHelpercOallocatorlEROOTcLcLTSchemaHelpergRsPgR = { "vector<ROOT::TSchemaHelper,allocator<ROOT::TSchemaHelper> >" , 99 , -1 };
+G__linked_taginfo G__TVamosCHIODataDictLN_reverse_iteratorlEvectorlEROOTcLcLTSchemaHelpercOallocatorlEROOTcLcLTSchemaHelpergRsPgRcLcLiteratorgR = { "reverse_iterator<vector<ROOT::TSchemaHelper,allocator<ROOT::TSchemaHelper> >::iterator>" , 99 , -1 };
+G__linked_taginfo G__TVamosCHIODataDictLN_vectorlETVirtualArraymUcOallocatorlETVirtualArraymUgRsPgR = { "vector<TVirtualArray*,allocator<TVirtualArray*> >" , 99 , -1 };
+G__linked_taginfo G__TVamosCHIODataDictLN_reverse_iteratorlEvectorlETVirtualArraymUcOallocatorlETVirtualArraymUgRsPgRcLcLiteratorgR = { "reverse_iterator<vector<TVirtualArray*,allocator<TVirtualArray*> >::iterator>" , 99 , -1 };
+G__linked_taginfo G__TVamosCHIODataDictLN_TVamosCHIOData = { "TVamosCHIOData" , 99 , -1 };
+
+/* Reset class/struct taginfo */
+extern "C" void G__cpp_reset_tagtableTVamosCHIODataDict() {
+  G__TVamosCHIODataDictLN_TClass.tagnum = -1 ;
+  G__TVamosCHIODataDictLN_TBuffer.tagnum = -1 ;
+  G__TVamosCHIODataDictLN_TMemberInspector.tagnum = -1 ;
+  G__TVamosCHIODataDictLN_TObject.tagnum = -1 ;
+  G__TVamosCHIODataDictLN_vectorlEunsignedsPshortcOallocatorlEunsignedsPshortgRsPgR.tagnum = -1 ;
+  G__TVamosCHIODataDictLN_vectorlEROOTcLcLTSchemaHelpercOallocatorlEROOTcLcLTSchemaHelpergRsPgR.tagnum = -1 ;
+  G__TVamosCHIODataDictLN_reverse_iteratorlEvectorlEROOTcLcLTSchemaHelpercOallocatorlEROOTcLcLTSchemaHelpergRsPgRcLcLiteratorgR.tagnum = -1 ;
+  G__TVamosCHIODataDictLN_vectorlETVirtualArraymUcOallocatorlETVirtualArraymUgRsPgR.tagnum = -1 ;
+  G__TVamosCHIODataDictLN_reverse_iteratorlEvectorlETVirtualArraymUcOallocatorlETVirtualArraymUgRsPgRcLcLiteratorgR.tagnum = -1 ;
+  G__TVamosCHIODataDictLN_TVamosCHIOData.tagnum = -1 ;
+}
+
+
+extern "C" void G__cpp_setup_tagtableTVamosCHIODataDict() {
+
+   /* Setting up class,struct,union tag entry */
+   G__get_linked_tagnum_fwd(&G__TVamosCHIODataDictLN_TClass);
+   G__get_linked_tagnum_fwd(&G__TVamosCHIODataDictLN_TBuffer);
+   G__get_linked_tagnum_fwd(&G__TVamosCHIODataDictLN_TMemberInspector);
+   G__get_linked_tagnum_fwd(&G__TVamosCHIODataDictLN_TObject);
+   G__get_linked_tagnum_fwd(&G__TVamosCHIODataDictLN_vectorlEunsignedsPshortcOallocatorlEunsignedsPshortgRsPgR);
+   G__get_linked_tagnum_fwd(&G__TVamosCHIODataDictLN_vectorlEROOTcLcLTSchemaHelpercOallocatorlEROOTcLcLTSchemaHelpergRsPgR);
+   G__get_linked_tagnum_fwd(&G__TVamosCHIODataDictLN_reverse_iteratorlEvectorlEROOTcLcLTSchemaHelpercOallocatorlEROOTcLcLTSchemaHelpergRsPgRcLcLiteratorgR);
+   G__get_linked_tagnum_fwd(&G__TVamosCHIODataDictLN_vectorlETVirtualArraymUcOallocatorlETVirtualArraymUgRsPgR);
+   G__get_linked_tagnum_fwd(&G__TVamosCHIODataDictLN_reverse_iteratorlEvectorlETVirtualArraymUcOallocatorlETVirtualArraymUgRsPgRcLcLiteratorgR);
+   G__tagtable_setup(G__get_linked_tagnum_fwd(&G__TVamosCHIODataDictLN_TVamosCHIOData),sizeof(TVamosCHIOData),-1,29952,"VamosCHIOData structure",G__setup_memvarTVamosCHIOData,G__setup_memfuncTVamosCHIOData);
+}
+extern "C" void G__cpp_setupTVamosCHIODataDict(void) {
+  G__check_setup_version(30051515,"G__cpp_setupTVamosCHIODataDict()");
+  G__set_cpp_environmentTVamosCHIODataDict();
+  G__cpp_setup_tagtableTVamosCHIODataDict();
+
+  G__cpp_setup_inheritanceTVamosCHIODataDict();
+
+  G__cpp_setup_typetableTVamosCHIODataDict();
+
+  G__cpp_setup_memvarTVamosCHIODataDict();
+
+  G__cpp_setup_memfuncTVamosCHIODataDict();
+  G__cpp_setup_globalTVamosCHIODataDict();
+  G__cpp_setup_funcTVamosCHIODataDict();
+
+   if(0==G__getsizep2memfunc()) G__get_sizep2memfuncTVamosCHIODataDict();
+  return;
+}
+class G__cpp_setup_initTVamosCHIODataDict {
+  public:
+    G__cpp_setup_initTVamosCHIODataDict() { G__add_setup_func("TVamosCHIODataDict",(G__incsetup)(&G__cpp_setupTVamosCHIODataDict)); G__call_setup_funcs(); }
+   ~G__cpp_setup_initTVamosCHIODataDict() { G__remove_setup_func("TVamosCHIODataDict"); }
+};
+G__cpp_setup_initTVamosCHIODataDict G__cpp_setup_initializerTVamosCHIODataDict;
+
diff --git a/NPLib/Vamos/TVamosCHIODataDict.h b/NPLib/Vamos/TVamosCHIODataDict.h
new file mode 100644
index 0000000000000000000000000000000000000000..f2ff4e06dab0a531f1ca7178f9a415cdeda103c0
--- /dev/null
+++ b/NPLib/Vamos/TVamosCHIODataDict.h
@@ -0,0 +1,53 @@
+/********************************************************************
+* TVamosCHIODataDict.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 TVamosCHIODataDict.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_tagtableTVamosCHIODataDict();
+extern void G__cpp_setup_inheritanceTVamosCHIODataDict();
+extern void G__cpp_setup_typetableTVamosCHIODataDict();
+extern void G__cpp_setup_memvarTVamosCHIODataDict();
+extern void G__cpp_setup_globalTVamosCHIODataDict();
+extern void G__cpp_setup_memfuncTVamosCHIODataDict();
+extern void G__cpp_setup_funcTVamosCHIODataDict();
+extern void G__set_cpp_environmentTVamosCHIODataDict();
+}
+
+
+#include "TObject.h"
+#include "TMemberInspector.h"
+#include "TVamosCHIOData.h"
+#include <algorithm>
+namespace std { }
+using namespace std;
+
+#ifndef G__MEMFUNCBODY
+#endif
+
+extern G__linked_taginfo G__TVamosCHIODataDictLN_TClass;
+extern G__linked_taginfo G__TVamosCHIODataDictLN_TBuffer;
+extern G__linked_taginfo G__TVamosCHIODataDictLN_TMemberInspector;
+extern G__linked_taginfo G__TVamosCHIODataDictLN_TObject;
+extern G__linked_taginfo G__TVamosCHIODataDictLN_vectorlEunsignedsPshortcOallocatorlEunsignedsPshortgRsPgR;
+extern G__linked_taginfo G__TVamosCHIODataDictLN_vectorlEROOTcLcLTSchemaHelpercOallocatorlEROOTcLcLTSchemaHelpergRsPgR;
+extern G__linked_taginfo G__TVamosCHIODataDictLN_reverse_iteratorlEvectorlEROOTcLcLTSchemaHelpercOallocatorlEROOTcLcLTSchemaHelpergRsPgRcLcLiteratorgR;
+extern G__linked_taginfo G__TVamosCHIODataDictLN_vectorlETVirtualArraymUcOallocatorlETVirtualArraymUgRsPgR;
+extern G__linked_taginfo G__TVamosCHIODataDictLN_reverse_iteratorlEvectorlETVirtualArraymUcOallocatorlETVirtualArraymUgRsPgRcLcLiteratorgR;
+extern G__linked_taginfo G__TVamosCHIODataDictLN_TVamosCHIOData;
+
+/* STUB derived class for protected member access */
diff --git a/NPLib/Vamos/TVamosDCDataDict.cxx b/NPLib/Vamos/TVamosDCDataDict.cxx
new file mode 100644
index 0000000000000000000000000000000000000000..fe7b07b7acc29eaa28f2f1361198233e950994a5
--- /dev/null
+++ b/NPLib/Vamos/TVamosDCDataDict.cxx
@@ -0,0 +1,1222 @@
+//
+// File generated by rootcint at Tue Jul 17 16:41:39 2012
+
+// Do NOT change. Changes will be lost next time file is generated
+//
+
+#define R__DICTIONARY_FILENAME TVamosDCDataDict
+#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 "TVamosDCDataDict.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 TVamosDCData_ShowMembers(void *obj, TMemberInspector &R__insp);
+   static void *new_TVamosDCData(void *p = 0);
+   static void *newArray_TVamosDCData(Long_t size, void *p);
+   static void delete_TVamosDCData(void *p);
+   static void deleteArray_TVamosDCData(void *p);
+   static void destruct_TVamosDCData(void *p);
+   static void streamer_TVamosDCData(TBuffer &buf, void *obj);
+
+   // Function generating the singleton type initializer
+   static TGenericClassInfo *GenerateInitInstanceLocal(const ::TVamosDCData*)
+   {
+      ::TVamosDCData *ptr = 0;
+      static ::TVirtualIsAProxy* isa_proxy = new ::TInstrumentedIsAProxy< ::TVamosDCData >(0);
+      static ::ROOT::TGenericClassInfo 
+         instance("TVamosDCData", ::TVamosDCData::Class_Version(), "./TVamosDCData.h", 31,
+                  typeid(::TVamosDCData), DefineBehavior(ptr, ptr),
+                  &::TVamosDCData::Dictionary, isa_proxy, 0,
+                  sizeof(::TVamosDCData) );
+      instance.SetNew(&new_TVamosDCData);
+      instance.SetNewArray(&newArray_TVamosDCData);
+      instance.SetDelete(&delete_TVamosDCData);
+      instance.SetDeleteArray(&deleteArray_TVamosDCData);
+      instance.SetDestructor(&destruct_TVamosDCData);
+      instance.SetStreamerFunc(&streamer_TVamosDCData);
+      return &instance;
+   }
+   TGenericClassInfo *GenerateInitInstance(const ::TVamosDCData*)
+   {
+      return GenerateInitInstanceLocal((::TVamosDCData*)0);
+   }
+   // Static variable to force the class initialization
+   static ::ROOT::TGenericClassInfo *_R__UNIQUE_(Init) = GenerateInitInstanceLocal((const ::TVamosDCData*)0x0); R__UseDummy(_R__UNIQUE_(Init));
+} // end of namespace ROOT
+
+//______________________________________________________________________________
+TClass *TVamosDCData::fgIsA = 0;  // static to hold class pointer
+
+//______________________________________________________________________________
+const char *TVamosDCData::Class_Name()
+{
+   return "TVamosDCData";
+}
+
+//______________________________________________________________________________
+const char *TVamosDCData::ImplFileName()
+{
+   return ::ROOT::GenerateInitInstanceLocal((const ::TVamosDCData*)0x0)->GetImplFileName();
+}
+
+//______________________________________________________________________________
+int TVamosDCData::ImplFileLine()
+{
+   return ::ROOT::GenerateInitInstanceLocal((const ::TVamosDCData*)0x0)->GetImplFileLine();
+}
+
+//______________________________________________________________________________
+void TVamosDCData::Dictionary()
+{
+   fgIsA = ::ROOT::GenerateInitInstanceLocal((const ::TVamosDCData*)0x0)->GetClass();
+}
+
+//______________________________________________________________________________
+TClass *TVamosDCData::Class()
+{
+   if (!fgIsA) fgIsA = ::ROOT::GenerateInitInstanceLocal((const ::TVamosDCData*)0x0)->GetClass();
+   return fgIsA;
+}
+
+//______________________________________________________________________________
+void TVamosDCData::Streamer(TBuffer &R__b)
+{
+   // Stream an object of class TVamosDCData.
+
+   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 =  fVamos_DC_Strip1_DetNbr;
+         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 =  fVamos_DC_Strip1_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<UShort_t> &R__stl =  fVamos_DC_Strip1_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++) {
+            unsigned short R__t;
+            R__b >> R__t;
+            R__stl.push_back(R__t);
+         }
+      }
+      {
+         vector<UShort_t> &R__stl =  fVamos_DC_Strip2_DetNbr;
+         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 =  fVamos_DC_Strip2_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<UShort_t> &R__stl =  fVamos_DC_Strip2_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++) {
+            unsigned short R__t;
+            R__b >> R__t;
+            R__stl.push_back(R__t);
+         }
+      }
+      {
+         vector<UShort_t> &R__stl =  fVamos_DC_Efil_DetNbr;
+         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 =  fVamos_DC_Efil_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++) {
+            unsigned short R__t;
+            R__b >> R__t;
+            R__stl.push_back(R__t);
+         }
+      }
+      {
+         vector<UShort_t> &R__stl =  fVamos_DC_Efil_PileUp_DetNbr;
+         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 =  fVamos_DC_Efil_PileUp_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++) {
+            unsigned short R__t;
+            R__b >> R__t;
+            R__stl.push_back(R__t);
+         }
+      }
+      {
+         vector<UShort_t> &R__stl =  fVamos_DC_Tfil_DetNbr;
+         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 =  fVamos_DC_Tfil_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++) {
+            unsigned short R__t;
+            R__b >> R__t;
+            R__stl.push_back(R__t);
+         }
+      }
+      R__b.CheckByteCount(R__s, R__c, TVamosDCData::IsA());
+   } else {
+      R__c = R__b.WriteVersion(TVamosDCData::IsA(), kTRUE);
+      TObject::Streamer(R__b);
+      {
+         vector<UShort_t> &R__stl =  fVamos_DC_Strip1_DetNbr;
+         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 =  fVamos_DC_Strip1_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<UShort_t> &R__stl =  fVamos_DC_Strip1_Energy;
+         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 =  fVamos_DC_Strip2_DetNbr;
+         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 =  fVamos_DC_Strip2_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<UShort_t> &R__stl =  fVamos_DC_Strip2_Energy;
+         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 =  fVamos_DC_Efil_DetNbr;
+         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 =  fVamos_DC_Efil_Energy;
+         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 =  fVamos_DC_Efil_PileUp_DetNbr;
+         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 =  fVamos_DC_Efil_PileUp_Energy;
+         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 =  fVamos_DC_Tfil_DetNbr;
+         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 =  fVamos_DC_Tfil_Time;
+         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);
+            }
+         }
+      }
+      R__b.SetByteCount(R__c, kTRUE);
+   }
+}
+
+//______________________________________________________________________________
+void TVamosDCData::ShowMembers(TMemberInspector &R__insp)
+{
+      // Inspect the data members of an object of class TVamosDCData.
+      TClass *R__cl = ::TVamosDCData::IsA();
+      if (R__cl || R__insp.IsA()) { }
+      R__insp.Inspect(R__cl, R__insp.GetParent(), "fVamos_DC_Strip1_DetNbr", (void*)&fVamos_DC_Strip1_DetNbr);
+      R__insp.InspectMember("vector<UShort_t>", (void*)&fVamos_DC_Strip1_DetNbr, "fVamos_DC_Strip1_DetNbr.", false);
+      R__insp.Inspect(R__cl, R__insp.GetParent(), "fVamos_DC_Strip1_StripNbr", (void*)&fVamos_DC_Strip1_StripNbr);
+      R__insp.InspectMember("vector<UShort_t>", (void*)&fVamos_DC_Strip1_StripNbr, "fVamos_DC_Strip1_StripNbr.", false);
+      R__insp.Inspect(R__cl, R__insp.GetParent(), "fVamos_DC_Strip1_Energy", (void*)&fVamos_DC_Strip1_Energy);
+      R__insp.InspectMember("vector<UShort_t>", (void*)&fVamos_DC_Strip1_Energy, "fVamos_DC_Strip1_Energy.", false);
+      R__insp.Inspect(R__cl, R__insp.GetParent(), "fVamos_DC_Strip2_DetNbr", (void*)&fVamos_DC_Strip2_DetNbr);
+      R__insp.InspectMember("vector<UShort_t>", (void*)&fVamos_DC_Strip2_DetNbr, "fVamos_DC_Strip2_DetNbr.", false);
+      R__insp.Inspect(R__cl, R__insp.GetParent(), "fVamos_DC_Strip2_StripNbr", (void*)&fVamos_DC_Strip2_StripNbr);
+      R__insp.InspectMember("vector<UShort_t>", (void*)&fVamos_DC_Strip2_StripNbr, "fVamos_DC_Strip2_StripNbr.", false);
+      R__insp.Inspect(R__cl, R__insp.GetParent(), "fVamos_DC_Strip2_Energy", (void*)&fVamos_DC_Strip2_Energy);
+      R__insp.InspectMember("vector<UShort_t>", (void*)&fVamos_DC_Strip2_Energy, "fVamos_DC_Strip2_Energy.", false);
+      R__insp.Inspect(R__cl, R__insp.GetParent(), "fVamos_DC_Efil_DetNbr", (void*)&fVamos_DC_Efil_DetNbr);
+      R__insp.InspectMember("vector<UShort_t>", (void*)&fVamos_DC_Efil_DetNbr, "fVamos_DC_Efil_DetNbr.", false);
+      R__insp.Inspect(R__cl, R__insp.GetParent(), "fVamos_DC_Efil_Energy", (void*)&fVamos_DC_Efil_Energy);
+      R__insp.InspectMember("vector<UShort_t>", (void*)&fVamos_DC_Efil_Energy, "fVamos_DC_Efil_Energy.", false);
+      R__insp.Inspect(R__cl, R__insp.GetParent(), "fVamos_DC_Efil_PileUp_DetNbr", (void*)&fVamos_DC_Efil_PileUp_DetNbr);
+      R__insp.InspectMember("vector<UShort_t>", (void*)&fVamos_DC_Efil_PileUp_DetNbr, "fVamos_DC_Efil_PileUp_DetNbr.", false);
+      R__insp.Inspect(R__cl, R__insp.GetParent(), "fVamos_DC_Efil_PileUp_Energy", (void*)&fVamos_DC_Efil_PileUp_Energy);
+      R__insp.InspectMember("vector<UShort_t>", (void*)&fVamos_DC_Efil_PileUp_Energy, "fVamos_DC_Efil_PileUp_Energy.", false);
+      R__insp.Inspect(R__cl, R__insp.GetParent(), "fVamos_DC_Tfil_DetNbr", (void*)&fVamos_DC_Tfil_DetNbr);
+      R__insp.InspectMember("vector<UShort_t>", (void*)&fVamos_DC_Tfil_DetNbr, "fVamos_DC_Tfil_DetNbr.", false);
+      R__insp.Inspect(R__cl, R__insp.GetParent(), "fVamos_DC_Tfil_Time", (void*)&fVamos_DC_Tfil_Time);
+      R__insp.InspectMember("vector<UShort_t>", (void*)&fVamos_DC_Tfil_Time, "fVamos_DC_Tfil_Time.", false);
+      TObject::ShowMembers(R__insp);
+}
+
+namespace ROOT {
+   // Wrappers around operator new
+   static void *new_TVamosDCData(void *p) {
+      return  p ? new(p) ::TVamosDCData : new ::TVamosDCData;
+   }
+   static void *newArray_TVamosDCData(Long_t nElements, void *p) {
+      return p ? new(p) ::TVamosDCData[nElements] : new ::TVamosDCData[nElements];
+   }
+   // Wrapper around operator delete
+   static void delete_TVamosDCData(void *p) {
+      delete ((::TVamosDCData*)p);
+   }
+   static void deleteArray_TVamosDCData(void *p) {
+      delete [] ((::TVamosDCData*)p);
+   }
+   static void destruct_TVamosDCData(void *p) {
+      typedef ::TVamosDCData current_t;
+      ((current_t*)p)->~current_t();
+   }
+   // Wrapper around a custom streamer member function.
+   static void streamer_TVamosDCData(TBuffer &buf, void *obj) {
+      ((::TVamosDCData*)obj)->::TVamosDCData::Streamer(buf);
+   }
+} // end of namespace ROOT for class ::TVamosDCData
+
+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>
+
+/********************************************************
+* TVamosDCDataDict.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_tagtableTVamosDCDataDict();
+
+extern "C" void G__set_cpp_environmentTVamosDCDataDict() {
+  G__add_compiledheader("TObject.h");
+  G__add_compiledheader("TMemberInspector.h");
+  G__add_compiledheader("TVamosDCData.h");
+  G__cpp_reset_tagtableTVamosDCDataDict();
+}
+#include <new>
+extern "C" int G__cpp_dllrevTVamosDCDataDict() { return(30051515); }
+
+/*********************************************************
+* Member function Interface Method
+*********************************************************/
+
+/* TVamosDCData */
+static int G__TVamosDCDataDict_162_0_1(G__value* result7, G__CONST char* funcname, struct G__param* libp, int hash)
+{
+   TVamosDCData* p = NULL;
+   char* gvp = (char*) G__getgvp();
+   int n = G__getaryconstruct();
+   if (n) {
+     if ((gvp == (char*)G__PVOID) || (gvp == 0)) {
+       p = new TVamosDCData[n];
+     } else {
+       p = new((void*) gvp) TVamosDCData[n];
+     }
+   } else {
+     if ((gvp == (char*)G__PVOID) || (gvp == 0)) {
+       p = new TVamosDCData;
+     } else {
+       p = new((void*) gvp) TVamosDCData;
+     }
+   }
+   result7->obj.i = (long) p;
+   result7->ref = (long) p;
+   G__set_tagnum(result7,G__get_linked_tagnum(&G__TVamosDCDataDictLN_TVamosDCData));
+   return(1 || funcname || hash || result7 || libp) ;
+}
+
+static int G__TVamosDCDataDict_162_0_2(G__value* result7, G__CONST char* funcname, struct G__param* libp, int hash)
+{
+      ((TVamosDCData*) G__getstructoffset())->Clear();
+      G__setnull(result7);
+   return(1 || funcname || hash || result7 || libp) ;
+}
+
+static int G__TVamosDCDataDict_162_0_5(G__value* result7, G__CONST char* funcname, struct G__param* libp, int hash)
+{
+      ((TVamosDCData*) G__getstructoffset())->SetVamosDCDetNbr1((UShort_t) G__int(libp->para[0]));
+      G__setnull(result7);
+   return(1 || funcname || hash || result7 || libp) ;
+}
+
+static int G__TVamosDCDataDict_162_0_6(G__value* result7, G__CONST char* funcname, struct G__param* libp, int hash)
+{
+      ((TVamosDCData*) G__getstructoffset())->SetVamosDCStripNbr1((UShort_t) G__int(libp->para[0]));
+      G__setnull(result7);
+   return(1 || funcname || hash || result7 || libp) ;
+}
+
+static int G__TVamosDCDataDict_162_0_7(G__value* result7, G__CONST char* funcname, struct G__param* libp, int hash)
+{
+      ((TVamosDCData*) G__getstructoffset())->SetVamosDCEnergy1((UShort_t) G__int(libp->para[0]));
+      G__setnull(result7);
+   return(1 || funcname || hash || result7 || libp) ;
+}
+
+static int G__TVamosDCDataDict_162_0_8(G__value* result7, G__CONST char* funcname, struct G__param* libp, int hash)
+{
+      ((TVamosDCData*) G__getstructoffset())->SetVamosDCDetNbr2((UShort_t) G__int(libp->para[0]));
+      G__setnull(result7);
+   return(1 || funcname || hash || result7 || libp) ;
+}
+
+static int G__TVamosDCDataDict_162_0_9(G__value* result7, G__CONST char* funcname, struct G__param* libp, int hash)
+{
+      ((TVamosDCData*) G__getstructoffset())->SetVamosDCStripNbr2((UShort_t) G__int(libp->para[0]));
+      G__setnull(result7);
+   return(1 || funcname || hash || result7 || libp) ;
+}
+
+static int G__TVamosDCDataDict_162_0_10(G__value* result7, G__CONST char* funcname, struct G__param* libp, int hash)
+{
+      ((TVamosDCData*) G__getstructoffset())->SetVamosDCEnergy2((UShort_t) G__int(libp->para[0]));
+      G__setnull(result7);
+   return(1 || funcname || hash || result7 || libp) ;
+}
+
+static int G__TVamosDCDataDict_162_0_11(G__value* result7, G__CONST char* funcname, struct G__param* libp, int hash)
+{
+      ((TVamosDCData*) G__getstructoffset())->SetVamosDCEfilDetNbr((UShort_t) G__int(libp->para[0]));
+      G__setnull(result7);
+   return(1 || funcname || hash || result7 || libp) ;
+}
+
+static int G__TVamosDCDataDict_162_0_12(G__value* result7, G__CONST char* funcname, struct G__param* libp, int hash)
+{
+      ((TVamosDCData*) G__getstructoffset())->SetVamosDCEfilEnergy((UShort_t) G__int(libp->para[0]));
+      G__setnull(result7);
+   return(1 || funcname || hash || result7 || libp) ;
+}
+
+static int G__TVamosDCDataDict_162_0_13(G__value* result7, G__CONST char* funcname, struct G__param* libp, int hash)
+{
+      ((TVamosDCData*) G__getstructoffset())->SetVamosDCEfilPileUpDetNbr((UShort_t) G__int(libp->para[0]));
+      G__setnull(result7);
+   return(1 || funcname || hash || result7 || libp) ;
+}
+
+static int G__TVamosDCDataDict_162_0_14(G__value* result7, G__CONST char* funcname, struct G__param* libp, int hash)
+{
+      ((TVamosDCData*) G__getstructoffset())->SetVamosDCEfilPileUpEnergy((UShort_t) G__int(libp->para[0]));
+      G__setnull(result7);
+   return(1 || funcname || hash || result7 || libp) ;
+}
+
+static int G__TVamosDCDataDict_162_0_15(G__value* result7, G__CONST char* funcname, struct G__param* libp, int hash)
+{
+      ((TVamosDCData*) G__getstructoffset())->SetVamosDCTfilDetNbr((UShort_t) G__int(libp->para[0]));
+      G__setnull(result7);
+   return(1 || funcname || hash || result7 || libp) ;
+}
+
+static int G__TVamosDCDataDict_162_0_16(G__value* result7, G__CONST char* funcname, struct G__param* libp, int hash)
+{
+      ((TVamosDCData*) G__getstructoffset())->SetVamosDCTfilTime((UShort_t) G__int(libp->para[0]));
+      G__setnull(result7);
+   return(1 || funcname || hash || result7 || libp) ;
+}
+
+static int G__TVamosDCDataDict_162_0_17(G__value* result7, G__CONST char* funcname, struct G__param* libp, int hash)
+{
+      G__letint(result7, 114, (long) ((TVamosDCData*) G__getstructoffset())->GetVamosDCMultStrip1());
+   return(1 || funcname || hash || result7 || libp) ;
+}
+
+static int G__TVamosDCDataDict_162_0_18(G__value* result7, G__CONST char* funcname, struct G__param* libp, int hash)
+{
+      G__letint(result7, 114, (long) ((TVamosDCData*) G__getstructoffset())->GetVamosDCDetNbr1((Int_t) G__int(libp->para[0])));
+   return(1 || funcname || hash || result7 || libp) ;
+}
+
+static int G__TVamosDCDataDict_162_0_19(G__value* result7, G__CONST char* funcname, struct G__param* libp, int hash)
+{
+      G__letint(result7, 114, (long) ((TVamosDCData*) G__getstructoffset())->GetVamosDCStripNbr1((Int_t) G__int(libp->para[0])));
+   return(1 || funcname || hash || result7 || libp) ;
+}
+
+static int G__TVamosDCDataDict_162_0_20(G__value* result7, G__CONST char* funcname, struct G__param* libp, int hash)
+{
+      G__letint(result7, 114, (long) ((TVamosDCData*) G__getstructoffset())->GetVamosDCEnergy1((Int_t) G__int(libp->para[0])));
+   return(1 || funcname || hash || result7 || libp) ;
+}
+
+static int G__TVamosDCDataDict_162_0_21(G__value* result7, G__CONST char* funcname, struct G__param* libp, int hash)
+{
+      G__letint(result7, 114, (long) ((TVamosDCData*) G__getstructoffset())->GetVamosDCMultStrip2());
+   return(1 || funcname || hash || result7 || libp) ;
+}
+
+static int G__TVamosDCDataDict_162_0_22(G__value* result7, G__CONST char* funcname, struct G__param* libp, int hash)
+{
+      G__letint(result7, 114, (long) ((TVamosDCData*) G__getstructoffset())->GetVamosDCDetNbr2((Int_t) G__int(libp->para[0])));
+   return(1 || funcname || hash || result7 || libp) ;
+}
+
+static int G__TVamosDCDataDict_162_0_23(G__value* result7, G__CONST char* funcname, struct G__param* libp, int hash)
+{
+      G__letint(result7, 114, (long) ((TVamosDCData*) G__getstructoffset())->GetVamosDCStripNbr2((Int_t) G__int(libp->para[0])));
+   return(1 || funcname || hash || result7 || libp) ;
+}
+
+static int G__TVamosDCDataDict_162_0_24(G__value* result7, G__CONST char* funcname, struct G__param* libp, int hash)
+{
+      G__letint(result7, 114, (long) ((TVamosDCData*) G__getstructoffset())->GetVamosDCEnergy2((Int_t) G__int(libp->para[0])));
+   return(1 || funcname || hash || result7 || libp) ;
+}
+
+static int G__TVamosDCDataDict_162_0_25(G__value* result7, G__CONST char* funcname, struct G__param* libp, int hash)
+{
+      G__letint(result7, 114, (long) ((TVamosDCData*) G__getstructoffset())->GetVamosDCEfilMult());
+   return(1 || funcname || hash || result7 || libp) ;
+}
+
+static int G__TVamosDCDataDict_162_0_26(G__value* result7, G__CONST char* funcname, struct G__param* libp, int hash)
+{
+      G__letint(result7, 114, (long) ((TVamosDCData*) G__getstructoffset())->GetVamosDCEfilDetNbr((Int_t) G__int(libp->para[0])));
+   return(1 || funcname || hash || result7 || libp) ;
+}
+
+static int G__TVamosDCDataDict_162_0_27(G__value* result7, G__CONST char* funcname, struct G__param* libp, int hash)
+{
+      G__letint(result7, 114, (long) ((TVamosDCData*) G__getstructoffset())->GetVamosDCEfilEnergy((Int_t) G__int(libp->para[0])));
+   return(1 || funcname || hash || result7 || libp) ;
+}
+
+static int G__TVamosDCDataDict_162_0_28(G__value* result7, G__CONST char* funcname, struct G__param* libp, int hash)
+{
+      G__letint(result7, 114, (long) ((TVamosDCData*) G__getstructoffset())->GetVamosDCEfilPileUpMult());
+   return(1 || funcname || hash || result7 || libp) ;
+}
+
+static int G__TVamosDCDataDict_162_0_29(G__value* result7, G__CONST char* funcname, struct G__param* libp, int hash)
+{
+      G__letint(result7, 114, (long) ((TVamosDCData*) G__getstructoffset())->GetVamosDCEfilPileUpDetNbr((Int_t) G__int(libp->para[0])));
+   return(1 || funcname || hash || result7 || libp) ;
+}
+
+static int G__TVamosDCDataDict_162_0_30(G__value* result7, G__CONST char* funcname, struct G__param* libp, int hash)
+{
+      G__letint(result7, 114, (long) ((TVamosDCData*) G__getstructoffset())->GetVamosDCEfilPileUpEnergy((Int_t) G__int(libp->para[0])));
+   return(1 || funcname || hash || result7 || libp) ;
+}
+
+static int G__TVamosDCDataDict_162_0_31(G__value* result7, G__CONST char* funcname, struct G__param* libp, int hash)
+{
+      G__letint(result7, 114, (long) ((TVamosDCData*) G__getstructoffset())->GetVamosDCTfilMult());
+   return(1 || funcname || hash || result7 || libp) ;
+}
+
+static int G__TVamosDCDataDict_162_0_32(G__value* result7, G__CONST char* funcname, struct G__param* libp, int hash)
+{
+      G__letint(result7, 114, (long) ((TVamosDCData*) G__getstructoffset())->GetVamosDCTfilDetNbr((Int_t) G__int(libp->para[0])));
+   return(1 || funcname || hash || result7 || libp) ;
+}
+
+static int G__TVamosDCDataDict_162_0_33(G__value* result7, G__CONST char* funcname, struct G__param* libp, int hash)
+{
+      G__letint(result7, 114, (long) ((TVamosDCData*) G__getstructoffset())->GetVamosDCTfilTime((Int_t) G__int(libp->para[0])));
+   return(1 || funcname || hash || result7 || libp) ;
+}
+
+static int G__TVamosDCDataDict_162_0_34(G__value* result7, G__CONST char* funcname, struct G__param* libp, int hash)
+{
+      G__letint(result7, 85, (long) TVamosDCData::Class());
+   return(1 || funcname || hash || result7 || libp) ;
+}
+
+static int G__TVamosDCDataDict_162_0_35(G__value* result7, G__CONST char* funcname, struct G__param* libp, int hash)
+{
+      G__letint(result7, 67, (long) TVamosDCData::Class_Name());
+   return(1 || funcname || hash || result7 || libp) ;
+}
+
+static int G__TVamosDCDataDict_162_0_36(G__value* result7, G__CONST char* funcname, struct G__param* libp, int hash)
+{
+      G__letint(result7, 115, (long) TVamosDCData::Class_Version());
+   return(1 || funcname || hash || result7 || libp) ;
+}
+
+static int G__TVamosDCDataDict_162_0_37(G__value* result7, G__CONST char* funcname, struct G__param* libp, int hash)
+{
+      TVamosDCData::Dictionary();
+      G__setnull(result7);
+   return(1 || funcname || hash || result7 || libp) ;
+}
+
+static int G__TVamosDCDataDict_162_0_41(G__value* result7, G__CONST char* funcname, struct G__param* libp, int hash)
+{
+      ((TVamosDCData*) G__getstructoffset())->StreamerNVirtual(*(TBuffer*) libp->para[0].ref);
+      G__setnull(result7);
+   return(1 || funcname || hash || result7 || libp) ;
+}
+
+static int G__TVamosDCDataDict_162_0_42(G__value* result7, G__CONST char* funcname, struct G__param* libp, int hash)
+{
+      G__letint(result7, 67, (long) TVamosDCData::DeclFileName());
+   return(1 || funcname || hash || result7 || libp) ;
+}
+
+static int G__TVamosDCDataDict_162_0_43(G__value* result7, G__CONST char* funcname, struct G__param* libp, int hash)
+{
+      G__letint(result7, 105, (long) TVamosDCData::ImplFileLine());
+   return(1 || funcname || hash || result7 || libp) ;
+}
+
+static int G__TVamosDCDataDict_162_0_44(G__value* result7, G__CONST char* funcname, struct G__param* libp, int hash)
+{
+      G__letint(result7, 67, (long) TVamosDCData::ImplFileName());
+   return(1 || funcname || hash || result7 || libp) ;
+}
+
+static int G__TVamosDCDataDict_162_0_45(G__value* result7, G__CONST char* funcname, struct G__param* libp, int hash)
+{
+      G__letint(result7, 105, (long) TVamosDCData::DeclFileLine());
+   return(1 || funcname || hash || result7 || libp) ;
+}
+
+// automatic copy constructor
+static int G__TVamosDCDataDict_162_0_46(G__value* result7, G__CONST char* funcname, struct G__param* libp, int hash)
+
+{
+   TVamosDCData* p;
+   void* tmp = (void*) G__int(libp->para[0]);
+   p = new TVamosDCData(*(TVamosDCData*) tmp);
+   result7->obj.i = (long) p;
+   result7->ref = (long) p;
+   G__set_tagnum(result7,G__get_linked_tagnum(&G__TVamosDCDataDictLN_TVamosDCData));
+   return(1 || funcname || hash || result7 || libp) ;
+}
+
+// automatic destructor
+typedef TVamosDCData G__TTVamosDCData;
+static int G__TVamosDCDataDict_162_0_47(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[] (TVamosDCData*) soff;
+     } else {
+       G__setgvp((long) G__PVOID);
+       for (int i = n - 1; i >= 0; --i) {
+         ((TVamosDCData*) (soff+(sizeof(TVamosDCData)*i)))->~G__TTVamosDCData();
+       }
+       G__setgvp((long)gvp);
+     }
+   } else {
+     if (gvp == (char*)G__PVOID) {
+       delete (TVamosDCData*) soff;
+     } else {
+       G__setgvp((long) G__PVOID);
+       ((TVamosDCData*) (soff))->~G__TTVamosDCData();
+       G__setgvp((long)gvp);
+     }
+   }
+   G__setnull(result7);
+   return(1 || funcname || hash || result7 || libp) ;
+}
+
+// automatic assignment operator
+static int G__TVamosDCDataDict_162_0_48(G__value* result7, G__CONST char* funcname, struct G__param* libp, int hash)
+{
+   TVamosDCData* dest = (TVamosDCData*) G__getstructoffset();
+   *dest = *(TVamosDCData*) libp->para[0].ref;
+   const TVamosDCData& obj = *dest;
+   result7->ref = (long) (&obj);
+   result7->obj.i = (long) (&obj);
+   return(1 || funcname || hash || result7 || libp) ;
+}
+
+
+/* Setting up global function */
+
+/*********************************************************
+* Member function Stub
+*********************************************************/
+
+/* TVamosDCData */
+
+/*********************************************************
+* Global function Stub
+*********************************************************/
+
+/*********************************************************
+* Get size of pointer to member function
+*********************************************************/
+class G__Sizep2memfuncTVamosDCDataDict {
+ public:
+  G__Sizep2memfuncTVamosDCDataDict(): p(&G__Sizep2memfuncTVamosDCDataDict::sizep2memfunc) {}
+    size_t sizep2memfunc() { return(sizeof(p)); }
+  private:
+    size_t (G__Sizep2memfuncTVamosDCDataDict::*p)();
+};
+
+size_t G__get_sizep2memfuncTVamosDCDataDict()
+{
+  G__Sizep2memfuncTVamosDCDataDict 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_inheritanceTVamosDCDataDict() {
+
+   /* Setting up class inheritance */
+   if(0==G__getnumbaseclass(G__get_linked_tagnum(&G__TVamosDCDataDictLN_TVamosDCData))) {
+     TVamosDCData *G__Lderived;
+     G__Lderived=(TVamosDCData*)0x1000;
+     {
+       TObject *G__Lpbase=(TObject*)G__Lderived;
+       G__inheritance_setup(G__get_linked_tagnum(&G__TVamosDCDataDictLN_TVamosDCData),G__get_linked_tagnum(&G__TVamosDCDataDictLN_TObject),(long)G__Lpbase-(long)G__Lderived,1,1);
+     }
+   }
+}
+
+/*********************************************************
+* typedef information setup/
+*********************************************************/
+extern "C" void G__cpp_setup_typetableTVamosDCDataDict() {
+
+   /* 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("Int_t",105,-1,0,-1);
+   G__setnewtype(-1,"Signed integer 4 bytes (int)",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__TVamosDCDataDictLN_vectorlEROOTcLcLTSchemaHelpercOallocatorlEROOTcLcLTSchemaHelpergRsPgR),0,-1);
+   G__setnewtype(-1,NULL,0);
+   G__search_typename2("reverse_iterator<const_iterator>",117,G__get_linked_tagnum(&G__TVamosDCDataDictLN_reverse_iteratorlEvectorlEROOTcLcLTSchemaHelpercOallocatorlEROOTcLcLTSchemaHelpergRsPgRcLcLiteratorgR),0,G__get_linked_tagnum(&G__TVamosDCDataDictLN_vectorlEROOTcLcLTSchemaHelpercOallocatorlEROOTcLcLTSchemaHelpergRsPgR));
+   G__setnewtype(-1,NULL,0);
+   G__search_typename2("reverse_iterator<iterator>",117,G__get_linked_tagnum(&G__TVamosDCDataDictLN_reverse_iteratorlEvectorlEROOTcLcLTSchemaHelpercOallocatorlEROOTcLcLTSchemaHelpergRsPgRcLcLiteratorgR),0,G__get_linked_tagnum(&G__TVamosDCDataDictLN_vectorlEROOTcLcLTSchemaHelpercOallocatorlEROOTcLcLTSchemaHelpergRsPgR));
+   G__setnewtype(-1,NULL,0);
+   G__search_typename2("vector<TVirtualArray*>",117,G__get_linked_tagnum(&G__TVamosDCDataDictLN_vectorlETVirtualArraymUcOallocatorlETVirtualArraymUgRsPgR),0,-1);
+   G__setnewtype(-1,NULL,0);
+   G__search_typename2("reverse_iterator<const_iterator>",117,G__get_linked_tagnum(&G__TVamosDCDataDictLN_reverse_iteratorlEvectorlETVirtualArraymUcOallocatorlETVirtualArraymUgRsPgRcLcLiteratorgR),0,G__get_linked_tagnum(&G__TVamosDCDataDictLN_vectorlETVirtualArraymUcOallocatorlETVirtualArraymUgRsPgR));
+   G__setnewtype(-1,NULL,0);
+   G__search_typename2("reverse_iterator<iterator>",117,G__get_linked_tagnum(&G__TVamosDCDataDictLN_reverse_iteratorlEvectorlETVirtualArraymUcOallocatorlETVirtualArraymUgRsPgRcLcLiteratorgR),0,G__get_linked_tagnum(&G__TVamosDCDataDictLN_vectorlETVirtualArraymUcOallocatorlETVirtualArraymUgRsPgR));
+   G__setnewtype(-1,NULL,0);
+   G__search_typename2("vector<UShort_t>",117,G__get_linked_tagnum(&G__TVamosDCDataDictLN_vectorlEunsignedsPshortcOallocatorlEunsignedsPshortgRsPgR),0,-1);
+   G__setnewtype(-1,NULL,0);
+}
+
+/*********************************************************
+* Data Member information setup/
+*********************************************************/
+
+   /* Setting up class,struct,union tag member variable */
+
+   /* TVamosDCData */
+static void G__setup_memvarTVamosDCData(void) {
+   G__tag_memvar_setup(G__get_linked_tagnum(&G__TVamosDCDataDictLN_TVamosDCData));
+   { TVamosDCData *p; p=(TVamosDCData*)0x1000; if (p) { }
+   G__memvar_setup((void*)0,117,0,0,G__get_linked_tagnum(&G__TVamosDCDataDictLN_vectorlEunsignedsPshortcOallocatorlEunsignedsPshortgRsPgR),G__defined_typename("vector<UShort_t>"),-1,4,"fVamos_DC_Strip1_DetNbr=",0,(char*)NULL);
+   G__memvar_setup((void*)0,117,0,0,G__get_linked_tagnum(&G__TVamosDCDataDictLN_vectorlEunsignedsPshortcOallocatorlEunsignedsPshortgRsPgR),G__defined_typename("vector<UShort_t>"),-1,4,"fVamos_DC_Strip1_StripNbr=",0,(char*)NULL);
+   G__memvar_setup((void*)0,117,0,0,G__get_linked_tagnum(&G__TVamosDCDataDictLN_vectorlEunsignedsPshortcOallocatorlEunsignedsPshortgRsPgR),G__defined_typename("vector<UShort_t>"),-1,4,"fVamos_DC_Strip1_Energy=",0,(char*)NULL);
+   G__memvar_setup((void*)0,117,0,0,G__get_linked_tagnum(&G__TVamosDCDataDictLN_vectorlEunsignedsPshortcOallocatorlEunsignedsPshortgRsPgR),G__defined_typename("vector<UShort_t>"),-1,4,"fVamos_DC_Strip2_DetNbr=",0,(char*)NULL);
+   G__memvar_setup((void*)0,117,0,0,G__get_linked_tagnum(&G__TVamosDCDataDictLN_vectorlEunsignedsPshortcOallocatorlEunsignedsPshortgRsPgR),G__defined_typename("vector<UShort_t>"),-1,4,"fVamos_DC_Strip2_StripNbr=",0,(char*)NULL);
+   G__memvar_setup((void*)0,117,0,0,G__get_linked_tagnum(&G__TVamosDCDataDictLN_vectorlEunsignedsPshortcOallocatorlEunsignedsPshortgRsPgR),G__defined_typename("vector<UShort_t>"),-1,4,"fVamos_DC_Strip2_Energy=",0,(char*)NULL);
+   G__memvar_setup((void*)0,117,0,0,G__get_linked_tagnum(&G__TVamosDCDataDictLN_vectorlEunsignedsPshortcOallocatorlEunsignedsPshortgRsPgR),G__defined_typename("vector<UShort_t>"),-1,4,"fVamos_DC_Efil_DetNbr=",0,(char*)NULL);
+   G__memvar_setup((void*)0,117,0,0,G__get_linked_tagnum(&G__TVamosDCDataDictLN_vectorlEunsignedsPshortcOallocatorlEunsignedsPshortgRsPgR),G__defined_typename("vector<UShort_t>"),-1,4,"fVamos_DC_Efil_Energy=",0,(char*)NULL);
+   G__memvar_setup((void*)0,117,0,0,G__get_linked_tagnum(&G__TVamosDCDataDictLN_vectorlEunsignedsPshortcOallocatorlEunsignedsPshortgRsPgR),G__defined_typename("vector<UShort_t>"),-1,4,"fVamos_DC_Efil_PileUp_DetNbr=",0,(char*)NULL);
+   G__memvar_setup((void*)0,117,0,0,G__get_linked_tagnum(&G__TVamosDCDataDictLN_vectorlEunsignedsPshortcOallocatorlEunsignedsPshortgRsPgR),G__defined_typename("vector<UShort_t>"),-1,4,"fVamos_DC_Efil_PileUp_Energy=",0,(char*)NULL);
+   G__memvar_setup((void*)0,117,0,0,G__get_linked_tagnum(&G__TVamosDCDataDictLN_vectorlEunsignedsPshortcOallocatorlEunsignedsPshortgRsPgR),G__defined_typename("vector<UShort_t>"),-1,4,"fVamos_DC_Tfil_DetNbr=",0,(char*)NULL);
+   G__memvar_setup((void*)0,117,0,0,G__get_linked_tagnum(&G__TVamosDCDataDictLN_vectorlEunsignedsPshortcOallocatorlEunsignedsPshortgRsPgR),G__defined_typename("vector<UShort_t>"),-1,4,"fVamos_DC_Tfil_Time=",0,(char*)NULL);
+   G__memvar_setup((void*)0,85,0,0,G__get_linked_tagnum(&G__TVamosDCDataDictLN_TClass),-1,-2,4,"fgIsA=",0,(char*)NULL);
+   }
+   G__tag_memvar_reset();
+}
+
+extern "C" void G__cpp_setup_memvarTVamosDCDataDict() {
+}
+/***********************************************************
+************************************************************
+************************************************************
+************************************************************
+************************************************************
+************************************************************
+************************************************************
+***********************************************************/
+
+/*********************************************************
+* Member function information setup for each class
+*********************************************************/
+static void G__setup_memfuncTVamosDCData(void) {
+   /* TVamosDCData */
+   G__tag_memfunc_setup(G__get_linked_tagnum(&G__TVamosDCDataDictLN_TVamosDCData));
+   G__memfunc_setup("TVamosDCData",1115,G__TVamosDCDataDict_162_0_1, 105, G__get_linked_tagnum(&G__TVamosDCDataDictLN_TVamosDCData), -1, 0, 0, 1, 1, 0, "", (char*)NULL, (void*) NULL, 0);
+   G__memfunc_setup("Clear",487,G__TVamosDCDataDict_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("SetVamosDCDetNbr1",1577,G__TVamosDCDataDict_162_0_5, 121, -1, -1, 0, 1, 1, 1, 0, "r - 'UShort_t' 0 - DetNbr1", (char*)NULL, (void*) NULL, 0);
+   G__memfunc_setup("SetVamosDCStripNbr1",1822,G__TVamosDCDataDict_162_0_6, 121, -1, -1, 0, 1, 1, 1, 0, "r - 'UShort_t' 0 - StripNbr1", (char*)NULL, (void*) NULL, 0);
+   G__memfunc_setup("SetVamosDCEnergy1",1620,G__TVamosDCDataDict_162_0_7, 121, -1, -1, 0, 1, 1, 1, 0, "r - 'UShort_t' 0 - Energy1", (char*)NULL, (void*) NULL, 0);
+   G__memfunc_setup("SetVamosDCDetNbr2",1578,G__TVamosDCDataDict_162_0_8, 121, -1, -1, 0, 1, 1, 1, 0, "r - 'UShort_t' 0 - DetNbr2", (char*)NULL, (void*) NULL, 0);
+   G__memfunc_setup("SetVamosDCStripNbr2",1823,G__TVamosDCDataDict_162_0_9, 121, -1, -1, 0, 1, 1, 1, 0, "r - 'UShort_t' 0 - StripNbr2", (char*)NULL, (void*) NULL, 0);
+   G__memfunc_setup("SetVamosDCEnergy2",1621,G__TVamosDCDataDict_162_0_10, 121, -1, -1, 0, 1, 1, 1, 0, "r - 'UShort_t' 0 - Energy2", (char*)NULL, (void*) NULL, 0);
+   G__memfunc_setup("SetVamosDCEfilDetNbr",1912,G__TVamosDCDataDict_162_0_11, 121, -1, -1, 0, 1, 1, 1, 0, "r - 'UShort_t' 0 - DetNbr", (char*)NULL, (void*) NULL, 0);
+   G__memfunc_setup("SetVamosDCEfilEnergy",1955,G__TVamosDCDataDict_162_0_12, 121, -1, -1, 0, 1, 1, 1, 0, "r - 'UShort_t' 0 - Energy", (char*)NULL, (void*) NULL, 0);
+   G__memfunc_setup("SetVamosDCEfilPileUpDetNbr",2503,G__TVamosDCDataDict_162_0_13, 121, -1, -1, 0, 1, 1, 1, 0, "r - 'UShort_t' 0 - DetNbr", (char*)NULL, (void*) NULL, 0);
+   G__memfunc_setup("SetVamosDCEfilPileUpEnergy",2546,G__TVamosDCDataDict_162_0_14, 121, -1, -1, 0, 1, 1, 1, 0, "r - 'UShort_t' 0 - Energy", (char*)NULL, (void*) NULL, 0);
+   G__memfunc_setup("SetVamosDCTfilDetNbr",1927,G__TVamosDCDataDict_162_0_15, 121, -1, -1, 0, 1, 1, 1, 0, "r - 'UShort_t' 0 - DetNbr", (char*)NULL, (void*) NULL, 0);
+   G__memfunc_setup("SetVamosDCTfilTime",1751,G__TVamosDCDataDict_162_0_16, 121, -1, -1, 0, 1, 1, 1, 0, "r - 'UShort_t' 0 - Time", (char*)NULL, (void*) NULL, 0);
+   G__memfunc_setup("GetVamosDCMultStrip1",1938,G__TVamosDCDataDict_162_0_17, 114, -1, G__defined_typename("UShort_t"), 0, 0, 1, 1, 0, "", (char*)NULL, (void*) NULL, 0);
+   G__memfunc_setup("GetVamosDCDetNbr1",1565,G__TVamosDCDataDict_162_0_18, 114, -1, G__defined_typename("UShort_t"), 0, 1, 1, 1, 0, "i - 'Int_t' 0 - i", (char*)NULL, (void*) NULL, 0);
+   G__memfunc_setup("GetVamosDCStripNbr1",1810,G__TVamosDCDataDict_162_0_19, 114, -1, G__defined_typename("UShort_t"), 0, 1, 1, 1, 0, "i - 'Int_t' 0 - i", (char*)NULL, (void*) NULL, 0);
+   G__memfunc_setup("GetVamosDCEnergy1",1608,G__TVamosDCDataDict_162_0_20, 114, -1, G__defined_typename("UShort_t"), 0, 1, 1, 1, 0, "i - 'Int_t' 0 - i", (char*)NULL, (void*) NULL, 0);
+   G__memfunc_setup("GetVamosDCMultStrip2",1939,G__TVamosDCDataDict_162_0_21, 114, -1, G__defined_typename("UShort_t"), 0, 0, 1, 1, 0, "", (char*)NULL, (void*) NULL, 0);
+   G__memfunc_setup("GetVamosDCDetNbr2",1566,G__TVamosDCDataDict_162_0_22, 114, -1, G__defined_typename("UShort_t"), 0, 1, 1, 1, 0, "i - 'Int_t' 0 - i", (char*)NULL, (void*) NULL, 0);
+   G__memfunc_setup("GetVamosDCStripNbr2",1811,G__TVamosDCDataDict_162_0_23, 114, -1, G__defined_typename("UShort_t"), 0, 1, 1, 1, 0, "i - 'Int_t' 0 - i", (char*)NULL, (void*) NULL, 0);
+   G__memfunc_setup("GetVamosDCEnergy2",1609,G__TVamosDCDataDict_162_0_24, 114, -1, G__defined_typename("UShort_t"), 0, 1, 1, 1, 0, "i - 'Int_t' 0 - i", (char*)NULL, (void*) NULL, 0);
+   G__memfunc_setup("GetVamosDCEfilMult",1743,G__TVamosDCDataDict_162_0_25, 114, -1, G__defined_typename("UShort_t"), 0, 0, 1, 1, 0, "", (char*)NULL, (void*) NULL, 0);
+   G__memfunc_setup("GetVamosDCEfilDetNbr",1900,G__TVamosDCDataDict_162_0_26, 114, -1, G__defined_typename("UShort_t"), 0, 1, 1, 1, 0, "i - 'Int_t' 0 - i", (char*)NULL, (void*) NULL, 0);
+   G__memfunc_setup("GetVamosDCEfilEnergy",1943,G__TVamosDCDataDict_162_0_27, 114, -1, G__defined_typename("UShort_t"), 0, 1, 1, 1, 0, "i - 'Int_t' 0 - i", (char*)NULL, (void*) NULL, 0);
+   G__memfunc_setup("GetVamosDCEfilPileUpMult",2334,G__TVamosDCDataDict_162_0_28, 114, -1, G__defined_typename("UShort_t"), 0, 0, 1, 1, 0, "", (char*)NULL, (void*) NULL, 0);
+   G__memfunc_setup("GetVamosDCEfilPileUpDetNbr",2491,G__TVamosDCDataDict_162_0_29, 114, -1, G__defined_typename("UShort_t"), 0, 1, 1, 1, 0, "i - 'Int_t' 0 - i", (char*)NULL, (void*) NULL, 0);
+   G__memfunc_setup("GetVamosDCEfilPileUpEnergy",2534,G__TVamosDCDataDict_162_0_30, 114, -1, G__defined_typename("UShort_t"), 0, 1, 1, 1, 0, "i - 'Int_t' 0 - i", (char*)NULL, (void*) NULL, 0);
+   G__memfunc_setup("GetVamosDCTfilMult",1758,G__TVamosDCDataDict_162_0_31, 114, -1, G__defined_typename("UShort_t"), 0, 0, 1, 1, 0, "", (char*)NULL, (void*) NULL, 0);
+   G__memfunc_setup("GetVamosDCTfilDetNbr",1915,G__TVamosDCDataDict_162_0_32, 114, -1, G__defined_typename("UShort_t"), 0, 1, 1, 1, 0, "i - 'Int_t' 0 - i", (char*)NULL, (void*) NULL, 0);
+   G__memfunc_setup("GetVamosDCTfilTime",1739,G__TVamosDCDataDict_162_0_33, 114, -1, G__defined_typename("UShort_t"), 0, 1, 1, 1, 0, "i - 'Int_t' 0 - i", (char*)NULL, (void*) NULL, 0);
+   G__memfunc_setup("Class",502,G__TVamosDCDataDict_162_0_34, 85, G__get_linked_tagnum(&G__TVamosDCDataDictLN_TClass), -1, 0, 0, 3, 1, 0, "", (char*)NULL, (void*) G__func2void( (TClass* (*)())(&TVamosDCData::Class) ), 0);
+   G__memfunc_setup("Class_Name",982,G__TVamosDCDataDict_162_0_35, 67, -1, -1, 0, 0, 3, 1, 1, "", (char*)NULL, (void*) G__func2void( (const char* (*)())(&TVamosDCData::Class_Name) ), 0);
+   G__memfunc_setup("Class_Version",1339,G__TVamosDCDataDict_162_0_36, 115, -1, G__defined_typename("Version_t"), 0, 0, 3, 1, 0, "", (char*)NULL, (void*) G__func2void( (Version_t (*)())(&TVamosDCData::Class_Version) ), 0);
+   G__memfunc_setup("Dictionary",1046,G__TVamosDCDataDict_162_0_37, 121, -1, -1, 0, 0, 3, 1, 0, "", (char*)NULL, (void*) G__func2void( (void (*)())(&TVamosDCData::Dictionary) ), 0);
+   G__memfunc_setup("IsA",253,(G__InterfaceMethod) NULL,85, G__get_linked_tagnum(&G__TVamosDCDataDictLN_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__TVamosDCDataDict_162_0_41, 121, -1, -1, 0, 1, 1, 1, 0, "u 'TBuffer' - 1 - b", (char*)NULL, (void*) NULL, 0);
+   G__memfunc_setup("DeclFileName",1145,G__TVamosDCDataDict_162_0_42, 67, -1, -1, 0, 0, 3, 1, 1, "", (char*)NULL, (void*) G__func2void( (const char* (*)())(&TVamosDCData::DeclFileName) ), 0);
+   G__memfunc_setup("ImplFileLine",1178,G__TVamosDCDataDict_162_0_43, 105, -1, -1, 0, 0, 3, 1, 0, "", (char*)NULL, (void*) G__func2void( (int (*)())(&TVamosDCData::ImplFileLine) ), 0);
+   G__memfunc_setup("ImplFileName",1171,G__TVamosDCDataDict_162_0_44, 67, -1, -1, 0, 0, 3, 1, 1, "", (char*)NULL, (void*) G__func2void( (const char* (*)())(&TVamosDCData::ImplFileName) ), 0);
+   G__memfunc_setup("DeclFileLine",1152,G__TVamosDCDataDict_162_0_45, 105, -1, -1, 0, 0, 3, 1, 0, "", (char*)NULL, (void*) G__func2void( (int (*)())(&TVamosDCData::DeclFileLine) ), 0);
+   // automatic copy constructor
+   G__memfunc_setup("TVamosDCData", 1115, G__TVamosDCDataDict_162_0_46, (int) ('i'), G__get_linked_tagnum(&G__TVamosDCDataDictLN_TVamosDCData), -1, 0, 1, 1, 1, 0, "u 'TVamosDCData' - 11 - -", (char*) NULL, (void*) NULL, 0);
+   // automatic destructor
+   G__memfunc_setup("~TVamosDCData", 1241, G__TVamosDCDataDict_162_0_47, (int) ('y'), -1, -1, 0, 0, 1, 1, 0, "", (char*) NULL, (void*) NULL, 1);
+   // automatic assignment operator
+   G__memfunc_setup("operator=", 937, G__TVamosDCDataDict_162_0_48, (int) ('u'), G__get_linked_tagnum(&G__TVamosDCDataDictLN_TVamosDCData), -1, 1, 1, 1, 1, 0, "u 'TVamosDCData' - 11 - -", (char*) NULL, (void*) NULL, 0);
+   G__tag_memfunc_reset();
+}
+
+
+/*********************************************************
+* Member function information setup
+*********************************************************/
+extern "C" void G__cpp_setup_memfuncTVamosDCDataDict() {
+}
+
+/*********************************************************
+* 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() {
+
+   G__resetglobalenv();
+}
+extern "C" void G__cpp_setup_globalTVamosDCDataDict() {
+  G__cpp_setup_global0();
+  G__cpp_setup_global1();
+}
+
+/*********************************************************
+* 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_funcTVamosDCDataDict() {
+  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__TVamosDCDataDictLN_TClass = { "TClass" , 99 , -1 };
+G__linked_taginfo G__TVamosDCDataDictLN_TBuffer = { "TBuffer" , 99 , -1 };
+G__linked_taginfo G__TVamosDCDataDictLN_TMemberInspector = { "TMemberInspector" , 99 , -1 };
+G__linked_taginfo G__TVamosDCDataDictLN_TObject = { "TObject" , 99 , -1 };
+G__linked_taginfo G__TVamosDCDataDictLN_vectorlEunsignedsPshortcOallocatorlEunsignedsPshortgRsPgR = { "vector<unsigned short,allocator<unsigned short> >" , 99 , -1 };
+G__linked_taginfo G__TVamosDCDataDictLN_vectorlEROOTcLcLTSchemaHelpercOallocatorlEROOTcLcLTSchemaHelpergRsPgR = { "vector<ROOT::TSchemaHelper,allocator<ROOT::TSchemaHelper> >" , 99 , -1 };
+G__linked_taginfo G__TVamosDCDataDictLN_reverse_iteratorlEvectorlEROOTcLcLTSchemaHelpercOallocatorlEROOTcLcLTSchemaHelpergRsPgRcLcLiteratorgR = { "reverse_iterator<vector<ROOT::TSchemaHelper,allocator<ROOT::TSchemaHelper> >::iterator>" , 99 , -1 };
+G__linked_taginfo G__TVamosDCDataDictLN_vectorlETVirtualArraymUcOallocatorlETVirtualArraymUgRsPgR = { "vector<TVirtualArray*,allocator<TVirtualArray*> >" , 99 , -1 };
+G__linked_taginfo G__TVamosDCDataDictLN_reverse_iteratorlEvectorlETVirtualArraymUcOallocatorlETVirtualArraymUgRsPgRcLcLiteratorgR = { "reverse_iterator<vector<TVirtualArray*,allocator<TVirtualArray*> >::iterator>" , 99 , -1 };
+G__linked_taginfo G__TVamosDCDataDictLN_TVamosDCData = { "TVamosDCData" , 99 , -1 };
+
+/* Reset class/struct taginfo */
+extern "C" void G__cpp_reset_tagtableTVamosDCDataDict() {
+  G__TVamosDCDataDictLN_TClass.tagnum = -1 ;
+  G__TVamosDCDataDictLN_TBuffer.tagnum = -1 ;
+  G__TVamosDCDataDictLN_TMemberInspector.tagnum = -1 ;
+  G__TVamosDCDataDictLN_TObject.tagnum = -1 ;
+  G__TVamosDCDataDictLN_vectorlEunsignedsPshortcOallocatorlEunsignedsPshortgRsPgR.tagnum = -1 ;
+  G__TVamosDCDataDictLN_vectorlEROOTcLcLTSchemaHelpercOallocatorlEROOTcLcLTSchemaHelpergRsPgR.tagnum = -1 ;
+  G__TVamosDCDataDictLN_reverse_iteratorlEvectorlEROOTcLcLTSchemaHelpercOallocatorlEROOTcLcLTSchemaHelpergRsPgRcLcLiteratorgR.tagnum = -1 ;
+  G__TVamosDCDataDictLN_vectorlETVirtualArraymUcOallocatorlETVirtualArraymUgRsPgR.tagnum = -1 ;
+  G__TVamosDCDataDictLN_reverse_iteratorlEvectorlETVirtualArraymUcOallocatorlETVirtualArraymUgRsPgRcLcLiteratorgR.tagnum = -1 ;
+  G__TVamosDCDataDictLN_TVamosDCData.tagnum = -1 ;
+}
+
+
+extern "C" void G__cpp_setup_tagtableTVamosDCDataDict() {
+
+   /* Setting up class,struct,union tag entry */
+   G__get_linked_tagnum_fwd(&G__TVamosDCDataDictLN_TClass);
+   G__get_linked_tagnum_fwd(&G__TVamosDCDataDictLN_TBuffer);
+   G__get_linked_tagnum_fwd(&G__TVamosDCDataDictLN_TMemberInspector);
+   G__get_linked_tagnum_fwd(&G__TVamosDCDataDictLN_TObject);
+   G__get_linked_tagnum_fwd(&G__TVamosDCDataDictLN_vectorlEunsignedsPshortcOallocatorlEunsignedsPshortgRsPgR);
+   G__get_linked_tagnum_fwd(&G__TVamosDCDataDictLN_vectorlEROOTcLcLTSchemaHelpercOallocatorlEROOTcLcLTSchemaHelpergRsPgR);
+   G__get_linked_tagnum_fwd(&G__TVamosDCDataDictLN_reverse_iteratorlEvectorlEROOTcLcLTSchemaHelpercOallocatorlEROOTcLcLTSchemaHelpergRsPgRcLcLiteratorgR);
+   G__get_linked_tagnum_fwd(&G__TVamosDCDataDictLN_vectorlETVirtualArraymUcOallocatorlETVirtualArraymUgRsPgR);
+   G__get_linked_tagnum_fwd(&G__TVamosDCDataDictLN_reverse_iteratorlEvectorlETVirtualArraymUcOallocatorlETVirtualArraymUgRsPgRcLcLiteratorgR);
+   G__tagtable_setup(G__get_linked_tagnum_fwd(&G__TVamosDCDataDictLN_TVamosDCData),sizeof(TVamosDCData),-1,29952,"VamosDCData structure",G__setup_memvarTVamosDCData,G__setup_memfuncTVamosDCData);
+}
+extern "C" void G__cpp_setupTVamosDCDataDict(void) {
+  G__check_setup_version(30051515,"G__cpp_setupTVamosDCDataDict()");
+  G__set_cpp_environmentTVamosDCDataDict();
+  G__cpp_setup_tagtableTVamosDCDataDict();
+
+  G__cpp_setup_inheritanceTVamosDCDataDict();
+
+  G__cpp_setup_typetableTVamosDCDataDict();
+
+  G__cpp_setup_memvarTVamosDCDataDict();
+
+  G__cpp_setup_memfuncTVamosDCDataDict();
+  G__cpp_setup_globalTVamosDCDataDict();
+  G__cpp_setup_funcTVamosDCDataDict();
+
+   if(0==G__getsizep2memfunc()) G__get_sizep2memfuncTVamosDCDataDict();
+  return;
+}
+class G__cpp_setup_initTVamosDCDataDict {
+  public:
+    G__cpp_setup_initTVamosDCDataDict() { G__add_setup_func("TVamosDCDataDict",(G__incsetup)(&G__cpp_setupTVamosDCDataDict)); G__call_setup_funcs(); }
+   ~G__cpp_setup_initTVamosDCDataDict() { G__remove_setup_func("TVamosDCDataDict"); }
+};
+G__cpp_setup_initTVamosDCDataDict G__cpp_setup_initializerTVamosDCDataDict;
+
diff --git a/NPLib/Vamos/TVamosDCDataDict.h b/NPLib/Vamos/TVamosDCDataDict.h
new file mode 100644
index 0000000000000000000000000000000000000000..8f03d17c2063bf22e6f41779b21c08d756e263a9
--- /dev/null
+++ b/NPLib/Vamos/TVamosDCDataDict.h
@@ -0,0 +1,53 @@
+/********************************************************************
+* TVamosDCDataDict.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 TVamosDCDataDict.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_tagtableTVamosDCDataDict();
+extern void G__cpp_setup_inheritanceTVamosDCDataDict();
+extern void G__cpp_setup_typetableTVamosDCDataDict();
+extern void G__cpp_setup_memvarTVamosDCDataDict();
+extern void G__cpp_setup_globalTVamosDCDataDict();
+extern void G__cpp_setup_memfuncTVamosDCDataDict();
+extern void G__cpp_setup_funcTVamosDCDataDict();
+extern void G__set_cpp_environmentTVamosDCDataDict();
+}
+
+
+#include "TObject.h"
+#include "TMemberInspector.h"
+#include "TVamosDCData.h"
+#include <algorithm>
+namespace std { }
+using namespace std;
+
+#ifndef G__MEMFUNCBODY
+#endif
+
+extern G__linked_taginfo G__TVamosDCDataDictLN_TClass;
+extern G__linked_taginfo G__TVamosDCDataDictLN_TBuffer;
+extern G__linked_taginfo G__TVamosDCDataDictLN_TMemberInspector;
+extern G__linked_taginfo G__TVamosDCDataDictLN_TObject;
+extern G__linked_taginfo G__TVamosDCDataDictLN_vectorlEunsignedsPshortcOallocatorlEunsignedsPshortgRsPgR;
+extern G__linked_taginfo G__TVamosDCDataDictLN_vectorlEROOTcLcLTSchemaHelpercOallocatorlEROOTcLcLTSchemaHelpergRsPgR;
+extern G__linked_taginfo G__TVamosDCDataDictLN_reverse_iteratorlEvectorlEROOTcLcLTSchemaHelpercOallocatorlEROOTcLcLTSchemaHelpergRsPgRcLcLiteratorgR;
+extern G__linked_taginfo G__TVamosDCDataDictLN_vectorlETVirtualArraymUcOallocatorlETVirtualArraymUgRsPgR;
+extern G__linked_taginfo G__TVamosDCDataDictLN_reverse_iteratorlEvectorlETVirtualArraymUcOallocatorlETVirtualArraymUgRsPgRcLcLiteratorgR;
+extern G__linked_taginfo G__TVamosDCDataDictLN_TVamosDCData;
+
+/* STUB derived class for protected member access */
diff --git a/NPLib/Vamos/TVamosFingerDataDict.cxx b/NPLib/Vamos/TVamosFingerDataDict.cxx
new file mode 100644
index 0000000000000000000000000000000000000000..7d9790c6fff6774f7d6481fa3bd7f61055980797
--- /dev/null
+++ b/NPLib/Vamos/TVamosFingerDataDict.cxx
@@ -0,0 +1,648 @@
+//
+// File generated by rootcint at Tue Jul 17 16:41:37 2012
+
+// Do NOT change. Changes will be lost next time file is generated
+//
+
+#define R__DICTIONARY_FILENAME TVamosFingerDataDict
+#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 "TVamosFingerDataDict.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 TVamosFingerData_ShowMembers(void *obj, TMemberInspector &R__insp);
+   static void *new_TVamosFingerData(void *p = 0);
+   static void *newArray_TVamosFingerData(Long_t size, void *p);
+   static void delete_TVamosFingerData(void *p);
+   static void deleteArray_TVamosFingerData(void *p);
+   static void destruct_TVamosFingerData(void *p);
+   static void streamer_TVamosFingerData(TBuffer &buf, void *obj);
+
+   // Function generating the singleton type initializer
+   static TGenericClassInfo *GenerateInitInstanceLocal(const ::TVamosFingerData*)
+   {
+      ::TVamosFingerData *ptr = 0;
+      static ::TVirtualIsAProxy* isa_proxy = new ::TInstrumentedIsAProxy< ::TVamosFingerData >(0);
+      static ::ROOT::TGenericClassInfo 
+         instance("TVamosFingerData", ::TVamosFingerData::Class_Version(), "./TVamosFingerData.h", 31,
+                  typeid(::TVamosFingerData), DefineBehavior(ptr, ptr),
+                  &::TVamosFingerData::Dictionary, isa_proxy, 0,
+                  sizeof(::TVamosFingerData) );
+      instance.SetNew(&new_TVamosFingerData);
+      instance.SetNewArray(&newArray_TVamosFingerData);
+      instance.SetDelete(&delete_TVamosFingerData);
+      instance.SetDeleteArray(&deleteArray_TVamosFingerData);
+      instance.SetDestructor(&destruct_TVamosFingerData);
+      instance.SetStreamerFunc(&streamer_TVamosFingerData);
+      return &instance;
+   }
+   TGenericClassInfo *GenerateInitInstance(const ::TVamosFingerData*)
+   {
+      return GenerateInitInstanceLocal((::TVamosFingerData*)0);
+   }
+   // Static variable to force the class initialization
+   static ::ROOT::TGenericClassInfo *_R__UNIQUE_(Init) = GenerateInitInstanceLocal((const ::TVamosFingerData*)0x0); R__UseDummy(_R__UNIQUE_(Init));
+} // end of namespace ROOT
+
+//______________________________________________________________________________
+TClass *TVamosFingerData::fgIsA = 0;  // static to hold class pointer
+
+//______________________________________________________________________________
+const char *TVamosFingerData::Class_Name()
+{
+   return "TVamosFingerData";
+}
+
+//______________________________________________________________________________
+const char *TVamosFingerData::ImplFileName()
+{
+   return ::ROOT::GenerateInitInstanceLocal((const ::TVamosFingerData*)0x0)->GetImplFileName();
+}
+
+//______________________________________________________________________________
+int TVamosFingerData::ImplFileLine()
+{
+   return ::ROOT::GenerateInitInstanceLocal((const ::TVamosFingerData*)0x0)->GetImplFileLine();
+}
+
+//______________________________________________________________________________
+void TVamosFingerData::Dictionary()
+{
+   fgIsA = ::ROOT::GenerateInitInstanceLocal((const ::TVamosFingerData*)0x0)->GetClass();
+}
+
+//______________________________________________________________________________
+TClass *TVamosFingerData::Class()
+{
+   if (!fgIsA) fgIsA = ::ROOT::GenerateInitInstanceLocal((const ::TVamosFingerData*)0x0)->GetClass();
+   return fgIsA;
+}
+
+//______________________________________________________________________________
+void TVamosFingerData::Streamer(TBuffer &R__b)
+{
+   // Stream an object of class TVamosFingerData.
+
+   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);
+      R__b >> fVamos_Finger_Energy;
+      R__b.CheckByteCount(R__s, R__c, TVamosFingerData::IsA());
+   } else {
+      R__c = R__b.WriteVersion(TVamosFingerData::IsA(), kTRUE);
+      TObject::Streamer(R__b);
+      R__b << fVamos_Finger_Energy;
+      R__b.SetByteCount(R__c, kTRUE);
+   }
+}
+
+//______________________________________________________________________________
+void TVamosFingerData::ShowMembers(TMemberInspector &R__insp)
+{
+      // Inspect the data members of an object of class TVamosFingerData.
+      TClass *R__cl = ::TVamosFingerData::IsA();
+      if (R__cl || R__insp.IsA()) { }
+      R__insp.Inspect(R__cl, R__insp.GetParent(), "fVamos_Finger_Energy", &fVamos_Finger_Energy);
+      TObject::ShowMembers(R__insp);
+}
+
+namespace ROOT {
+   // Wrappers around operator new
+   static void *new_TVamosFingerData(void *p) {
+      return  p ? new(p) ::TVamosFingerData : new ::TVamosFingerData;
+   }
+   static void *newArray_TVamosFingerData(Long_t nElements, void *p) {
+      return p ? new(p) ::TVamosFingerData[nElements] : new ::TVamosFingerData[nElements];
+   }
+   // Wrapper around operator delete
+   static void delete_TVamosFingerData(void *p) {
+      delete ((::TVamosFingerData*)p);
+   }
+   static void deleteArray_TVamosFingerData(void *p) {
+      delete [] ((::TVamosFingerData*)p);
+   }
+   static void destruct_TVamosFingerData(void *p) {
+      typedef ::TVamosFingerData current_t;
+      ((current_t*)p)->~current_t();
+   }
+   // Wrapper around a custom streamer member function.
+   static void streamer_TVamosFingerData(TBuffer &buf, void *obj) {
+      ((::TVamosFingerData*)obj)->::TVamosFingerData::Streamer(buf);
+   }
+} // end of namespace ROOT for class ::TVamosFingerData
+
+/********************************************************
+* TVamosFingerDataDict.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_tagtableTVamosFingerDataDict();
+
+extern "C" void G__set_cpp_environmentTVamosFingerDataDict() {
+  G__add_compiledheader("TObject.h");
+  G__add_compiledheader("TMemberInspector.h");
+  G__add_compiledheader("TVamosFingerData.h");
+  G__cpp_reset_tagtableTVamosFingerDataDict();
+}
+#include <new>
+extern "C" int G__cpp_dllrevTVamosFingerDataDict() { return(30051515); }
+
+/*********************************************************
+* Member function Interface Method
+*********************************************************/
+
+/* TVamosFingerData */
+static int G__TVamosFingerDataDict_162_0_1(G__value* result7, G__CONST char* funcname, struct G__param* libp, int hash)
+{
+   TVamosFingerData* p = NULL;
+   char* gvp = (char*) G__getgvp();
+   int n = G__getaryconstruct();
+   if (n) {
+     if ((gvp == (char*)G__PVOID) || (gvp == 0)) {
+       p = new TVamosFingerData[n];
+     } else {
+       p = new((void*) gvp) TVamosFingerData[n];
+     }
+   } else {
+     if ((gvp == (char*)G__PVOID) || (gvp == 0)) {
+       p = new TVamosFingerData;
+     } else {
+       p = new((void*) gvp) TVamosFingerData;
+     }
+   }
+   result7->obj.i = (long) p;
+   result7->ref = (long) p;
+   G__set_tagnum(result7,G__get_linked_tagnum(&G__TVamosFingerDataDictLN_TVamosFingerData));
+   return(1 || funcname || hash || result7 || libp) ;
+}
+
+static int G__TVamosFingerDataDict_162_0_2(G__value* result7, G__CONST char* funcname, struct G__param* libp, int hash)
+{
+      ((TVamosFingerData*) G__getstructoffset())->Clear();
+      G__setnull(result7);
+   return(1 || funcname || hash || result7 || libp) ;
+}
+
+static int G__TVamosFingerDataDict_162_0_5(G__value* result7, G__CONST char* funcname, struct G__param* libp, int hash)
+{
+      G__letint(result7, 114, (long) ((TVamosFingerData*) G__getstructoffset())->GetFingerEnergy());
+   return(1 || funcname || hash || result7 || libp) ;
+}
+
+static int G__TVamosFingerDataDict_162_0_6(G__value* result7, G__CONST char* funcname, struct G__param* libp, int hash)
+{
+      ((TVamosFingerData*) G__getstructoffset())->SetFingerEnergy((UShort_t) G__int(libp->para[0]));
+      G__setnull(result7);
+   return(1 || funcname || hash || result7 || libp) ;
+}
+
+static int G__TVamosFingerDataDict_162_0_7(G__value* result7, G__CONST char* funcname, struct G__param* libp, int hash)
+{
+      G__letint(result7, 85, (long) TVamosFingerData::Class());
+   return(1 || funcname || hash || result7 || libp) ;
+}
+
+static int G__TVamosFingerDataDict_162_0_8(G__value* result7, G__CONST char* funcname, struct G__param* libp, int hash)
+{
+      G__letint(result7, 67, (long) TVamosFingerData::Class_Name());
+   return(1 || funcname || hash || result7 || libp) ;
+}
+
+static int G__TVamosFingerDataDict_162_0_9(G__value* result7, G__CONST char* funcname, struct G__param* libp, int hash)
+{
+      G__letint(result7, 115, (long) TVamosFingerData::Class_Version());
+   return(1 || funcname || hash || result7 || libp) ;
+}
+
+static int G__TVamosFingerDataDict_162_0_10(G__value* result7, G__CONST char* funcname, struct G__param* libp, int hash)
+{
+      TVamosFingerData::Dictionary();
+      G__setnull(result7);
+   return(1 || funcname || hash || result7 || libp) ;
+}
+
+static int G__TVamosFingerDataDict_162_0_14(G__value* result7, G__CONST char* funcname, struct G__param* libp, int hash)
+{
+      ((TVamosFingerData*) G__getstructoffset())->StreamerNVirtual(*(TBuffer*) libp->para[0].ref);
+      G__setnull(result7);
+   return(1 || funcname || hash || result7 || libp) ;
+}
+
+static int G__TVamosFingerDataDict_162_0_15(G__value* result7, G__CONST char* funcname, struct G__param* libp, int hash)
+{
+      G__letint(result7, 67, (long) TVamosFingerData::DeclFileName());
+   return(1 || funcname || hash || result7 || libp) ;
+}
+
+static int G__TVamosFingerDataDict_162_0_16(G__value* result7, G__CONST char* funcname, struct G__param* libp, int hash)
+{
+      G__letint(result7, 105, (long) TVamosFingerData::ImplFileLine());
+   return(1 || funcname || hash || result7 || libp) ;
+}
+
+static int G__TVamosFingerDataDict_162_0_17(G__value* result7, G__CONST char* funcname, struct G__param* libp, int hash)
+{
+      G__letint(result7, 67, (long) TVamosFingerData::ImplFileName());
+   return(1 || funcname || hash || result7 || libp) ;
+}
+
+static int G__TVamosFingerDataDict_162_0_18(G__value* result7, G__CONST char* funcname, struct G__param* libp, int hash)
+{
+      G__letint(result7, 105, (long) TVamosFingerData::DeclFileLine());
+   return(1 || funcname || hash || result7 || libp) ;
+}
+
+// automatic copy constructor
+static int G__TVamosFingerDataDict_162_0_19(G__value* result7, G__CONST char* funcname, struct G__param* libp, int hash)
+
+{
+   TVamosFingerData* p;
+   void* tmp = (void*) G__int(libp->para[0]);
+   p = new TVamosFingerData(*(TVamosFingerData*) tmp);
+   result7->obj.i = (long) p;
+   result7->ref = (long) p;
+   G__set_tagnum(result7,G__get_linked_tagnum(&G__TVamosFingerDataDictLN_TVamosFingerData));
+   return(1 || funcname || hash || result7 || libp) ;
+}
+
+// automatic destructor
+typedef TVamosFingerData G__TTVamosFingerData;
+static int G__TVamosFingerDataDict_162_0_20(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[] (TVamosFingerData*) soff;
+     } else {
+       G__setgvp((long) G__PVOID);
+       for (int i = n - 1; i >= 0; --i) {
+         ((TVamosFingerData*) (soff+(sizeof(TVamosFingerData)*i)))->~G__TTVamosFingerData();
+       }
+       G__setgvp((long)gvp);
+     }
+   } else {
+     if (gvp == (char*)G__PVOID) {
+       delete (TVamosFingerData*) soff;
+     } else {
+       G__setgvp((long) G__PVOID);
+       ((TVamosFingerData*) (soff))->~G__TTVamosFingerData();
+       G__setgvp((long)gvp);
+     }
+   }
+   G__setnull(result7);
+   return(1 || funcname || hash || result7 || libp) ;
+}
+
+// automatic assignment operator
+static int G__TVamosFingerDataDict_162_0_21(G__value* result7, G__CONST char* funcname, struct G__param* libp, int hash)
+{
+   TVamosFingerData* dest = (TVamosFingerData*) G__getstructoffset();
+   *dest = *(TVamosFingerData*) libp->para[0].ref;
+   const TVamosFingerData& obj = *dest;
+   result7->ref = (long) (&obj);
+   result7->obj.i = (long) (&obj);
+   return(1 || funcname || hash || result7 || libp) ;
+}
+
+
+/* Setting up global function */
+
+/*********************************************************
+* Member function Stub
+*********************************************************/
+
+/* TVamosFingerData */
+
+/*********************************************************
+* Global function Stub
+*********************************************************/
+
+/*********************************************************
+* Get size of pointer to member function
+*********************************************************/
+class G__Sizep2memfuncTVamosFingerDataDict {
+ public:
+  G__Sizep2memfuncTVamosFingerDataDict(): p(&G__Sizep2memfuncTVamosFingerDataDict::sizep2memfunc) {}
+    size_t sizep2memfunc() { return(sizeof(p)); }
+  private:
+    size_t (G__Sizep2memfuncTVamosFingerDataDict::*p)();
+};
+
+size_t G__get_sizep2memfuncTVamosFingerDataDict()
+{
+  G__Sizep2memfuncTVamosFingerDataDict 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_inheritanceTVamosFingerDataDict() {
+
+   /* Setting up class inheritance */
+   if(0==G__getnumbaseclass(G__get_linked_tagnum(&G__TVamosFingerDataDictLN_TVamosFingerData))) {
+     TVamosFingerData *G__Lderived;
+     G__Lderived=(TVamosFingerData*)0x1000;
+     {
+       TObject *G__Lpbase=(TObject*)G__Lderived;
+       G__inheritance_setup(G__get_linked_tagnum(&G__TVamosFingerDataDictLN_TVamosFingerData),G__get_linked_tagnum(&G__TVamosFingerDataDictLN_TObject),(long)G__Lpbase-(long)G__Lderived,1,1);
+     }
+   }
+}
+
+/*********************************************************
+* typedef information setup/
+*********************************************************/
+extern "C" void G__cpp_setup_typetableTVamosFingerDataDict() {
+
+   /* 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("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__TVamosFingerDataDictLN_vectorlEROOTcLcLTSchemaHelpercOallocatorlEROOTcLcLTSchemaHelpergRsPgR),0,-1);
+   G__setnewtype(-1,NULL,0);
+   G__search_typename2("reverse_iterator<const_iterator>",117,G__get_linked_tagnum(&G__TVamosFingerDataDictLN_reverse_iteratorlEvectorlEROOTcLcLTSchemaHelpercOallocatorlEROOTcLcLTSchemaHelpergRsPgRcLcLiteratorgR),0,G__get_linked_tagnum(&G__TVamosFingerDataDictLN_vectorlEROOTcLcLTSchemaHelpercOallocatorlEROOTcLcLTSchemaHelpergRsPgR));
+   G__setnewtype(-1,NULL,0);
+   G__search_typename2("reverse_iterator<iterator>",117,G__get_linked_tagnum(&G__TVamosFingerDataDictLN_reverse_iteratorlEvectorlEROOTcLcLTSchemaHelpercOallocatorlEROOTcLcLTSchemaHelpergRsPgRcLcLiteratorgR),0,G__get_linked_tagnum(&G__TVamosFingerDataDictLN_vectorlEROOTcLcLTSchemaHelpercOallocatorlEROOTcLcLTSchemaHelpergRsPgR));
+   G__setnewtype(-1,NULL,0);
+   G__search_typename2("vector<TVirtualArray*>",117,G__get_linked_tagnum(&G__TVamosFingerDataDictLN_vectorlETVirtualArraymUcOallocatorlETVirtualArraymUgRsPgR),0,-1);
+   G__setnewtype(-1,NULL,0);
+   G__search_typename2("reverse_iterator<const_iterator>",117,G__get_linked_tagnum(&G__TVamosFingerDataDictLN_reverse_iteratorlEvectorlETVirtualArraymUcOallocatorlETVirtualArraymUgRsPgRcLcLiteratorgR),0,G__get_linked_tagnum(&G__TVamosFingerDataDictLN_vectorlETVirtualArraymUcOallocatorlETVirtualArraymUgRsPgR));
+   G__setnewtype(-1,NULL,0);
+   G__search_typename2("reverse_iterator<iterator>",117,G__get_linked_tagnum(&G__TVamosFingerDataDictLN_reverse_iteratorlEvectorlETVirtualArraymUcOallocatorlETVirtualArraymUgRsPgRcLcLiteratorgR),0,G__get_linked_tagnum(&G__TVamosFingerDataDictLN_vectorlETVirtualArraymUcOallocatorlETVirtualArraymUgRsPgR));
+   G__setnewtype(-1,NULL,0);
+}
+
+/*********************************************************
+* Data Member information setup/
+*********************************************************/
+
+   /* Setting up class,struct,union tag member variable */
+
+   /* TVamosFingerData */
+static void G__setup_memvarTVamosFingerData(void) {
+   G__tag_memvar_setup(G__get_linked_tagnum(&G__TVamosFingerDataDictLN_TVamosFingerData));
+   { TVamosFingerData *p; p=(TVamosFingerData*)0x1000; if (p) { }
+   G__memvar_setup((void*)0,114,0,0,-1,G__defined_typename("UShort_t"),-1,4,"fVamos_Finger_Energy=",0,(char*)NULL);
+   G__memvar_setup((void*)0,85,0,0,G__get_linked_tagnum(&G__TVamosFingerDataDictLN_TClass),-1,-2,4,"fgIsA=",0,(char*)NULL);
+   }
+   G__tag_memvar_reset();
+}
+
+extern "C" void G__cpp_setup_memvarTVamosFingerDataDict() {
+}
+/***********************************************************
+************************************************************
+************************************************************
+************************************************************
+************************************************************
+************************************************************
+************************************************************
+***********************************************************/
+
+/*********************************************************
+* Member function information setup for each class
+*********************************************************/
+static void G__setup_memfuncTVamosFingerData(void) {
+   /* TVamosFingerData */
+   G__tag_memfunc_setup(G__get_linked_tagnum(&G__TVamosFingerDataDictLN_TVamosFingerData));
+   G__memfunc_setup("TVamosFingerData",1583,G__TVamosFingerDataDict_162_0_1, 105, G__get_linked_tagnum(&G__TVamosFingerDataDictLN_TVamosFingerData), -1, 0, 0, 1, 1, 0, "", (char*)NULL, (void*) NULL, 0);
+   G__memfunc_setup("Clear",487,G__TVamosFingerDataDict_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("GetFingerEnergy",1509,G__TVamosFingerDataDict_162_0_5, 114, -1, G__defined_typename("UShort_t"), 0, 0, 1, 1, 0, "", (char*)NULL, (void*) NULL, 0);
+   G__memfunc_setup("SetFingerEnergy",1521,G__TVamosFingerDataDict_162_0_6, 121, -1, -1, 0, 1, 1, 1, 0, "r - 'UShort_t' 0 - E", (char*)NULL, (void*) NULL, 0);
+   G__memfunc_setup("Class",502,G__TVamosFingerDataDict_162_0_7, 85, G__get_linked_tagnum(&G__TVamosFingerDataDictLN_TClass), -1, 0, 0, 3, 1, 0, "", (char*)NULL, (void*) G__func2void( (TClass* (*)())(&TVamosFingerData::Class) ), 0);
+   G__memfunc_setup("Class_Name",982,G__TVamosFingerDataDict_162_0_8, 67, -1, -1, 0, 0, 3, 1, 1, "", (char*)NULL, (void*) G__func2void( (const char* (*)())(&TVamosFingerData::Class_Name) ), 0);
+   G__memfunc_setup("Class_Version",1339,G__TVamosFingerDataDict_162_0_9, 115, -1, G__defined_typename("Version_t"), 0, 0, 3, 1, 0, "", (char*)NULL, (void*) G__func2void( (Version_t (*)())(&TVamosFingerData::Class_Version) ), 0);
+   G__memfunc_setup("Dictionary",1046,G__TVamosFingerDataDict_162_0_10, 121, -1, -1, 0, 0, 3, 1, 0, "", (char*)NULL, (void*) G__func2void( (void (*)())(&TVamosFingerData::Dictionary) ), 0);
+   G__memfunc_setup("IsA",253,(G__InterfaceMethod) NULL,85, G__get_linked_tagnum(&G__TVamosFingerDataDictLN_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__TVamosFingerDataDict_162_0_14, 121, -1, -1, 0, 1, 1, 1, 0, "u 'TBuffer' - 1 - b", (char*)NULL, (void*) NULL, 0);
+   G__memfunc_setup("DeclFileName",1145,G__TVamosFingerDataDict_162_0_15, 67, -1, -1, 0, 0, 3, 1, 1, "", (char*)NULL, (void*) G__func2void( (const char* (*)())(&TVamosFingerData::DeclFileName) ), 0);
+   G__memfunc_setup("ImplFileLine",1178,G__TVamosFingerDataDict_162_0_16, 105, -1, -1, 0, 0, 3, 1, 0, "", (char*)NULL, (void*) G__func2void( (int (*)())(&TVamosFingerData::ImplFileLine) ), 0);
+   G__memfunc_setup("ImplFileName",1171,G__TVamosFingerDataDict_162_0_17, 67, -1, -1, 0, 0, 3, 1, 1, "", (char*)NULL, (void*) G__func2void( (const char* (*)())(&TVamosFingerData::ImplFileName) ), 0);
+   G__memfunc_setup("DeclFileLine",1152,G__TVamosFingerDataDict_162_0_18, 105, -1, -1, 0, 0, 3, 1, 0, "", (char*)NULL, (void*) G__func2void( (int (*)())(&TVamosFingerData::DeclFileLine) ), 0);
+   // automatic copy constructor
+   G__memfunc_setup("TVamosFingerData", 1583, G__TVamosFingerDataDict_162_0_19, (int) ('i'), G__get_linked_tagnum(&G__TVamosFingerDataDictLN_TVamosFingerData), -1, 0, 1, 1, 1, 0, "u 'TVamosFingerData' - 11 - -", (char*) NULL, (void*) NULL, 0);
+   // automatic destructor
+   G__memfunc_setup("~TVamosFingerData", 1709, G__TVamosFingerDataDict_162_0_20, (int) ('y'), -1, -1, 0, 0, 1, 1, 0, "", (char*) NULL, (void*) NULL, 1);
+   // automatic assignment operator
+   G__memfunc_setup("operator=", 937, G__TVamosFingerDataDict_162_0_21, (int) ('u'), G__get_linked_tagnum(&G__TVamosFingerDataDictLN_TVamosFingerData), -1, 1, 1, 1, 1, 0, "u 'TVamosFingerData' - 11 - -", (char*) NULL, (void*) NULL, 0);
+   G__tag_memfunc_reset();
+}
+
+
+/*********************************************************
+* Member function information setup
+*********************************************************/
+extern "C" void G__cpp_setup_memfuncTVamosFingerDataDict() {
+}
+
+/*********************************************************
+* 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() {
+
+   G__resetglobalenv();
+}
+extern "C" void G__cpp_setup_globalTVamosFingerDataDict() {
+  G__cpp_setup_global0();
+  G__cpp_setup_global1();
+}
+
+/*********************************************************
+* 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_funcTVamosFingerDataDict() {
+  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__TVamosFingerDataDictLN_TClass = { "TClass" , 99 , -1 };
+G__linked_taginfo G__TVamosFingerDataDictLN_TBuffer = { "TBuffer" , 99 , -1 };
+G__linked_taginfo G__TVamosFingerDataDictLN_TMemberInspector = { "TMemberInspector" , 99 , -1 };
+G__linked_taginfo G__TVamosFingerDataDictLN_TObject = { "TObject" , 99 , -1 };
+G__linked_taginfo G__TVamosFingerDataDictLN_vectorlEROOTcLcLTSchemaHelpercOallocatorlEROOTcLcLTSchemaHelpergRsPgR = { "vector<ROOT::TSchemaHelper,allocator<ROOT::TSchemaHelper> >" , 99 , -1 };
+G__linked_taginfo G__TVamosFingerDataDictLN_reverse_iteratorlEvectorlEROOTcLcLTSchemaHelpercOallocatorlEROOTcLcLTSchemaHelpergRsPgRcLcLiteratorgR = { "reverse_iterator<vector<ROOT::TSchemaHelper,allocator<ROOT::TSchemaHelper> >::iterator>" , 99 , -1 };
+G__linked_taginfo G__TVamosFingerDataDictLN_vectorlETVirtualArraymUcOallocatorlETVirtualArraymUgRsPgR = { "vector<TVirtualArray*,allocator<TVirtualArray*> >" , 99 , -1 };
+G__linked_taginfo G__TVamosFingerDataDictLN_reverse_iteratorlEvectorlETVirtualArraymUcOallocatorlETVirtualArraymUgRsPgRcLcLiteratorgR = { "reverse_iterator<vector<TVirtualArray*,allocator<TVirtualArray*> >::iterator>" , 99 , -1 };
+G__linked_taginfo G__TVamosFingerDataDictLN_TVamosFingerData = { "TVamosFingerData" , 99 , -1 };
+
+/* Reset class/struct taginfo */
+extern "C" void G__cpp_reset_tagtableTVamosFingerDataDict() {
+  G__TVamosFingerDataDictLN_TClass.tagnum = -1 ;
+  G__TVamosFingerDataDictLN_TBuffer.tagnum = -1 ;
+  G__TVamosFingerDataDictLN_TMemberInspector.tagnum = -1 ;
+  G__TVamosFingerDataDictLN_TObject.tagnum = -1 ;
+  G__TVamosFingerDataDictLN_vectorlEROOTcLcLTSchemaHelpercOallocatorlEROOTcLcLTSchemaHelpergRsPgR.tagnum = -1 ;
+  G__TVamosFingerDataDictLN_reverse_iteratorlEvectorlEROOTcLcLTSchemaHelpercOallocatorlEROOTcLcLTSchemaHelpergRsPgRcLcLiteratorgR.tagnum = -1 ;
+  G__TVamosFingerDataDictLN_vectorlETVirtualArraymUcOallocatorlETVirtualArraymUgRsPgR.tagnum = -1 ;
+  G__TVamosFingerDataDictLN_reverse_iteratorlEvectorlETVirtualArraymUcOallocatorlETVirtualArraymUgRsPgRcLcLiteratorgR.tagnum = -1 ;
+  G__TVamosFingerDataDictLN_TVamosFingerData.tagnum = -1 ;
+}
+
+
+extern "C" void G__cpp_setup_tagtableTVamosFingerDataDict() {
+
+   /* Setting up class,struct,union tag entry */
+   G__get_linked_tagnum_fwd(&G__TVamosFingerDataDictLN_TClass);
+   G__get_linked_tagnum_fwd(&G__TVamosFingerDataDictLN_TBuffer);
+   G__get_linked_tagnum_fwd(&G__TVamosFingerDataDictLN_TMemberInspector);
+   G__get_linked_tagnum_fwd(&G__TVamosFingerDataDictLN_TObject);
+   G__get_linked_tagnum_fwd(&G__TVamosFingerDataDictLN_vectorlEROOTcLcLTSchemaHelpercOallocatorlEROOTcLcLTSchemaHelpergRsPgR);
+   G__get_linked_tagnum_fwd(&G__TVamosFingerDataDictLN_reverse_iteratorlEvectorlEROOTcLcLTSchemaHelpercOallocatorlEROOTcLcLTSchemaHelpergRsPgRcLcLiteratorgR);
+   G__get_linked_tagnum_fwd(&G__TVamosFingerDataDictLN_vectorlETVirtualArraymUcOallocatorlETVirtualArraymUgRsPgR);
+   G__get_linked_tagnum_fwd(&G__TVamosFingerDataDictLN_reverse_iteratorlEvectorlETVirtualArraymUcOallocatorlETVirtualArraymUgRsPgRcLcLiteratorgR);
+   G__tagtable_setup(G__get_linked_tagnum_fwd(&G__TVamosFingerDataDictLN_TVamosFingerData),sizeof(TVamosFingerData),-1,29952,"VamosFingerData structure",G__setup_memvarTVamosFingerData,G__setup_memfuncTVamosFingerData);
+}
+extern "C" void G__cpp_setupTVamosFingerDataDict(void) {
+  G__check_setup_version(30051515,"G__cpp_setupTVamosFingerDataDict()");
+  G__set_cpp_environmentTVamosFingerDataDict();
+  G__cpp_setup_tagtableTVamosFingerDataDict();
+
+  G__cpp_setup_inheritanceTVamosFingerDataDict();
+
+  G__cpp_setup_typetableTVamosFingerDataDict();
+
+  G__cpp_setup_memvarTVamosFingerDataDict();
+
+  G__cpp_setup_memfuncTVamosFingerDataDict();
+  G__cpp_setup_globalTVamosFingerDataDict();
+  G__cpp_setup_funcTVamosFingerDataDict();
+
+   if(0==G__getsizep2memfunc()) G__get_sizep2memfuncTVamosFingerDataDict();
+  return;
+}
+class G__cpp_setup_initTVamosFingerDataDict {
+  public:
+    G__cpp_setup_initTVamosFingerDataDict() { G__add_setup_func("TVamosFingerDataDict",(G__incsetup)(&G__cpp_setupTVamosFingerDataDict)); G__call_setup_funcs(); }
+   ~G__cpp_setup_initTVamosFingerDataDict() { G__remove_setup_func("TVamosFingerDataDict"); }
+};
+G__cpp_setup_initTVamosFingerDataDict G__cpp_setup_initializerTVamosFingerDataDict;
+
diff --git a/NPLib/Vamos/TVamosFingerDataDict.h b/NPLib/Vamos/TVamosFingerDataDict.h
new file mode 100644
index 0000000000000000000000000000000000000000..ef30c138422e932fb722cf6c20140bbe2f66c87d
--- /dev/null
+++ b/NPLib/Vamos/TVamosFingerDataDict.h
@@ -0,0 +1,52 @@
+/********************************************************************
+* TVamosFingerDataDict.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 TVamosFingerDataDict.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_tagtableTVamosFingerDataDict();
+extern void G__cpp_setup_inheritanceTVamosFingerDataDict();
+extern void G__cpp_setup_typetableTVamosFingerDataDict();
+extern void G__cpp_setup_memvarTVamosFingerDataDict();
+extern void G__cpp_setup_globalTVamosFingerDataDict();
+extern void G__cpp_setup_memfuncTVamosFingerDataDict();
+extern void G__cpp_setup_funcTVamosFingerDataDict();
+extern void G__set_cpp_environmentTVamosFingerDataDict();
+}
+
+
+#include "TObject.h"
+#include "TMemberInspector.h"
+#include "TVamosFingerData.h"
+#include <algorithm>
+namespace std { }
+using namespace std;
+
+#ifndef G__MEMFUNCBODY
+#endif
+
+extern G__linked_taginfo G__TVamosFingerDataDictLN_TClass;
+extern G__linked_taginfo G__TVamosFingerDataDictLN_TBuffer;
+extern G__linked_taginfo G__TVamosFingerDataDictLN_TMemberInspector;
+extern G__linked_taginfo G__TVamosFingerDataDictLN_TObject;
+extern G__linked_taginfo G__TVamosFingerDataDictLN_vectorlEROOTcLcLTSchemaHelpercOallocatorlEROOTcLcLTSchemaHelpergRsPgR;
+extern G__linked_taginfo G__TVamosFingerDataDictLN_reverse_iteratorlEvectorlEROOTcLcLTSchemaHelpercOallocatorlEROOTcLcLTSchemaHelpergRsPgRcLcLiteratorgR;
+extern G__linked_taginfo G__TVamosFingerDataDictLN_vectorlETVirtualArraymUcOallocatorlETVirtualArraymUgRsPgR;
+extern G__linked_taginfo G__TVamosFingerDataDictLN_reverse_iteratorlEvectorlETVirtualArraymUcOallocatorlETVirtualArraymUgRsPgRcLcLiteratorgR;
+extern G__linked_taginfo G__TVamosFingerDataDictLN_TVamosFingerData;
+
+/* STUB derived class for protected member access */
diff --git a/NPLib/Vamos/TVamosPlasticDataDict.cxx b/NPLib/Vamos/TVamosPlasticDataDict.cxx
new file mode 100644
index 0000000000000000000000000000000000000000..32f5e5795fa40b366d3cdca28bfbe1caa6d970d2
--- /dev/null
+++ b/NPLib/Vamos/TVamosPlasticDataDict.cxx
@@ -0,0 +1,686 @@
+//
+// File generated by rootcint at Tue Jul 17 16:41:36 2012
+
+// Do NOT change. Changes will be lost next time file is generated
+//
+
+#define R__DICTIONARY_FILENAME TVamosPlasticDataDict
+#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 "TVamosPlasticDataDict.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 TVamosPlasticData_ShowMembers(void *obj, TMemberInspector &R__insp);
+   static void *new_TVamosPlasticData(void *p = 0);
+   static void *newArray_TVamosPlasticData(Long_t size, void *p);
+   static void delete_TVamosPlasticData(void *p);
+   static void deleteArray_TVamosPlasticData(void *p);
+   static void destruct_TVamosPlasticData(void *p);
+   static void streamer_TVamosPlasticData(TBuffer &buf, void *obj);
+
+   // Function generating the singleton type initializer
+   static TGenericClassInfo *GenerateInitInstanceLocal(const ::TVamosPlasticData*)
+   {
+      ::TVamosPlasticData *ptr = 0;
+      static ::TVirtualIsAProxy* isa_proxy = new ::TInstrumentedIsAProxy< ::TVamosPlasticData >(0);
+      static ::ROOT::TGenericClassInfo 
+         instance("TVamosPlasticData", ::TVamosPlasticData::Class_Version(), "./TVamosPlasticData.h", 31,
+                  typeid(::TVamosPlasticData), DefineBehavior(ptr, ptr),
+                  &::TVamosPlasticData::Dictionary, isa_proxy, 0,
+                  sizeof(::TVamosPlasticData) );
+      instance.SetNew(&new_TVamosPlasticData);
+      instance.SetNewArray(&newArray_TVamosPlasticData);
+      instance.SetDelete(&delete_TVamosPlasticData);
+      instance.SetDeleteArray(&deleteArray_TVamosPlasticData);
+      instance.SetDestructor(&destruct_TVamosPlasticData);
+      instance.SetStreamerFunc(&streamer_TVamosPlasticData);
+      return &instance;
+   }
+   TGenericClassInfo *GenerateInitInstance(const ::TVamosPlasticData*)
+   {
+      return GenerateInitInstanceLocal((::TVamosPlasticData*)0);
+   }
+   // Static variable to force the class initialization
+   static ::ROOT::TGenericClassInfo *_R__UNIQUE_(Init) = GenerateInitInstanceLocal((const ::TVamosPlasticData*)0x0); R__UseDummy(_R__UNIQUE_(Init));
+} // end of namespace ROOT
+
+//______________________________________________________________________________
+TClass *TVamosPlasticData::fgIsA = 0;  // static to hold class pointer
+
+//______________________________________________________________________________
+const char *TVamosPlasticData::Class_Name()
+{
+   return "TVamosPlasticData";
+}
+
+//______________________________________________________________________________
+const char *TVamosPlasticData::ImplFileName()
+{
+   return ::ROOT::GenerateInitInstanceLocal((const ::TVamosPlasticData*)0x0)->GetImplFileName();
+}
+
+//______________________________________________________________________________
+int TVamosPlasticData::ImplFileLine()
+{
+   return ::ROOT::GenerateInitInstanceLocal((const ::TVamosPlasticData*)0x0)->GetImplFileLine();
+}
+
+//______________________________________________________________________________
+void TVamosPlasticData::Dictionary()
+{
+   fgIsA = ::ROOT::GenerateInitInstanceLocal((const ::TVamosPlasticData*)0x0)->GetClass();
+}
+
+//______________________________________________________________________________
+TClass *TVamosPlasticData::Class()
+{
+   if (!fgIsA) fgIsA = ::ROOT::GenerateInitInstanceLocal((const ::TVamosPlasticData*)0x0)->GetClass();
+   return fgIsA;
+}
+
+//______________________________________________________________________________
+void TVamosPlasticData::Streamer(TBuffer &R__b)
+{
+   // Stream an object of class TVamosPlasticData.
+
+   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);
+      R__b >> fVamos_Plastic_Energy_Left;
+      R__b >> fVamos_Plastic_Energy_Right;
+      R__b >> fVamos_Plastic_Time_LeftRight;
+      R__b.CheckByteCount(R__s, R__c, TVamosPlasticData::IsA());
+   } else {
+      R__c = R__b.WriteVersion(TVamosPlasticData::IsA(), kTRUE);
+      TObject::Streamer(R__b);
+      R__b << fVamos_Plastic_Energy_Left;
+      R__b << fVamos_Plastic_Energy_Right;
+      R__b << fVamos_Plastic_Time_LeftRight;
+      R__b.SetByteCount(R__c, kTRUE);
+   }
+}
+
+//______________________________________________________________________________
+void TVamosPlasticData::ShowMembers(TMemberInspector &R__insp)
+{
+      // Inspect the data members of an object of class TVamosPlasticData.
+      TClass *R__cl = ::TVamosPlasticData::IsA();
+      if (R__cl || R__insp.IsA()) { }
+      R__insp.Inspect(R__cl, R__insp.GetParent(), "fVamos_Plastic_Energy_Left", &fVamos_Plastic_Energy_Left);
+      R__insp.Inspect(R__cl, R__insp.GetParent(), "fVamos_Plastic_Energy_Right", &fVamos_Plastic_Energy_Right);
+      R__insp.Inspect(R__cl, R__insp.GetParent(), "fVamos_Plastic_Time_LeftRight", &fVamos_Plastic_Time_LeftRight);
+      TObject::ShowMembers(R__insp);
+}
+
+namespace ROOT {
+   // Wrappers around operator new
+   static void *new_TVamosPlasticData(void *p) {
+      return  p ? new(p) ::TVamosPlasticData : new ::TVamosPlasticData;
+   }
+   static void *newArray_TVamosPlasticData(Long_t nElements, void *p) {
+      return p ? new(p) ::TVamosPlasticData[nElements] : new ::TVamosPlasticData[nElements];
+   }
+   // Wrapper around operator delete
+   static void delete_TVamosPlasticData(void *p) {
+      delete ((::TVamosPlasticData*)p);
+   }
+   static void deleteArray_TVamosPlasticData(void *p) {
+      delete [] ((::TVamosPlasticData*)p);
+   }
+   static void destruct_TVamosPlasticData(void *p) {
+      typedef ::TVamosPlasticData current_t;
+      ((current_t*)p)->~current_t();
+   }
+   // Wrapper around a custom streamer member function.
+   static void streamer_TVamosPlasticData(TBuffer &buf, void *obj) {
+      ((::TVamosPlasticData*)obj)->::TVamosPlasticData::Streamer(buf);
+   }
+} // end of namespace ROOT for class ::TVamosPlasticData
+
+/********************************************************
+* TVamosPlasticDataDict.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_tagtableTVamosPlasticDataDict();
+
+extern "C" void G__set_cpp_environmentTVamosPlasticDataDict() {
+  G__add_compiledheader("TObject.h");
+  G__add_compiledheader("TMemberInspector.h");
+  G__add_compiledheader("TVamosPlasticData.h");
+  G__cpp_reset_tagtableTVamosPlasticDataDict();
+}
+#include <new>
+extern "C" int G__cpp_dllrevTVamosPlasticDataDict() { return(30051515); }
+
+/*********************************************************
+* Member function Interface Method
+*********************************************************/
+
+/* TVamosPlasticData */
+static int G__TVamosPlasticDataDict_162_0_1(G__value* result7, G__CONST char* funcname, struct G__param* libp, int hash)
+{
+   TVamosPlasticData* p = NULL;
+   char* gvp = (char*) G__getgvp();
+   int n = G__getaryconstruct();
+   if (n) {
+     if ((gvp == (char*)G__PVOID) || (gvp == 0)) {
+       p = new TVamosPlasticData[n];
+     } else {
+       p = new((void*) gvp) TVamosPlasticData[n];
+     }
+   } else {
+     if ((gvp == (char*)G__PVOID) || (gvp == 0)) {
+       p = new TVamosPlasticData;
+     } else {
+       p = new((void*) gvp) TVamosPlasticData;
+     }
+   }
+   result7->obj.i = (long) p;
+   result7->ref = (long) p;
+   G__set_tagnum(result7,G__get_linked_tagnum(&G__TVamosPlasticDataDictLN_TVamosPlasticData));
+   return(1 || funcname || hash || result7 || libp) ;
+}
+
+static int G__TVamosPlasticDataDict_162_0_2(G__value* result7, G__CONST char* funcname, struct G__param* libp, int hash)
+{
+      ((TVamosPlasticData*) G__getstructoffset())->Clear();
+      G__setnull(result7);
+   return(1 || funcname || hash || result7 || libp) ;
+}
+
+static int G__TVamosPlasticDataDict_162_0_5(G__value* result7, G__CONST char* funcname, struct G__param* libp, int hash)
+{
+      G__letint(result7, 114, (long) ((TVamosPlasticData*) G__getstructoffset())->GetEnergyLeft());
+   return(1 || funcname || hash || result7 || libp) ;
+}
+
+static int G__TVamosPlasticDataDict_162_0_6(G__value* result7, G__CONST char* funcname, struct G__param* libp, int hash)
+{
+      G__letint(result7, 114, (long) ((TVamosPlasticData*) G__getstructoffset())->GetEnergyRight());
+   return(1 || funcname || hash || result7 || libp) ;
+}
+
+static int G__TVamosPlasticDataDict_162_0_7(G__value* result7, G__CONST char* funcname, struct G__param* libp, int hash)
+{
+      G__letint(result7, 114, (long) ((TVamosPlasticData*) G__getstructoffset())->GetTimeLeftRight());
+   return(1 || funcname || hash || result7 || libp) ;
+}
+
+static int G__TVamosPlasticDataDict_162_0_8(G__value* result7, G__CONST char* funcname, struct G__param* libp, int hash)
+{
+      ((TVamosPlasticData*) G__getstructoffset())->SetEnergyLeft((UShort_t) G__int(libp->para[0]));
+      G__setnull(result7);
+   return(1 || funcname || hash || result7 || libp) ;
+}
+
+static int G__TVamosPlasticDataDict_162_0_9(G__value* result7, G__CONST char* funcname, struct G__param* libp, int hash)
+{
+      ((TVamosPlasticData*) G__getstructoffset())->SetEnergyRight((UShort_t) G__int(libp->para[0]));
+      G__setnull(result7);
+   return(1 || funcname || hash || result7 || libp) ;
+}
+
+static int G__TVamosPlasticDataDict_162_0_10(G__value* result7, G__CONST char* funcname, struct G__param* libp, int hash)
+{
+      ((TVamosPlasticData*) G__getstructoffset())->SetTimeLeftRight((UShort_t) G__int(libp->para[0]));
+      G__setnull(result7);
+   return(1 || funcname || hash || result7 || libp) ;
+}
+
+static int G__TVamosPlasticDataDict_162_0_11(G__value* result7, G__CONST char* funcname, struct G__param* libp, int hash)
+{
+      G__letint(result7, 85, (long) TVamosPlasticData::Class());
+   return(1 || funcname || hash || result7 || libp) ;
+}
+
+static int G__TVamosPlasticDataDict_162_0_12(G__value* result7, G__CONST char* funcname, struct G__param* libp, int hash)
+{
+      G__letint(result7, 67, (long) TVamosPlasticData::Class_Name());
+   return(1 || funcname || hash || result7 || libp) ;
+}
+
+static int G__TVamosPlasticDataDict_162_0_13(G__value* result7, G__CONST char* funcname, struct G__param* libp, int hash)
+{
+      G__letint(result7, 115, (long) TVamosPlasticData::Class_Version());
+   return(1 || funcname || hash || result7 || libp) ;
+}
+
+static int G__TVamosPlasticDataDict_162_0_14(G__value* result7, G__CONST char* funcname, struct G__param* libp, int hash)
+{
+      TVamosPlasticData::Dictionary();
+      G__setnull(result7);
+   return(1 || funcname || hash || result7 || libp) ;
+}
+
+static int G__TVamosPlasticDataDict_162_0_18(G__value* result7, G__CONST char* funcname, struct G__param* libp, int hash)
+{
+      ((TVamosPlasticData*) G__getstructoffset())->StreamerNVirtual(*(TBuffer*) libp->para[0].ref);
+      G__setnull(result7);
+   return(1 || funcname || hash || result7 || libp) ;
+}
+
+static int G__TVamosPlasticDataDict_162_0_19(G__value* result7, G__CONST char* funcname, struct G__param* libp, int hash)
+{
+      G__letint(result7, 67, (long) TVamosPlasticData::DeclFileName());
+   return(1 || funcname || hash || result7 || libp) ;
+}
+
+static int G__TVamosPlasticDataDict_162_0_20(G__value* result7, G__CONST char* funcname, struct G__param* libp, int hash)
+{
+      G__letint(result7, 105, (long) TVamosPlasticData::ImplFileLine());
+   return(1 || funcname || hash || result7 || libp) ;
+}
+
+static int G__TVamosPlasticDataDict_162_0_21(G__value* result7, G__CONST char* funcname, struct G__param* libp, int hash)
+{
+      G__letint(result7, 67, (long) TVamosPlasticData::ImplFileName());
+   return(1 || funcname || hash || result7 || libp) ;
+}
+
+static int G__TVamosPlasticDataDict_162_0_22(G__value* result7, G__CONST char* funcname, struct G__param* libp, int hash)
+{
+      G__letint(result7, 105, (long) TVamosPlasticData::DeclFileLine());
+   return(1 || funcname || hash || result7 || libp) ;
+}
+
+// automatic copy constructor
+static int G__TVamosPlasticDataDict_162_0_23(G__value* result7, G__CONST char* funcname, struct G__param* libp, int hash)
+
+{
+   TVamosPlasticData* p;
+   void* tmp = (void*) G__int(libp->para[0]);
+   p = new TVamosPlasticData(*(TVamosPlasticData*) tmp);
+   result7->obj.i = (long) p;
+   result7->ref = (long) p;
+   G__set_tagnum(result7,G__get_linked_tagnum(&G__TVamosPlasticDataDictLN_TVamosPlasticData));
+   return(1 || funcname || hash || result7 || libp) ;
+}
+
+// automatic destructor
+typedef TVamosPlasticData G__TTVamosPlasticData;
+static int G__TVamosPlasticDataDict_162_0_24(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[] (TVamosPlasticData*) soff;
+     } else {
+       G__setgvp((long) G__PVOID);
+       for (int i = n - 1; i >= 0; --i) {
+         ((TVamosPlasticData*) (soff+(sizeof(TVamosPlasticData)*i)))->~G__TTVamosPlasticData();
+       }
+       G__setgvp((long)gvp);
+     }
+   } else {
+     if (gvp == (char*)G__PVOID) {
+       delete (TVamosPlasticData*) soff;
+     } else {
+       G__setgvp((long) G__PVOID);
+       ((TVamosPlasticData*) (soff))->~G__TTVamosPlasticData();
+       G__setgvp((long)gvp);
+     }
+   }
+   G__setnull(result7);
+   return(1 || funcname || hash || result7 || libp) ;
+}
+
+// automatic assignment operator
+static int G__TVamosPlasticDataDict_162_0_25(G__value* result7, G__CONST char* funcname, struct G__param* libp, int hash)
+{
+   TVamosPlasticData* dest = (TVamosPlasticData*) G__getstructoffset();
+   *dest = *(TVamosPlasticData*) libp->para[0].ref;
+   const TVamosPlasticData& obj = *dest;
+   result7->ref = (long) (&obj);
+   result7->obj.i = (long) (&obj);
+   return(1 || funcname || hash || result7 || libp) ;
+}
+
+
+/* Setting up global function */
+
+/*********************************************************
+* Member function Stub
+*********************************************************/
+
+/* TVamosPlasticData */
+
+/*********************************************************
+* Global function Stub
+*********************************************************/
+
+/*********************************************************
+* Get size of pointer to member function
+*********************************************************/
+class G__Sizep2memfuncTVamosPlasticDataDict {
+ public:
+  G__Sizep2memfuncTVamosPlasticDataDict(): p(&G__Sizep2memfuncTVamosPlasticDataDict::sizep2memfunc) {}
+    size_t sizep2memfunc() { return(sizeof(p)); }
+  private:
+    size_t (G__Sizep2memfuncTVamosPlasticDataDict::*p)();
+};
+
+size_t G__get_sizep2memfuncTVamosPlasticDataDict()
+{
+  G__Sizep2memfuncTVamosPlasticDataDict 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_inheritanceTVamosPlasticDataDict() {
+
+   /* Setting up class inheritance */
+   if(0==G__getnumbaseclass(G__get_linked_tagnum(&G__TVamosPlasticDataDictLN_TVamosPlasticData))) {
+     TVamosPlasticData *G__Lderived;
+     G__Lderived=(TVamosPlasticData*)0x1000;
+     {
+       TObject *G__Lpbase=(TObject*)G__Lderived;
+       G__inheritance_setup(G__get_linked_tagnum(&G__TVamosPlasticDataDictLN_TVamosPlasticData),G__get_linked_tagnum(&G__TVamosPlasticDataDictLN_TObject),(long)G__Lpbase-(long)G__Lderived,1,1);
+     }
+   }
+}
+
+/*********************************************************
+* typedef information setup/
+*********************************************************/
+extern "C" void G__cpp_setup_typetableTVamosPlasticDataDict() {
+
+   /* 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("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__TVamosPlasticDataDictLN_vectorlEROOTcLcLTSchemaHelpercOallocatorlEROOTcLcLTSchemaHelpergRsPgR),0,-1);
+   G__setnewtype(-1,NULL,0);
+   G__search_typename2("reverse_iterator<const_iterator>",117,G__get_linked_tagnum(&G__TVamosPlasticDataDictLN_reverse_iteratorlEvectorlEROOTcLcLTSchemaHelpercOallocatorlEROOTcLcLTSchemaHelpergRsPgRcLcLiteratorgR),0,G__get_linked_tagnum(&G__TVamosPlasticDataDictLN_vectorlEROOTcLcLTSchemaHelpercOallocatorlEROOTcLcLTSchemaHelpergRsPgR));
+   G__setnewtype(-1,NULL,0);
+   G__search_typename2("reverse_iterator<iterator>",117,G__get_linked_tagnum(&G__TVamosPlasticDataDictLN_reverse_iteratorlEvectorlEROOTcLcLTSchemaHelpercOallocatorlEROOTcLcLTSchemaHelpergRsPgRcLcLiteratorgR),0,G__get_linked_tagnum(&G__TVamosPlasticDataDictLN_vectorlEROOTcLcLTSchemaHelpercOallocatorlEROOTcLcLTSchemaHelpergRsPgR));
+   G__setnewtype(-1,NULL,0);
+   G__search_typename2("vector<TVirtualArray*>",117,G__get_linked_tagnum(&G__TVamosPlasticDataDictLN_vectorlETVirtualArraymUcOallocatorlETVirtualArraymUgRsPgR),0,-1);
+   G__setnewtype(-1,NULL,0);
+   G__search_typename2("reverse_iterator<const_iterator>",117,G__get_linked_tagnum(&G__TVamosPlasticDataDictLN_reverse_iteratorlEvectorlETVirtualArraymUcOallocatorlETVirtualArraymUgRsPgRcLcLiteratorgR),0,G__get_linked_tagnum(&G__TVamosPlasticDataDictLN_vectorlETVirtualArraymUcOallocatorlETVirtualArraymUgRsPgR));
+   G__setnewtype(-1,NULL,0);
+   G__search_typename2("reverse_iterator<iterator>",117,G__get_linked_tagnum(&G__TVamosPlasticDataDictLN_reverse_iteratorlEvectorlETVirtualArraymUcOallocatorlETVirtualArraymUgRsPgRcLcLiteratorgR),0,G__get_linked_tagnum(&G__TVamosPlasticDataDictLN_vectorlETVirtualArraymUcOallocatorlETVirtualArraymUgRsPgR));
+   G__setnewtype(-1,NULL,0);
+}
+
+/*********************************************************
+* Data Member information setup/
+*********************************************************/
+
+   /* Setting up class,struct,union tag member variable */
+
+   /* TVamosPlasticData */
+static void G__setup_memvarTVamosPlasticData(void) {
+   G__tag_memvar_setup(G__get_linked_tagnum(&G__TVamosPlasticDataDictLN_TVamosPlasticData));
+   { TVamosPlasticData *p; p=(TVamosPlasticData*)0x1000; if (p) { }
+   G__memvar_setup((void*)0,114,0,0,-1,G__defined_typename("UShort_t"),-1,4,"fVamos_Plastic_Energy_Left=",0,(char*)NULL);
+   G__memvar_setup((void*)0,114,0,0,-1,G__defined_typename("UShort_t"),-1,4,"fVamos_Plastic_Energy_Right=",0,(char*)NULL);
+   G__memvar_setup((void*)0,114,0,0,-1,G__defined_typename("UShort_t"),-1,4,"fVamos_Plastic_Time_LeftRight=",0,(char*)NULL);
+   G__memvar_setup((void*)0,85,0,0,G__get_linked_tagnum(&G__TVamosPlasticDataDictLN_TClass),-1,-2,4,"fgIsA=",0,(char*)NULL);
+   }
+   G__tag_memvar_reset();
+}
+
+extern "C" void G__cpp_setup_memvarTVamosPlasticDataDict() {
+}
+/***********************************************************
+************************************************************
+************************************************************
+************************************************************
+************************************************************
+************************************************************
+************************************************************
+***********************************************************/
+
+/*********************************************************
+* Member function information setup for each class
+*********************************************************/
+static void G__setup_memfuncTVamosPlasticData(void) {
+   /* TVamosPlasticData */
+   G__tag_memfunc_setup(G__get_linked_tagnum(&G__TVamosPlasticDataDictLN_TVamosPlasticData));
+   G__memfunc_setup("TVamosPlasticData",1700,G__TVamosPlasticDataDict_162_0_1, 105, G__get_linked_tagnum(&G__TVamosPlasticDataDictLN_TVamosPlasticData), -1, 0, 0, 1, 1, 0, "", (char*)NULL, (void*) NULL, 0);
+   G__memfunc_setup("Clear",487,G__TVamosPlasticDataDict_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("GetEnergyLeft",1301,G__TVamosPlasticDataDict_162_0_5, 114, -1, G__defined_typename("UShort_t"), 0, 0, 1, 1, 0, "", (char*)NULL, (void*) NULL, 0);
+   G__memfunc_setup("GetEnergyRight",1416,G__TVamosPlasticDataDict_162_0_6, 114, -1, G__defined_typename("UShort_t"), 0, 0, 1, 1, 0, "", (char*)NULL, (void*) NULL, 0);
+   G__memfunc_setup("GetTimeLeftRight",1592,G__TVamosPlasticDataDict_162_0_7, 114, -1, G__defined_typename("UShort_t"), 0, 0, 1, 1, 0, "", (char*)NULL, (void*) NULL, 0);
+   G__memfunc_setup("SetEnergyLeft",1313,G__TVamosPlasticDataDict_162_0_8, 121, -1, -1, 0, 1, 1, 1, 0, "r - 'UShort_t' 0 - E", (char*)NULL, (void*) NULL, 0);
+   G__memfunc_setup("SetEnergyRight",1428,G__TVamosPlasticDataDict_162_0_9, 121, -1, -1, 0, 1, 1, 1, 0, "r - 'UShort_t' 0 - E", (char*)NULL, (void*) NULL, 0);
+   G__memfunc_setup("SetTimeLeftRight",1604,G__TVamosPlasticDataDict_162_0_10, 121, -1, -1, 0, 1, 1, 1, 0, "r - 'UShort_t' 0 - E", (char*)NULL, (void*) NULL, 0);
+   G__memfunc_setup("Class",502,G__TVamosPlasticDataDict_162_0_11, 85, G__get_linked_tagnum(&G__TVamosPlasticDataDictLN_TClass), -1, 0, 0, 3, 1, 0, "", (char*)NULL, (void*) G__func2void( (TClass* (*)())(&TVamosPlasticData::Class) ), 0);
+   G__memfunc_setup("Class_Name",982,G__TVamosPlasticDataDict_162_0_12, 67, -1, -1, 0, 0, 3, 1, 1, "", (char*)NULL, (void*) G__func2void( (const char* (*)())(&TVamosPlasticData::Class_Name) ), 0);
+   G__memfunc_setup("Class_Version",1339,G__TVamosPlasticDataDict_162_0_13, 115, -1, G__defined_typename("Version_t"), 0, 0, 3, 1, 0, "", (char*)NULL, (void*) G__func2void( (Version_t (*)())(&TVamosPlasticData::Class_Version) ), 0);
+   G__memfunc_setup("Dictionary",1046,G__TVamosPlasticDataDict_162_0_14, 121, -1, -1, 0, 0, 3, 1, 0, "", (char*)NULL, (void*) G__func2void( (void (*)())(&TVamosPlasticData::Dictionary) ), 0);
+   G__memfunc_setup("IsA",253,(G__InterfaceMethod) NULL,85, G__get_linked_tagnum(&G__TVamosPlasticDataDictLN_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__TVamosPlasticDataDict_162_0_18, 121, -1, -1, 0, 1, 1, 1, 0, "u 'TBuffer' - 1 - b", (char*)NULL, (void*) NULL, 0);
+   G__memfunc_setup("DeclFileName",1145,G__TVamosPlasticDataDict_162_0_19, 67, -1, -1, 0, 0, 3, 1, 1, "", (char*)NULL, (void*) G__func2void( (const char* (*)())(&TVamosPlasticData::DeclFileName) ), 0);
+   G__memfunc_setup("ImplFileLine",1178,G__TVamosPlasticDataDict_162_0_20, 105, -1, -1, 0, 0, 3, 1, 0, "", (char*)NULL, (void*) G__func2void( (int (*)())(&TVamosPlasticData::ImplFileLine) ), 0);
+   G__memfunc_setup("ImplFileName",1171,G__TVamosPlasticDataDict_162_0_21, 67, -1, -1, 0, 0, 3, 1, 1, "", (char*)NULL, (void*) G__func2void( (const char* (*)())(&TVamosPlasticData::ImplFileName) ), 0);
+   G__memfunc_setup("DeclFileLine",1152,G__TVamosPlasticDataDict_162_0_22, 105, -1, -1, 0, 0, 3, 1, 0, "", (char*)NULL, (void*) G__func2void( (int (*)())(&TVamosPlasticData::DeclFileLine) ), 0);
+   // automatic copy constructor
+   G__memfunc_setup("TVamosPlasticData", 1700, G__TVamosPlasticDataDict_162_0_23, (int) ('i'), G__get_linked_tagnum(&G__TVamosPlasticDataDictLN_TVamosPlasticData), -1, 0, 1, 1, 1, 0, "u 'TVamosPlasticData' - 11 - -", (char*) NULL, (void*) NULL, 0);
+   // automatic destructor
+   G__memfunc_setup("~TVamosPlasticData", 1826, G__TVamosPlasticDataDict_162_0_24, (int) ('y'), -1, -1, 0, 0, 1, 1, 0, "", (char*) NULL, (void*) NULL, 1);
+   // automatic assignment operator
+   G__memfunc_setup("operator=", 937, G__TVamosPlasticDataDict_162_0_25, (int) ('u'), G__get_linked_tagnum(&G__TVamosPlasticDataDictLN_TVamosPlasticData), -1, 1, 1, 1, 1, 0, "u 'TVamosPlasticData' - 11 - -", (char*) NULL, (void*) NULL, 0);
+   G__tag_memfunc_reset();
+}
+
+
+/*********************************************************
+* Member function information setup
+*********************************************************/
+extern "C" void G__cpp_setup_memfuncTVamosPlasticDataDict() {
+}
+
+/*********************************************************
+* 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() {
+
+   G__resetglobalenv();
+}
+extern "C" void G__cpp_setup_globalTVamosPlasticDataDict() {
+  G__cpp_setup_global0();
+  G__cpp_setup_global1();
+}
+
+/*********************************************************
+* 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_funcTVamosPlasticDataDict() {
+  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__TVamosPlasticDataDictLN_TClass = { "TClass" , 99 , -1 };
+G__linked_taginfo G__TVamosPlasticDataDictLN_TBuffer = { "TBuffer" , 99 , -1 };
+G__linked_taginfo G__TVamosPlasticDataDictLN_TMemberInspector = { "TMemberInspector" , 99 , -1 };
+G__linked_taginfo G__TVamosPlasticDataDictLN_TObject = { "TObject" , 99 , -1 };
+G__linked_taginfo G__TVamosPlasticDataDictLN_vectorlEROOTcLcLTSchemaHelpercOallocatorlEROOTcLcLTSchemaHelpergRsPgR = { "vector<ROOT::TSchemaHelper,allocator<ROOT::TSchemaHelper> >" , 99 , -1 };
+G__linked_taginfo G__TVamosPlasticDataDictLN_reverse_iteratorlEvectorlEROOTcLcLTSchemaHelpercOallocatorlEROOTcLcLTSchemaHelpergRsPgRcLcLiteratorgR = { "reverse_iterator<vector<ROOT::TSchemaHelper,allocator<ROOT::TSchemaHelper> >::iterator>" , 99 , -1 };
+G__linked_taginfo G__TVamosPlasticDataDictLN_vectorlETVirtualArraymUcOallocatorlETVirtualArraymUgRsPgR = { "vector<TVirtualArray*,allocator<TVirtualArray*> >" , 99 , -1 };
+G__linked_taginfo G__TVamosPlasticDataDictLN_reverse_iteratorlEvectorlETVirtualArraymUcOallocatorlETVirtualArraymUgRsPgRcLcLiteratorgR = { "reverse_iterator<vector<TVirtualArray*,allocator<TVirtualArray*> >::iterator>" , 99 , -1 };
+G__linked_taginfo G__TVamosPlasticDataDictLN_TVamosPlasticData = { "TVamosPlasticData" , 99 , -1 };
+
+/* Reset class/struct taginfo */
+extern "C" void G__cpp_reset_tagtableTVamosPlasticDataDict() {
+  G__TVamosPlasticDataDictLN_TClass.tagnum = -1 ;
+  G__TVamosPlasticDataDictLN_TBuffer.tagnum = -1 ;
+  G__TVamosPlasticDataDictLN_TMemberInspector.tagnum = -1 ;
+  G__TVamosPlasticDataDictLN_TObject.tagnum = -1 ;
+  G__TVamosPlasticDataDictLN_vectorlEROOTcLcLTSchemaHelpercOallocatorlEROOTcLcLTSchemaHelpergRsPgR.tagnum = -1 ;
+  G__TVamosPlasticDataDictLN_reverse_iteratorlEvectorlEROOTcLcLTSchemaHelpercOallocatorlEROOTcLcLTSchemaHelpergRsPgRcLcLiteratorgR.tagnum = -1 ;
+  G__TVamosPlasticDataDictLN_vectorlETVirtualArraymUcOallocatorlETVirtualArraymUgRsPgR.tagnum = -1 ;
+  G__TVamosPlasticDataDictLN_reverse_iteratorlEvectorlETVirtualArraymUcOallocatorlETVirtualArraymUgRsPgRcLcLiteratorgR.tagnum = -1 ;
+  G__TVamosPlasticDataDictLN_TVamosPlasticData.tagnum = -1 ;
+}
+
+
+extern "C" void G__cpp_setup_tagtableTVamosPlasticDataDict() {
+
+   /* Setting up class,struct,union tag entry */
+   G__get_linked_tagnum_fwd(&G__TVamosPlasticDataDictLN_TClass);
+   G__get_linked_tagnum_fwd(&G__TVamosPlasticDataDictLN_TBuffer);
+   G__get_linked_tagnum_fwd(&G__TVamosPlasticDataDictLN_TMemberInspector);
+   G__get_linked_tagnum_fwd(&G__TVamosPlasticDataDictLN_TObject);
+   G__get_linked_tagnum_fwd(&G__TVamosPlasticDataDictLN_vectorlEROOTcLcLTSchemaHelpercOallocatorlEROOTcLcLTSchemaHelpergRsPgR);
+   G__get_linked_tagnum_fwd(&G__TVamosPlasticDataDictLN_reverse_iteratorlEvectorlEROOTcLcLTSchemaHelpercOallocatorlEROOTcLcLTSchemaHelpergRsPgRcLcLiteratorgR);
+   G__get_linked_tagnum_fwd(&G__TVamosPlasticDataDictLN_vectorlETVirtualArraymUcOallocatorlETVirtualArraymUgRsPgR);
+   G__get_linked_tagnum_fwd(&G__TVamosPlasticDataDictLN_reverse_iteratorlEvectorlETVirtualArraymUcOallocatorlETVirtualArraymUgRsPgRcLcLiteratorgR);
+   G__tagtable_setup(G__get_linked_tagnum_fwd(&G__TVamosPlasticDataDictLN_TVamosPlasticData),sizeof(TVamosPlasticData),-1,29952,"VamosPlasticData structure",G__setup_memvarTVamosPlasticData,G__setup_memfuncTVamosPlasticData);
+}
+extern "C" void G__cpp_setupTVamosPlasticDataDict(void) {
+  G__check_setup_version(30051515,"G__cpp_setupTVamosPlasticDataDict()");
+  G__set_cpp_environmentTVamosPlasticDataDict();
+  G__cpp_setup_tagtableTVamosPlasticDataDict();
+
+  G__cpp_setup_inheritanceTVamosPlasticDataDict();
+
+  G__cpp_setup_typetableTVamosPlasticDataDict();
+
+  G__cpp_setup_memvarTVamosPlasticDataDict();
+
+  G__cpp_setup_memfuncTVamosPlasticDataDict();
+  G__cpp_setup_globalTVamosPlasticDataDict();
+  G__cpp_setup_funcTVamosPlasticDataDict();
+
+   if(0==G__getsizep2memfunc()) G__get_sizep2memfuncTVamosPlasticDataDict();
+  return;
+}
+class G__cpp_setup_initTVamosPlasticDataDict {
+  public:
+    G__cpp_setup_initTVamosPlasticDataDict() { G__add_setup_func("TVamosPlasticDataDict",(G__incsetup)(&G__cpp_setupTVamosPlasticDataDict)); G__call_setup_funcs(); }
+   ~G__cpp_setup_initTVamosPlasticDataDict() { G__remove_setup_func("TVamosPlasticDataDict"); }
+};
+G__cpp_setup_initTVamosPlasticDataDict G__cpp_setup_initializerTVamosPlasticDataDict;
+
diff --git a/NPLib/Vamos/TVamosPlasticDataDict.h b/NPLib/Vamos/TVamosPlasticDataDict.h
new file mode 100644
index 0000000000000000000000000000000000000000..a096865c280d99ac6adec50d00a7facd7ddae460
--- /dev/null
+++ b/NPLib/Vamos/TVamosPlasticDataDict.h
@@ -0,0 +1,52 @@
+/********************************************************************
+* TVamosPlasticDataDict.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 TVamosPlasticDataDict.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_tagtableTVamosPlasticDataDict();
+extern void G__cpp_setup_inheritanceTVamosPlasticDataDict();
+extern void G__cpp_setup_typetableTVamosPlasticDataDict();
+extern void G__cpp_setup_memvarTVamosPlasticDataDict();
+extern void G__cpp_setup_globalTVamosPlasticDataDict();
+extern void G__cpp_setup_memfuncTVamosPlasticDataDict();
+extern void G__cpp_setup_funcTVamosPlasticDataDict();
+extern void G__set_cpp_environmentTVamosPlasticDataDict();
+}
+
+
+#include "TObject.h"
+#include "TMemberInspector.h"
+#include "TVamosPlasticData.h"
+#include <algorithm>
+namespace std { }
+using namespace std;
+
+#ifndef G__MEMFUNCBODY
+#endif
+
+extern G__linked_taginfo G__TVamosPlasticDataDictLN_TClass;
+extern G__linked_taginfo G__TVamosPlasticDataDictLN_TBuffer;
+extern G__linked_taginfo G__TVamosPlasticDataDictLN_TMemberInspector;
+extern G__linked_taginfo G__TVamosPlasticDataDictLN_TObject;
+extern G__linked_taginfo G__TVamosPlasticDataDictLN_vectorlEROOTcLcLTSchemaHelpercOallocatorlEROOTcLcLTSchemaHelpergRsPgR;
+extern G__linked_taginfo G__TVamosPlasticDataDictLN_reverse_iteratorlEvectorlEROOTcLcLTSchemaHelpercOallocatorlEROOTcLcLTSchemaHelpergRsPgRcLcLiteratorgR;
+extern G__linked_taginfo G__TVamosPlasticDataDictLN_vectorlETVirtualArraymUcOallocatorlETVirtualArraymUgRsPgR;
+extern G__linked_taginfo G__TVamosPlasticDataDictLN_reverse_iteratorlEvectorlETVirtualArraymUcOallocatorlETVirtualArraymUgRsPgRcLcLiteratorgR;
+extern G__linked_taginfo G__TVamosPlasticDataDictLN_TVamosPlasticData;
+
+/* STUB derived class for protected member access */
diff --git a/NPSimulation/include/AnnularS1.hh b/NPSimulation/include/AnnularS1.hh
index 50a8cbfccda7a4d893e2c647e4c057075d51ebc2..2805c6865c47639a86c688b7c7c3e7185aee8aa1 100644
--- a/NPSimulation/include/AnnularS1.hh
+++ b/NPSimulation/include/AnnularS1.hh
@@ -25,6 +25,7 @@
 
 // C++ headers
 #include <vector>
+using namespace std;
 
 // NPTool header
 #include "VDetector.hh"
@@ -32,8 +33,8 @@
 // NPTool - ROOT headers
 #include "TS1Data.h"
 
-using namespace std;
-
+// Geant4Header
+#include "G4MultiFunctionalDetector.hh"
 
 
 class AnnularS1 : public VDetector
diff --git a/NPSimulation/include/ComptonTelescope.hh b/NPSimulation/include/ComptonTelescope.hh
new file mode 100755
index 0000000000000000000000000000000000000000..7e4b1cd28f75629ff4f707c21e5da5ab90a84b1c
--- /dev/null
+++ b/NPSimulation/include/ComptonTelescope.hh
@@ -0,0 +1,192 @@
+/*****************************************************************************
+ * 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: N. de Sereville  contact address: deserevi@ipno.in2p3.fr *
+ *                                                                           *
+ * Creation Date  : 10/06/09                                                 *
+ * Last update    :                                                          *
+ *---------------------------------------------------------------------------*
+ * Decription: Define a module of square shape for the Gaspard tracker       *
+ *                                                                           *
+ *---------------------------------------------------------------------------*
+ * Comment:                                                                  *
+ *                                                                           *
+ *                                                                           *
+ *****************************************************************************/
+
+#ifndef ComptonTelescope_h
+#define ComptonTelescope_h 1
+
+// NPTool headers
+#include "VDetector.hh"
+#include "TComptonTelescopeData.h"
+#include "TComptonTelescopeProcessData.h"
+
+// Geant4 headers
+#include "G4SDManager.hh"
+#include "G4MultiFunctionalDetector.hh"
+#include "G4Event.hh"
+
+// C++ headers
+#include <vector>
+using namespace std;
+
+
+
+class ComptonTelescope : public VDetector
+//class ComptonTelescope
+{
+   ////////////////////////////////////////////////////
+   /////// Default Constructor and Destructor /////////
+   ////////////////////////////////////////////////////
+public:
+   ComptonTelescope();
+   virtual ~ComptonTelescope();
+
+   ////////////////////////////////////////////////////
+   //////// Specific Function of this Class ///////////
+   ////////////////////////////////////////////////////
+public:
+   // By Position Method
+   void AddModule(G4ThreeVector TL           ,
+                  G4ThreeVector BL           ,
+                  G4ThreeVector BR           ,
+                  G4ThreeVector CT           ,
+                  bool          wTracker  ,
+                  bool          wCalorimeter);
+
+   // By Angle Method
+   void AddModule(G4double R            ,
+                  G4double Theta        ,
+                  G4double Phi          ,
+                  G4double beta_u       ,
+                  G4double beta_v       ,
+                  G4double beta_w       ,
+                  bool     wTracker  ,
+                  bool     wCalorimeter);
+
+   // Effectively construct Volume
+   // Avoid to have two time same code for Angle and Point definition
+   void VolumeMaker(G4int TelescopeNumber          ,
+                    G4ThreeVector     CTpos        ,
+                    G4RotationMatrix* CTrot        ,
+                    bool              wTracker  ,
+                    bool              wCalorimeter ,
+                    G4LogicalVolume*  world);
+
+
+   /////////////////////////////////////////
+   ////  Inherite from VDetector class /////
+   /////////////////////////////////////////
+public:
+   // Read stream at Configfile to pick-up parameters of detector (Position,...)
+   // Called in DetecorConstruction::ReadDetextorConfiguration Method
+   void ReadConfiguration(string Path);
+
+   // Construct detector and inialise sensitive part.
+   // Called After DetecorConstruction::AddDetector Method
+   void ConstructDetector(G4LogicalVolume* world);
+
+   // Add Detector branch to the EventTree.
+   // Called After DetecorConstruction::AddDetector Method
+   void InitializeRootOutput();
+
+   // Initialize all scorers necessary for the detector
+   void InitializeScorers();
+
+   // Read sensitive part and fill the Root tree.
+   // Called at in the EventAction::EndOfEventAvtion
+   void ReadSensitive(const G4Event* event);
+
+
+   ////////////////////////////////////////////////////
+   ///////////Event class to store Data////////////////
+   ////////////////////////////////////////////////////
+private:
+   TComptonTelescopeData*        m_Event;
+   TComptonTelescopeProcessData* m_ProcessEvent;
+
+
+   ////////////////////////////////////////////////////
+   ///////////////////// Scorer ///////////////////////
+   ////////////////////////////////////////////////////
+private:
+   // Silicon Associate Scorer
+   G4MultiFunctionalDetector* m_TrackerScorer;
+
+   // CsI Associate Scorer 
+   G4MultiFunctionalDetector* m_CalorimeterScorer;
+
+
+   ////////////////////////////////////////////////////
+   //////////////////// Material //////////////////////
+   ////////////////////////////////////////////////////
+private:
+   //   Declare all material used by the MUST2Array
+   void InitializeMaterial() ;
+   // Si
+   G4Material* m_MaterialSilicon;
+   // Al
+   G4Material* m_MaterialAluminium;
+   // CsI
+   G4Material* m_MaterialLaBr3;
+   //  Vacuum
+   G4Material* m_MaterialVacuum ;
+
+
+   ////////////////////////////////////////////////////
+   ///////////////Private intern Data//////////////////
+   ////////////////////////////////////////////////////
+private:
+   // True if Define by Position, False is Define by angle
+   vector<bool>   m_DefinitionType  ;
+
+   // Used for "By Point Definition"
+   vector<G4ThreeVector>   m_X1_Y1     ; // Top Left Corner Position Vector
+   vector<G4ThreeVector>   m_X1_Y128   ; // Bottom Left Corner Position Vector
+   vector<G4ThreeVector>   m_X128_Y1   ; // Bottom Right Corner Position Vector
+   vector<G4ThreeVector>   m_X128_Y128 ; // Center Corner Position Vector
+
+   // Used for "By Angle Definition"
+   vector<G4double>  m_R      ; //  |
+   vector<G4double>  m_Theta  ; //  > Spherical coordinate of Strips Silicium Plate
+   vector<G4double>  m_Phi    ; //  |
+
+   vector<G4double>  m_beta_u ; //  |
+   vector<G4double>  m_beta_v ; //  > Tilt angle of the Telescope
+   vector<G4double>  m_beta_w ; //  |
+
+   // Set to true if you want this stage on you telescope
+   vector<bool>      m_wTracker;
+   vector<bool>      m_wCalorimeter;
+
+   // Set to true if you want to see Telescope Frame in your visualisation
+   bool m_non_sensitive_part_visiualisation ;
+
+   G4int    m_NumberOfDSSSD;
+   G4int    m_SizeOfDSSSD;
+   G4int    m_NumberOfStrips;
+   G4double m_ThicknessOfDSSSD;
+   G4double m_DistanceInterDSSSD;
+   G4double m_ThicknessOfCalorimeter;
+   G4double m_DistanceTrackerCalorimeter;
+   G4double m_TowerHeight;
+};
+
+
+
+namespace COMPTONTELESCOPE
+{
+   // Resolution
+   const G4double EnergyResolutionTracker    = 0.0064;       // = 15 keV of Resolution   //   Unit is MeV/2.35
+   const G4double TimeResolutionTracker      = 0.212765957;  // = 500ps                 //   Unit is  ns/2.35
+   const G4double EnergyReolutionCalorimeter = 0.021;        // = 52keV of Resolution   //   Unit is MeV/2.35
+   const G4double TimeResolutionCalorimeter  = 0.212765957;  // = 500ps                 //   Unit is  ns/2.35
+}
+
+#endif
diff --git a/NPSimulation/include/ComptonTelescopeScorers.hh b/NPSimulation/include/ComptonTelescopeScorers.hh
new file mode 100755
index 0000000000000000000000000000000000000000..502212ac8fc51296fdafb3b9b14f31ab59d2f565
--- /dev/null
+++ b/NPSimulation/include/ComptonTelescopeScorers.hh
@@ -0,0 +1,225 @@
+/*****************************************************************************
+ * Copyright (C) 2009   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: M. Labiche  contact address: marc.labiche@stfc.ac.uk     *
+ *                                                                           *
+ * Creation Date  : 30/02/10                                                 *
+ * Last update    :                                                          *
+ *---------------------------------------------------------------------------*
+ * Decription: This class holds all the scorers needed by the                *
+ *             GaspardTracker*** objects.                                    *
+ *---------------------------------------------------------------------------*
+ * Comment:                                                                  *
+ *                                                                           *
+ *                                                                           *
+ *****************************************************************************/
+
+#ifndef ComptonTelescopeScorer_h
+#define ComptonTelescopeScorer_h 1
+
+#include "G4VPrimitiveScorer.hh"
+#include "G4THitsMap.hh"
+
+namespace COMPTONTELESCOPESCORERS
+{
+
+   class ComptonTelescopeScorerProcess : public G4VPrimitiveScorer
+   {
+      public: // with description
+         ComptonTelescopeScorerProcess(G4String name, G4String volumeName, G4String processName = "compt", G4int depth = 0);
+         virtual ~ComptonTelescopeScorerProcess();
+
+      protected: // with description
+         virtual G4bool ProcessHits(G4Step*, G4TouchableHistory*);
+
+      public:
+         virtual void Initialize(G4HCofThisEvent*);
+         virtual void EndOfEvent(G4HCofThisEvent*);
+         virtual void Clear();
+         virtual void DrawAll();
+         virtual void PrintAll();
+
+      private:
+         G4String m_VolumeName;
+         G4String m_ProcessName;
+         G4int HCID;
+         G4THitsMap<G4double>* EvtMap;
+   };
+
+
+
+   class ComptonTelescopeScorerTrackerTowerNumber : public G4VPrimitiveScorer
+   {
+      public: // with description
+         ComptonTelescopeScorerTrackerTowerNumber(G4String name, G4String volumeName, G4int depth = 0);
+         virtual ~ComptonTelescopeScorerTrackerTowerNumber();
+
+      protected: // with description
+         virtual G4bool ProcessHits(G4Step*, G4TouchableHistory*);
+
+      public:
+         virtual void Initialize(G4HCofThisEvent*);
+         virtual void EndOfEvent(G4HCofThisEvent*);
+         virtual void Clear();
+         virtual void DrawAll();
+         virtual void PrintAll();
+
+      private:
+         G4String m_VolumeName;
+         G4int HCID;
+         G4THitsMap<G4int>* EvtMap;
+   };
+
+
+
+   class ComptonTelescopeScorerTrackerDSSSDNumber : public G4VPrimitiveScorer
+   {
+      public: // with description
+         ComptonTelescopeScorerTrackerDSSSDNumber(G4String name, G4String volumeName, G4int depth = 0);
+         virtual ~ComptonTelescopeScorerTrackerDSSSDNumber();
+
+      protected: // with description
+         virtual G4bool ProcessHits(G4Step*, G4TouchableHistory*);
+
+      public:
+         virtual void Initialize(G4HCofThisEvent*);
+         virtual void EndOfEvent(G4HCofThisEvent*);
+         virtual void Clear();
+         virtual void DrawAll();
+         virtual void PrintAll();
+
+      private:
+         G4String m_VolumeName;
+         G4int HCID;
+         G4THitsMap<G4int>* EvtMap;
+   };
+
+
+
+   class ComptonTelescopeScorerTrackerEnergy : public G4VPrimitiveScorer
+   {
+      public: // with description
+         ComptonTelescopeScorerTrackerEnergy(G4String name, G4String volumeName, G4int depth = 0);
+         virtual ~ComptonTelescopeScorerTrackerEnergy();
+
+      protected: // with description
+         virtual G4bool ProcessHits(G4Step*, G4TouchableHistory*);
+
+      public:
+         virtual void Initialize(G4HCofThisEvent*);
+         virtual void EndOfEvent(G4HCofThisEvent*);
+         virtual void Clear();
+         virtual void DrawAll();
+         virtual void PrintAll();
+
+      private:
+         G4String m_VolumeName;
+         G4int HCID;
+         G4THitsMap<G4double>* EvtMap;
+   };
+
+
+
+
+   class ComptonTelescopeScorerTrackerTOF : public G4VPrimitiveScorer
+   {
+      public: // with description
+         ComptonTelescopeScorerTrackerTOF(G4String name, G4String volumeName, G4int depth = 0);
+         virtual ~ComptonTelescopeScorerTrackerTOF();
+
+      protected: // with description
+         virtual G4bool ProcessHits(G4Step*, G4TouchableHistory*);
+
+      public:
+         virtual void Initialize(G4HCofThisEvent*);
+         virtual void EndOfEvent(G4HCofThisEvent*);
+         virtual void Clear();
+         virtual void DrawAll();
+         virtual void PrintAll();
+
+      private:
+         G4String m_VolumeName;
+         G4int HCID;
+         G4THitsMap<G4double>* EvtMap;
+   };
+
+
+
+   class ComptonTelescopeScorerCalorimeterTowerNumber : public G4VPrimitiveScorer
+   {
+      public: // with description
+         ComptonTelescopeScorerCalorimeterTowerNumber(G4String name, G4String volumeName, G4int depth = 0);
+         virtual ~ComptonTelescopeScorerCalorimeterTowerNumber();
+
+      protected: // with description
+         virtual G4bool ProcessHits(G4Step*, G4TouchableHistory*);
+
+      public:
+         virtual void Initialize(G4HCofThisEvent*);
+         virtual void EndOfEvent(G4HCofThisEvent*);
+         virtual void Clear();
+         virtual void DrawAll();
+         virtual void PrintAll();
+
+      private:
+         G4String m_VolumeName;
+         G4int HCID;
+         G4THitsMap<G4int>* EvtMap;
+   };
+
+
+
+   class ComptonTelescopeScorerCalorimeterDetectorNumber : public G4VPrimitiveScorer
+   {
+      public: // with description
+         ComptonTelescopeScorerCalorimeterDetectorNumber(G4String name, G4String volumeName, G4int depth = 0);
+         virtual ~ComptonTelescopeScorerCalorimeterDetectorNumber();
+
+      protected: // with description
+         virtual G4bool ProcessHits(G4Step*, G4TouchableHistory*);
+
+      public:
+         virtual void Initialize(G4HCofThisEvent*);
+         virtual void EndOfEvent(G4HCofThisEvent*);
+         virtual void Clear();
+         virtual void DrawAll();
+         virtual void PrintAll();
+
+      private:
+         G4String m_VolumeName;
+         G4int HCID;
+         G4THitsMap<G4int>* EvtMap;
+   };
+
+
+   class ComptonTelescopeScorerCalorimeterEnergy : public G4VPrimitiveScorer
+   {
+      public: // with description
+         ComptonTelescopeScorerCalorimeterEnergy(G4String name, G4String volumeName, G4int depth = 0);
+         virtual ~ComptonTelescopeScorerCalorimeterEnergy();
+
+      protected: // with description
+         virtual G4bool ProcessHits(G4Step*, G4TouchableHistory*);
+
+      public:
+         virtual void Initialize(G4HCofThisEvent*);
+         virtual void EndOfEvent(G4HCofThisEvent*);
+         virtual void Clear();
+         virtual void DrawAll();
+         virtual void PrintAll();
+
+      private:
+         G4String m_VolumeName;
+         G4int HCID;
+         G4THitsMap<G4double>* EvtMap;
+   };
+
+}
+
+using namespace COMPTONTELESCOPESCORERS;
+#endif
diff --git a/NPSimulation/include/DetectorConstruction.hh b/NPSimulation/include/DetectorConstruction.hh
index 48a79b434bfcc7b5362012110bca6c981d85b8f7..e3b63699879ac04b16ab36fce3454518d864a853 100644
--- a/NPSimulation/include/DetectorConstruction.hh
+++ b/NPSimulation/include/DetectorConstruction.hh
@@ -73,11 +73,11 @@ private:
 
 private: // Data about the target
    Target*  m_Target;
-   Chamber*  m_Chamber;
+   Chamber* m_Chamber;
 
 public:  // Getter and Setter
    Target*  GetTarget()    {return m_Target;}
-   Chamber*  GetChamber()  {return m_Chamber;}
+   Chamber* GetChamber()   {return m_Chamber;}
 };
 
 #endif
diff --git a/NPSimulation/include/Eurogam.hh b/NPSimulation/include/Eurogam.hh
new file mode 100755
index 0000000000000000000000000000000000000000..de98ef5a8495a1c77d2e7526d77c98b862e74412
--- /dev/null
+++ b/NPSimulation/include/Eurogam.hh
@@ -0,0 +1,150 @@
+#ifndef Eurogam_h
+#define Eurogam_h 1
+/*****************************************************************************
+ * Copyright (C) 2009   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: N. de Sereville  contact address: deserevi@ipno.in2p3.fr *
+ *                                                                           *
+ * Creation Date  : December 2010                                            *
+ * Last update    :                                                          *
+ *---------------------------------------------------------------------------*
+ * Decription:                                                               *
+ *     This class describes the Eurogam germanium detector                   *
+ *                                                                           *
+ *---------------------------------------------------------------------------*
+ * Comment:                                                                  *
+ *                                                                           *
+ *****************************************************************************/
+
+// C++ header
+#include <string>
+#include <vector>
+
+// G4 header defining G4 types
+#include "globals.hh"
+
+// G4 headers
+#include "G4ThreeVector.hh"
+#include "G4RotationMatrix.hh"
+#include "G4LogicalVolume.hh"
+#include "G4SDManager.hh"
+#include "G4MultiFunctionalDetector.hh"
+
+// NPTool header
+#include "VDetector.hh"
+#include "TEurogamData.h"
+
+using namespace std;
+
+class Eurogam : public VDetector
+{
+   ////////////////////////////////////////////////////
+   /////// Default Constructor and Destructor /////////
+   ////////////////////////////////////////////////////
+public:
+   Eurogam() ;
+   virtual ~Eurogam() ;
+
+   ////////////////////////////////////////////////////
+   //////// Specific Function of this Class ///////////
+   ////////////////////////////////////////////////////
+public:
+   // By Angle Method
+   void AddEurogamModule(G4double R, G4double Theta, G4double Phi,
+                         G4double beta_u, G4double beta_v, G4double beta_w);
+
+   void VolumeMaker(G4int             DetectorNumber, 
+                    G4ThreeVector     DetectorPosition, 
+                    G4RotationMatrix* DetectorRotation,
+                    G4LogicalVolume*  world);
+
+
+   ////////////////////////////////////////////////////
+   /////////  Inherite from VDetector class ///////////
+   ////////////////////////////////////////////////////
+public:
+   // Read stream at Configfile to pick-up parameters of detector (Position,...)
+   // Called in DetecorConstruction::ReadDetextorConfiguration Method
+   void ReadConfiguration(string Path);
+
+   // Construct detector and inialise sensitive part.
+   // Called After DetecorConstruction::AddDetector Method
+   void ConstructDetector(G4LogicalVolume* world);
+
+   // Add Detector branch to the EventTree.
+   // Called After DetecorConstruction::AddDetector Method
+   void InitializeRootOutput();
+
+   // Read sensitive part and fill the Root tree.
+   // Called at in the EventAction::EndOfEventAvtion
+   void ReadSensitive(const G4Event* event);
+
+
+   /////////////////////////////////////////////////
+   /////////////////// Materials ///////////////////
+   /////////////////////////////////////////////////
+private:
+   void InitializeMaterial();
+   G4Material* m_Material_Vacuum;
+   G4Material* m_Material_Aluminium;
+   G4Material* m_Material_Silicon;
+   G4Material* m_Material_Germanium;
+
+
+   /////////////////////////////////////////////////
+   //////////////////// Scorers ////////////////////
+   /////////////////////////////////////////////////
+public:
+   // Initialize all Scorer used by Eurogam
+   void InitializeScorers();
+
+private:
+   // Eurogam Scorer
+   G4MultiFunctionalDetector* m_EurogamScorer;
+
+
+   ////////////////////////////////////////////////////
+   ///////////Event class to store Data////////////////
+   ////////////////////////////////////////////////////
+private:
+   TEurogamData* m_Event;
+
+
+   ////////////////////////////////////////////////////
+   ///////////////Private intern Data//////////////////
+   ////////////////////////////////////////////////////
+private:
+   // Used for "By Angle Definition"
+   vector<G4double>  m_R;     //  |
+   vector<G4double>  m_Theta; //  > Spherical coordinate Eurogam volume center
+   vector<G4double>  m_Phi;   //  |
+   vector<G4double>  m_beta_u; //  |
+   vector<G4double>  m_beta_v; //  > Tilt angle of the detector
+   vector<G4double>  m_beta_w; //  |
+};
+
+
+//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
+namespace EUROGAMDETECTOR
+{
+   // Energy and time Resolution
+   const G4double ResoTime    = 4.2             ;// = 10ns of Resolution   //   Unit is MeV/2.35
+   const G4double ResoEnergy  = 0.2             ;// Resolution in %
+
+   // Geometry
+   const G4double EurogamSize  =  90*mm;
+   const G4double EurogamDepth = 280*mm;
+
+   // definition of the 
+//   const G4double 
+
+   // Definition of the crystal
+//   const G4double CrystalLength = 
+}
+
+#endif
diff --git a/NPSimulation/include/GaspardTrackerAnnular.hh b/NPSimulation/include/GaspardTrackerAnnular.hh
index 0588131883a00af6362f2c88d0243c5bf65dd543..3e6ab8b68d8c08e92b4620397efdc4fe565e1350 100644
--- a/NPSimulation/include/GaspardTrackerAnnular.hh
+++ b/NPSimulation/include/GaspardTrackerAnnular.hh
@@ -121,11 +121,9 @@ private:
 namespace GPDANNULAR
 {
    // Energy/Time resolutions for the different layers
-   const G4double ResoFirstStage  = 0              ;// = 52keV of Resolution   //   Unit is MeV/2.35
-//   const G4double ResoFirstStage  = 0.022          ;// = 52keV of Resolution   //   Unit is MeV/2.35
-   const G4double ResoSecondStage = 0.055          ;// = 130 keV of resolution //   Unit is MeV/2.35
-   const G4double ResoThirdStage  = 0              ;// = 100 keV of resolution //   Unit is MeV/2.35
-//   const G4double ResoThirdStage  = 0.043          ;// = 100 kev of resolution //   Unit is MeV/2.35
+   const G4double ResoFirstStage  = 0.021          ;// = 52keV of Resolution   //   Unit is MeV/2.35
+   const G4double ResoSecondStage = 0.043          ;// = 100 keV of resolution //   Unit is MeV/2.35
+   const G4double ResoThirdStage  = 0.043          ;// = 100 kev of resolution //   Unit is MeV/2.35
    const G4double ResoTimeGpd     = 0.212765957    ;// = 500ps                 //   Unit is  ns/2.35
    const G4double ResoTimePPAC    = 0.106382979    ;// = 250ps                 //   Unit is  ns/2.35
 
diff --git a/NPSimulation/include/GaspardTrackerSquare.hh b/NPSimulation/include/GaspardTrackerSquare.hh
index 97354b96fc20f726f84f980efe49f611f603fabc..6d699163276372f2a93d420272e3a6bf7e252461 100644
--- a/NPSimulation/include/GaspardTrackerSquare.hh
+++ b/NPSimulation/include/GaspardTrackerSquare.hh
@@ -139,11 +139,9 @@ private:
 namespace GPDSQUARE
 {
    // Resolution
-   const G4double ResoFirstStage  = 0              ;// = 52keV of Resolution   //   Unit is MeV/2.35
-//   const G4double ResoFirstStage  = 0.022          ;// = 52keV of Resolution   //   Unit is MeV/2.35
-   const G4double ResoSecondStage = 0.055          ;// = 130 keV of resolution //   Unit is MeV/2.35
-   const G4double ResoThirdStage  = 0              ;// = 100 keV of resolution //   Unit is MeV/2.35
-//   const G4double ResoThirdStage  = 0.043          ;// = 100 kev of resolution //   Unit is MeV/2.35
+   const G4double ResoFirstStage  = 0.021          ;// = 52keV of Resolution   //   Unit is MeV/2.35
+   const G4double ResoSecondStage = 0.043          ;// = 130 keV of resolution //   Unit is MeV/2.35
+   const G4double ResoThirdStage  = 0.043          ;// = 100 kev of resolution //   Unit is MeV/2.35
    const G4double ResoTimeGpd     = 0.212765957    ;// = 500ps                 //   Unit is  ns/2.35
    const G4double ResoTimePPAC    = 0.106382979    ;// = 250ps                 //   Unit is  ns/2.35
 
diff --git a/NPSimulation/include/GaspardTrackerTrapezoid.hh b/NPSimulation/include/GaspardTrackerTrapezoid.hh
index ec2c74028ead60e1d1cf1887928dc94855fbadd2..c5578b7c833a8440d8b1271adfdfd2d07b14f193 100644
--- a/NPSimulation/include/GaspardTrackerTrapezoid.hh
+++ b/NPSimulation/include/GaspardTrackerTrapezoid.hh
@@ -139,11 +139,9 @@ private:
 namespace GPDTRAP
 {
    // Energy/Time resolutions for the different layers
-   const G4double ResoFirstStage  = 0              ;// = 52keV of Resolution   //   Unit is MeV/2.35
-//   const G4double ResoFirstStage  = 0.022          ;// = 52keV of Resolution   //   Unit is MeV/2.35
-   const G4double ResoSecondStage = 0.055          ;// = 130 keV of resolution //   Unit is MeV/2.35
-   const G4double ResoThirdStage  = 0              ;// = 100 keV of resolution //   Unit is MeV/2.35
-//   const G4double ResoThirdStage  = 0.043          ;// = 100 kev of resolution //   Unit is MeV/2.35
+   const G4double ResoFirstStage  = 0.021          ;// = 52keV of Resolution   //   Unit is MeV/2.35
+   const G4double ResoSecondStage = 0.043          ;// = 130 keV of resolution //   Unit is MeV/2.35
+   const G4double ResoThirdStage  = 0.043          ;// = 100 kev of resolution //   Unit is MeV/2.35
    const G4double ResoTimeGpd     = 0.212765957    ;// = 500ps                 //   Unit is  ns/2.35
    const G4double ResoTimePPAC    = 0.106382979    ;// = 250ps                 //   Unit is  ns/2.35
 
diff --git a/NPSimulation/include/ParisCluster.hh b/NPSimulation/include/ParisCluster.hh
index da11f06369b13e68c69b8bd6c97d951f3ae9efb1..5b9e497adef65f791d7f49fe4a41bb3d932aa735 100644
--- a/NPSimulation/include/ParisCluster.hh
+++ b/NPSimulation/include/ParisCluster.hh
@@ -95,7 +95,7 @@ public:
    // deriving from ParisModule
    // This is mandatory since the Paris*** does not derive from VDetector
    void SetInterCoordPointer(TInteractionCoordinates* interCoord);
-   TInteractionCoordinates* GetInterCoordPointer()   {return ms_InterCoord;};
+   TInteractionCoordinates* GetInterCoordPointer()	{return ms_InterCoord;};
 
 
    ////////////////////////////////////////////////////
@@ -133,26 +133,30 @@ private:
 namespace PARISCLUSTER
 {
    // Resolution
-//   const G4double ResoFirstStage  = 0;   // = 50 keV of Resolution   //   Unit is MeV/2.35
-   const G4double ResoFirstStage  = 0.0085;   // = 3% at .662 MeV of Resolution   //   Unit is MeV/2.35
-   const G4double ResoSecondStage = 0.0366;   // = 13% at .662 MeV of resolution //   Unit is MeV/2.35
-   const G4double ResoThirdStage  = 0.0;   // = 50 keV of resolution //   Unit is MeV/2.35
+//   const G4double ResoFirstStage  = 0;	// = 50 keV of Resolution   //   Unit is MeV/2.35
+   const G4double ResoFirstStage  = 0.0085;	// = 3% at .662 MeV of Resolution   //   Unit is MeV/2.35
+   const G4double ResoSecondStage = 0.0366;	// = 13% at .662 MeV of resolution //   Unit is MeV/2.35
+   const G4double ResoThirdStage  = 0.0;	// = 50 keV of resolution //   Unit is MeV/2.35
    const G4double ResoTimeGpd     = 0.212765957;// = 500ps                 //   Unit is  ns/2.35
 
    // Geometry for the mother volume containing the different layers of your dummy shape module
    const G4double FaceFront          = 16.9*cm;
    const G4double FaceBack           = 16.9*cm;
-   const G4double Length             = 21*cm;
+  //const G4double Length             = 21*cm; // for 2x2x2 LaBr + 2x2x6 NaI
+   const G4double Length             = 23.6*cm; // for 2x2x3 LaBr + 2x2x6 NaI
 
    // Geometry for the phoswitch
    // LaBr3
    const G4double LaBr3Face       = 5.08*cm;
-   const G4double LaBr3Thickness  = 5.08*cm;
+  //const G4double LaBr3Thickness  = 5.08*cm; // for phoswich 2x2x2
+   const G4double LaBr3Thickness  = 7.62*cm; // for phoswich 2x2x3
+  //const G4double LaBr3Thickness  = 15.24*cm; // for long LaBr3 2x2x6
    const G4double InterSpace  = 0.3*cm;
 
    // CsI
    const G4double CsIFace      = LaBr3Face;
-   const G4double CsIThickness = 15.24*cm;
+   const G4double CsIThickness = 15.24*cm; // for phoswich 2x2x6
+  //const G4double CsIThickness = 0.001*cm; // for long LaBr3
 
    // Starting form the LaBr3 and going to the CsI
    const G4double LaBr3Stage_PosZ  = Length* -0.5 + 0.5*LaBr3Thickness;
diff --git a/NPSimulation/include/ParisPhoswich.hh b/NPSimulation/include/ParisPhoswich.hh
index 650fff8c1c1f918ffe3c7386315ec980641ba84a..68a86c41d7c2925af4f42fd2ad0fac534c3b8113 100644
--- a/NPSimulation/include/ParisPhoswich.hh
+++ b/NPSimulation/include/ParisPhoswich.hh
@@ -95,7 +95,7 @@ public:
    // deriving from ParisModule
    // This is mandatory since the Paris*** does not derive from VDetector
    void SetInterCoordPointer(TInteractionCoordinates* interCoord);
-   TInteractionCoordinates* GetInterCoordPointer()   {return ms_InterCoord;};
+   TInteractionCoordinates* GetInterCoordPointer()	{return ms_InterCoord;};
 
 
    ////////////////////////////////////////////////////
@@ -138,25 +138,29 @@ namespace PARISPHOSWICH
 
 
    // Resolution
-//   const G4double ResoFirstStage  = 0;   // = 50 keV of Resolution   //   Unit is MeV/2.35
-     const G4double ResoFirstStage  = 0.0099;   // = 3.5% at .662MeV of Resolution   //   Unit is MeV/2.35
-     const G4double ResoSecondStage = 0.0366;   // = 13% at .662 MeV of resolution //   Unit is MeV/2.35
-   const G4double ResoThirdStage  = 0.0213;   // = 50 keV of resolution //   Unit is MeV/2.35
+//   const G4double ResoFirstStage  = 0;	// = 50 keV of Resolution   //   Unit is MeV/2.35
+     const G4double ResoFirstStage  = 0.0099;	// = 3.5% at .662MeV of Resolution   //   Unit is MeV/2.35
+     const G4double ResoSecondStage = 0.0366;	// = 13% at .662 MeV of resolution //   Unit is MeV/2.35
+   const G4double ResoThirdStage  = 0.0213;	// = 50 keV of resolution //   Unit is MeV/2.35
    const G4double ResoTimeGpd     = 0.212765957;// = 500ps                 //   Unit is  ns/2.35
 
    // Geometry for the mother volume containing the different layers of your dummy shape module
   const G4double FaceFront          = 5.7*cm; //6.3*cm;
   const G4double FaceBack           = 5.7*cm; //6.3*cm;
-   const G4double Length             = 21*cm;
+  //const G4double Length             = 21*cm; // for 2x2x2 LaBr + 2x2x6 NaI
+  const G4double Length             = 23.6*cm;// for 2x2x3 LaBr + 2x2x6 NaI
 
    // Geometry for the phoswitch
    // LaBr3
    const G4double LaBr3Face       = 5.08*cm;
-   const G4double LaBr3Thickness  = 5.08*cm;
+  //const G4double LaBr3Thickness  = 5.08*cm; // for phoswich 2x2x2
+   const G4double LaBr3Thickness  = 7.62*cm; // for phoswich 2x2x3
+  //const G4double LaBr3Thickness  = 15.24*cm; // for LaBr3 long 2x2x6 inches
 
    // CsI
    const G4double CsIFace      = LaBr3Face;
-   const G4double CsIThickness = 15.24*cm;
+   const G4double CsIThickness = 15.24*cm; // for phoswich
+  //const G4double CsIThickness = 0.001*cm; // For LaBr long
 
    // Starting form the LaBr3 and going to the CsI
    const G4double LaBr3Stage_PosZ  = Length* -0.5 + 0.5*LaBr3Thickness;
diff --git a/NPSimulation/include/ParisScorers.hh b/NPSimulation/include/ParisScorers.hh
index 3fdd99c7ee2208731f2f11ced2cb6150a70d71ca..9ed0bd205b99e37b66e0ac7a5262eb325dc11595 100644
--- a/NPSimulation/include/ParisScorers.hh
+++ b/NPSimulation/include/ParisScorers.hh
@@ -146,6 +146,29 @@ private:
    G4THitsMap<G4int>* EvtMap;
 };
 
+// Added by Anna
+class PARISScorerCsIStageCrystalNumber : public G4VPrimitiveScorer
+{
+public: // with description
+   PARISScorerCsIStageCrystalNumber(G4String name, G4String volumeName, G4int depth = 0);
+   virtual ~PARISScorerCsIStageCrystalNumber();
+
+protected: // with description
+   virtual G4bool ProcessHits(G4Step*, G4TouchableHistory*);
+
+public:
+   virtual void Initialize(G4HCofThisEvent*);
+   virtual void EndOfEvent(G4HCofThisEvent*);
+   virtual void Clear();
+   virtual void DrawAll();
+   virtual void PrintAll();
+
+private:
+   G4String m_VolumeName;
+   G4int HCID;
+   G4THitsMap<G4int>* EvtMap;
+};
+
 
 class PARISScorerCsIStageEnergy : public G4VPrimitiveScorer
 {
diff --git a/NPSimulation/include/Particle.hh b/NPSimulation/include/Particle.hh
new file mode 100644
index 0000000000000000000000000000000000000000..7be0c5bf9dd08fd4d64b9eef74a22163e53dd97d
--- /dev/null
+++ b/NPSimulation/include/Particle.hh
@@ -0,0 +1,60 @@
+#ifndef __PARTICLE__
+#define __PARTICLE__
+/*****************************************************************************
+ * 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  : April 2012                                               *
+ * Last update    :                                                          *
+ *---------------------------------------------------------------------------*
+ * Decription:                                                               *
+ * This class define particle to be shoot at the end of the generated event  *
+ * It contain a G4ParticleDefinition, a Kinetic energy and the direction to  *
+ * shoot the particle in the laboratory frame.                               *
+ *                                                                           *
+ *---------------------------------------------------------------------------*
+ * Comment:                                                                  *
+ *                                                                           *
+ *****************************************************************************/
+
+// G4
+#include"G4ParticleDefinition.hh"
+#include"G4ThreeVector.hh"
+
+class Particle{
+    
+public: // Constructor and Destructor
+    //  Empty constructor (return geantino at zero degree)
+    Particle();
+    ~Particle();
+    //  Constructor to be used
+    Particle(G4ParticleDefinition* particle,double T,G4ThreeVector Direction, G4ThreeVector Position,bool ShootStatus=true);
+    
+private: // Private Member 
+    G4ParticleDefinition* m_ParticleDefinition;
+    double m_T ;
+    G4ThreeVector m_Direction;
+    G4ThreeVector m_Position;
+    bool m_ShootStatus;
+    
+public: // Setter and Getter
+    // Getter
+    G4ParticleDefinition*   GetParticleDefinition();
+    double                  GetParticleKineticEnergy();
+    G4ThreeVector           GetParticleMomentumDirection();
+    G4ThreeVector           GetParticlePosition();
+    bool                    GetShootStatus();
+    // Setter
+    void SetParticleDefinition(G4ParticleDefinition*);
+    void SetParticleKineticEnergy(double);
+    void SetParticlePosition(G4ThreeVector);
+    void SetParticleMomentumDirection(G4ThreeVector);
+    void SetShootStatus(bool);
+};
+#endif
\ No newline at end of file
diff --git a/NPSimulation/include/ParticleStack.hh b/NPSimulation/include/ParticleStack.hh
new file mode 100644
index 0000000000000000000000000000000000000000..62c432e67e4f8476d079581cf5962a818c75ddf1
--- /dev/null
+++ b/NPSimulation/include/ParticleStack.hh
@@ -0,0 +1,89 @@
+#ifndef __PARTICLESTACK__
+#define __PARTICLESTACK__
+/*****************************************************************************
+ * 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  : April 2012                                               *
+ * Last update    :                                                          *
+ *---------------------------------------------------------------------------*
+ * Decription:                                                               *
+ * This singleton class contain all the particle to be shooted at the end of *
+ * the event generation.                                                     *
+ *                                                                           *
+ *---------------------------------------------------------------------------*
+ * Comment:                                                                  *
+ *                                                                           *
+ *****************************************************************************/
+
+// NPS
+#include"Particle.hh"
+
+// STL
+#include<vector>
+#include<string>
+using namespace std;
+
+// G4
+#include "G4ParticleGun.hh"
+#include "G4Event.hh"
+
+class ParticleStack{
+public:
+    // Designed to be a singleton (i.e. only one instance
+    // can exist). A member function called Instance is defined, which allows
+    // the user to get a pointer to the existing instance or to create it if
+    // it does not yet exist:
+    // (see the constructor for an explanation of the arguments)
+    static ParticleStack* getInstance();
+    
+    // The analysis class instance can be deleted by calling the Destroy
+    // method (NOTE: The class destructor is protected, and can thus not be
+    // called directly):
+    static void Destroy();
+    
+protected:
+    // Constructor (protected)
+    ParticleStack();
+    
+    // Destructor (protected)
+    ~ParticleStack();
+    
+    // Prevent copying
+    ParticleStack(const ParticleStack& only);
+    const ParticleStack& operator=(const ParticleStack& only);
+    
+private:
+    // The static instance of the ParticleStack class:
+    static ParticleStack* instance;    
+    // The particle gun
+    G4ParticleGun* m_particleGun;
+
+private: // Private Member
+    vector<Particle> m_ParticleStack;
+
+public: // Getter and Setter
+    vector<Particle> GetParticleStack();
+    void             SetParticleStack(vector<Particle>);
+    G4ParticleGun    GetParticleGun();
+
+public: // Particle management and shooting method
+    // EventGenerator use this method to add particle in the stack
+    void AddParticleToStack(Particle);
+    
+    // Search for a specific particle in the stack
+    Particle SearchAndRemoveParticle(string);
+    
+    // Transform the particle name to G4 standard: i.e: 10He -> He10
+    string ChangeNameToG4Standard(string);
+    
+    // Shoot everything in the stack at the end of the event
+    void ShootAllParticle(G4Event* anEvent);
+};
+#endif
\ No newline at end of file
diff --git a/NPSimulation/src/ComptonTelescope.cc b/NPSimulation/src/ComptonTelescope.cc
new file mode 100755
index 0000000000000000000000000000000000000000..a7539bcadce4f465c9f6a6cbd9d98c900e119668
--- /dev/null
+++ b/NPSimulation/src/ComptonTelescope.cc
@@ -0,0 +1,1053 @@
+/*****************************************************************************
+ * 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: N. de Sereville  contact address: deserevi@ipno.in2p3.fr *
+ *                                                                           *
+ * Creation Date  : 10/06/09                                                 *
+ * Last update    : 12/10/09                                                 *
+ *---------------------------------------------------------------------------*
+ * Decription: Define a module of square shape for the Gaspard tracker       *
+ *                                                                           *
+ *---------------------------------------------------------------------------*
+ * Comment:                                                                  *
+ *    + 07/09/09: Fix bug for placing module with (r,theta,phi) method.      *
+ *                (N. de Sereville)                                          *
+ *    + 12/10/09: Change scorer scheme (N. de Sereville)                     *
+ *    + 01/10/10: Fix bug with TInteractionCoordinate map size in Read       *
+ *                Sensitive (N. de Sereville)                                *
+ *                                                                           *
+ *                                                                           *
+ *****************************************************************************/
+
+// C++ headers
+#include <sstream>
+#include <string>
+#include <cmath>
+
+// ROOT headers
+#include "TString.h"
+
+// G4 Geometry headers
+#include "G4Trd.hh"
+#include "G4Box.hh"
+#include "G4Trap.hh"
+
+// G4 various headers
+#include "G4MaterialTable.hh"
+#include "G4Element.hh"
+#include "G4ElementTable.hh"
+#include "G4VisAttributes.hh"
+#include "G4Colour.hh"
+#include "G4RotationMatrix.hh"
+#include "G4Transform3D.hh"
+#include "G4PVPlacement.hh"
+#include "G4PVDivision.hh"
+
+// NPTool headers
+#include "ComptonTelescope.hh"
+#include "ComptonTelescopeScorers.hh"
+#include "GeneralScorers.hh"
+#include "RootOutput.h"
+
+// CLHEP
+#include "CLHEP/Random/RandGauss.h"
+
+using namespace std;
+using namespace CLHEP;
+
+using namespace COMPTONTELESCOPE;
+
+
+
+
+//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
+ComptonTelescope::ComptonTelescope() 
+   : m_Event(new TComptonTelescopeData()),
+     m_ProcessEvent(new TComptonTelescopeProcessData()),
+     m_NumberOfDSSSD(1),
+     m_SizeOfDSSSD(100),
+     m_NumberOfStrips(50),
+     m_ThicknessOfDSSSD(2),
+     m_DistanceInterDSSSD(7),
+     m_ThicknessOfCalorimeter(50),
+     m_DistanceTrackerCalorimeter(7)
+
+{
+   // calculate tower height
+   m_TowerHeight =  (m_NumberOfDSSSD-1) * m_DistanceInterDSSSD + m_ThicknessOfDSSSD
+                   + m_DistanceTrackerCalorimeter + m_ThicknessOfCalorimeter;
+   
+   // initialize materials
+   InitializeMaterial();
+}
+
+
+
+//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
+ComptonTelescope::~ComptonTelescope()
+{
+   // Materials
+   delete m_MaterialSilicon;
+   delete m_MaterialAluminium;
+   delete m_MaterialLaBr3;
+   delete m_MaterialVacuum;
+
+   // Data
+   delete m_Event;
+
+   // Scorers
+   delete m_TrackerScorer;
+   delete m_CalorimeterScorer;
+}
+
+
+
+//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
+void ComptonTelescope::AddModule(G4ThreeVector X1_Y1     ,
+                                     G4ThreeVector X128_Y1   ,
+                                     G4ThreeVector X1_Y128   ,
+                                     G4ThreeVector X128_Y128 ,
+                                     bool wTracker        ,
+                                     bool wCalorimeter)
+{
+   m_DefinitionType.push_back(true) ;
+
+   m_X1_Y1.push_back(X1_Y1)               ;
+   m_X128_Y1.push_back(X128_Y1)           ;
+   m_X1_Y128.push_back(X1_Y128)           ;
+   m_X128_Y128.push_back(X128_Y128)       ;
+   m_wTracker.push_back(wTracker)   ;
+   m_wCalorimeter.push_back(wCalorimeter)   ;
+
+   m_R.push_back(0)      ;
+   m_Theta.push_back(0)  ;
+   m_Phi.push_back(0)    ;
+   m_beta_u.push_back(0) ;
+   m_beta_v.push_back(0) ;
+   m_beta_w.push_back(0) ;
+}
+
+
+
+//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
+void ComptonTelescope::AddModule(G4double R        ,
+                                     G4double Theta    ,
+                                     G4double Phi      ,
+                                     G4double beta_u   ,
+                                     G4double beta_v   ,
+                                     G4double beta_w   ,
+                                     bool wTracker  ,
+                                     bool wCalorimeter)
+{
+   G4ThreeVector empty = G4ThreeVector(0, 0, 0);
+
+   m_DefinitionType.push_back(false);
+
+   m_R.push_back(R)                       ;
+   m_Theta.push_back(Theta)               ;
+   m_Phi.push_back(Phi)                   ;
+   m_beta_u.push_back(beta_u)             ;
+   m_beta_v.push_back(beta_v)             ;
+   m_beta_w.push_back(beta_w)             ;
+   m_wTracker.push_back(wTracker)   ;
+   m_wCalorimeter.push_back(wCalorimeter)   ;
+
+   m_X1_Y1.push_back(empty)     ;
+   m_X128_Y1.push_back(empty)   ;
+   m_X1_Y128.push_back(empty)   ;
+   m_X128_Y128.push_back(empty) ;
+}
+
+
+
+//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
+void ComptonTelescope::VolumeMaker(G4int TelescopeNumber,
+                                   G4ThreeVector CTpos,
+                                   G4RotationMatrix* CTrot,
+                                   bool wTracker,
+                                   bool wCalorimeter,
+                                   G4LogicalVolume* world)
+{
+   G4double NbrTelescopes = TelescopeNumber  ;
+   G4String DetectorNumber                   ;
+   ostringstream Number                      ;
+   Number << NbrTelescopes                   ;
+   DetectorNumber = Number.str()             ;
+
+   ////////////////////////////////////////////////////////////////
+   ////////////// Starting Volume Definition //////////////////////
+   ////////////////////////////////////////////////////////////////
+   G4String Name = "ComptonTelescopeTower" + DetectorNumber;
+
+   // calculate tower height
+   m_TowerHeight =  (m_NumberOfDSSSD-1) * m_DistanceInterDSSSD + m_ThicknessOfDSSSD
+                   + m_DistanceTrackerCalorimeter + m_ThicknessOfCalorimeter;
+   
+   G4Box*           solidComptonTelescope = new G4Box(Name, 0.5*m_SizeOfDSSSD, 0.5*m_SizeOfDSSSD, 0.5*m_TowerHeight);
+   G4LogicalVolume* logicComptonTelescope = new G4LogicalVolume(solidComptonTelescope, m_MaterialVacuum, Name, 0, 0, 0);
+
+   new G4PVPlacement(G4Transform3D(*CTrot, CTpos), logicComptonTelescope, Name, world, false, 0);
+
+   logicComptonTelescope->SetVisAttributes(G4VisAttributes::Invisible);
+   if (m_non_sensitive_part_visiualisation) logicComptonTelescope->SetVisAttributes(G4VisAttributes(G4Colour(0.90, 0.90, 0.90)));
+
+
+   ////////////////////////////////////////////////////////////
+   //////////////// Tracker Construction //////////////////////
+   ////////////////////////////////////////////////////////////
+   if (wTracker) {
+      // tracker detector itself
+      G4Box*           solidTracker = new G4Box("solidTracker", 0.5*m_SizeOfDSSSD, 0.5*m_SizeOfDSSSD, 0.5*m_ThicknessOfDSSSD);
+      G4LogicalVolume* logicTracker = new G4LogicalVolume(solidTracker, m_MaterialSilicon, "logicTracker", 0, 0, 0);
+
+      G4ThreeVector positionTracker;
+      for (G4int i = 0; i < m_NumberOfDSSSD; ++i) {   // loop on number of DSSSDs
+         G4double position = -m_TowerHeight/2 + m_ThicknessOfDSSSD/2 + i*m_DistanceInterDSSSD;
+         positionTracker = G4ThreeVector(0, 0, position);
+         G4String nameTracker = Name + "_Tracker";
+         ostringstream index;
+         index << i;
+         nameTracker = nameTracker + index.str();
+         new G4PVPlacement(0, positionTracker, logicTracker, nameTracker, logicComptonTelescope, false, i);
+      } // end loop on number of DSSSDs
+
+      // set tracker sensible
+      logicTracker->SetSensitiveDetector(m_TrackerScorer);
+
+      // visualisation of tracker
+      G4VisAttributes* TrackerVisAtt = new G4VisAttributes(G4Colour(0.0, 0.0, 0.9));   // blue
+      logicTracker->SetVisAttributes(TrackerVisAtt);
+   }
+
+
+   ////////////////////////////////////////////////////////////////
+   ///////////////// Calorimeter Construction /////////////////////
+   ////////////////////////////////////////////////////////////////
+   if (wCalorimeter) {
+      // calorimeter detector
+      G4Box*           solidCalorimeter = new G4Box("solidCalorimeter", 0.5*m_SizeOfDSSSD, 0.5*m_SizeOfDSSSD, 0.5*m_ThicknessOfCalorimeter);
+      G4LogicalVolume* logicCalorimeter = new G4LogicalVolume(solidCalorimeter, m_MaterialSilicon, "logicCalorimeter", 0, 0, 0);
+
+      G4double position = m_TowerHeight/2 - m_ThicknessOfCalorimeter/2; 
+      G4ThreeVector positionCalorimeter = G4ThreeVector(0, 0, position);
+      new G4PVPlacement(0, positionCalorimeter, logicCalorimeter, Name + "_Calorimeter", logicComptonTelescope, false, 0);
+
+      // Set Third Stage sensible
+      logicCalorimeter->SetSensitiveDetector(m_CalorimeterScorer);
+
+      ///Visualisation of Third Stage
+      G4VisAttributes* CalorimeterVisAtt = new G4VisAttributes(G4Colour(0.0, 0.9, 0.0));   // green
+      logicCalorimeter->SetVisAttributes(CalorimeterVisAtt);
+   }
+}
+
+//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
+//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
+//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
+// Virtual Method of VDetector class
+
+// Read stream at Configfile to pick-up parameters of detector (Position,...)
+// Called in DetecorConstruction::ReadDetextorConfiguration Method
+void ComptonTelescope::ReadConfiguration(string Path)
+{
+   ifstream ConfigFile           ;
+   ConfigFile.open(Path.c_str()) ;
+   string LineBuffer          ;
+   string DataBuffer          ;
+
+   // A:X1_Y1     --> X:1    Y:1
+   // B:X128_Y1   --> X:128  Y:1
+   // C:X1_Y128   --> X:1    Y:128
+   // D:X128_Y128    --> X:128  Y:128
+
+   G4double Ax , Bx , Cx , Dx , Ay , By , Cy , Dy , Az , Bz , Cz , Dz          ;
+   G4ThreeVector A , B , C , D                                                 ;
+   G4double Theta = 0 , Phi = 0 , R = 0 , beta_u = 0 , beta_v = 0 , beta_w = 0 ;
+
+   G4int TRACKER = 0, CALORIMETER = 0;
+
+   bool ReadingStatus = false ;
+
+   bool check_A = false ;
+   bool check_C = false ;
+   bool check_B = false ;
+   bool check_D = false ;
+
+   bool check_Theta = false ;
+   bool check_Phi   = false ;
+   bool check_R     = false ;
+   
+   while (!ConfigFile.eof()) {
+      getline(ConfigFile, LineBuffer);
+      if (LineBuffer.compare(0, 16, "ComptonTelescope") == 0) {
+         G4cout << "///" << G4endl           ;
+         G4cout << "ComptonTelescope found: " << G4endl   ;
+         ReadingStatus = true ;
+      }
+      else ReadingStatus = false;
+
+      while (ReadingStatus) {      
+
+         ConfigFile >> DataBuffer;
+
+         //   Comment Line 
+         if (DataBuffer.compare(0, 1, "%") == 0) {
+            ConfigFile.ignore(std::numeric_limits<std::streamsize>::max(), '\n');
+         }
+
+         // Finding another telescope (safety), toggle out
+         else if (DataBuffer.compare(0, 16, "ComptonTelescope") == 0) {
+//            cout << "WARNING: Another Detector is find before standard sequence of Token, Error may occured in Telecope definition" << endl;
+//            ReadingStatus = false;
+         }
+
+         // Position method
+         else if (DataBuffer.compare(0, 6, "X1_Y1=") == 0) {
+            check_A = true;
+            ConfigFile >> DataBuffer ;
+            Ax = atof(DataBuffer.c_str()) ;
+            Ax = Ax * mm ;
+            ConfigFile >> DataBuffer ;
+            Ay = atof(DataBuffer.c_str()) ;
+            Ay = Ay * mm ;
+            ConfigFile >> DataBuffer ;
+            Az = atof(DataBuffer.c_str()) ;
+            Az = Az * mm ;
+
+            A = G4ThreeVector(Ax, Ay, Az);
+            cout << "X1 Y1 corner position : " << A << endl;
+         }
+
+         else if (DataBuffer.compare(0, 8, "X128_Y1=") == 0) {
+            check_B = true;
+            ConfigFile >> DataBuffer ;
+            Bx = atof(DataBuffer.c_str()) ;
+            Bx = Bx * mm ;
+            ConfigFile >> DataBuffer ;
+            By = atof(DataBuffer.c_str()) ;
+            By = By * mm ;
+            ConfigFile >> DataBuffer ;
+            Bz = atof(DataBuffer.c_str()) ;
+            Bz = Bz * mm ;
+
+            B = G4ThreeVector(Bx, By, Bz);
+            cout << "X128 Y1 corner position : " << B << endl;
+         }
+
+         else if (DataBuffer.compare(0, 8, "X1_Y128=") == 0) {
+            check_C = true;
+            ConfigFile >> DataBuffer ;
+            Cx = atof(DataBuffer.c_str()) ;
+            Cx = Cx * mm ;
+            ConfigFile >> DataBuffer ;
+            Cy = atof(DataBuffer.c_str()) ;
+            Cy = Cy * mm ;
+            ConfigFile >> DataBuffer ;
+            Cz = atof(DataBuffer.c_str()) ;
+            Cz = Cz * mm ;
+
+            C = G4ThreeVector(Cx, Cy, Cz);
+            cout << "X1 Y128 corner position : " << C << endl;
+         }
+
+         else if (DataBuffer.compare(0, 10, "X128_Y128=") == 0) {
+            check_D = true;
+            ConfigFile >> DataBuffer ;
+            Dx = atof(DataBuffer.c_str()) ;
+            Dx = Dx * mm ;
+            ConfigFile >> DataBuffer ;
+            Dy = atof(DataBuffer.c_str()) ;
+            Dy = Dy * mm ;
+            ConfigFile >> DataBuffer ;
+            Dz = atof(DataBuffer.c_str()) ;
+            Dz = Dz * mm ;
+
+            D = G4ThreeVector(Dx, Dy, Dz);
+            cout << "X128 Y128 corner position : " << D << endl;
+         }
+
+         // Angle method
+         else if (DataBuffer.compare(0, 2, "R=") == 0) {
+            check_R = true;
+            ConfigFile >> DataBuffer ;
+            R = atof(DataBuffer.c_str()) ;
+            R = R * mm;
+            cout << "R:  " << R / mm << endl;
+         }
+
+         else if (DataBuffer.compare(0, 6, "THETA=") == 0) {
+            check_Theta = true;
+            ConfigFile >> DataBuffer ;
+            Theta = atof(DataBuffer.c_str()) ;
+            Theta = Theta * deg;
+            cout << "Theta:  " << Theta / deg << endl;
+         }
+
+         else if (DataBuffer.compare(0, 4, "PHI=") == 0) {
+            check_Phi = true;
+            ConfigFile >> DataBuffer ;
+            Phi = atof(DataBuffer.c_str()) ;
+            Phi = Phi * deg;
+            cout << "Phi:  " << Phi / deg << endl;
+         }
+
+         else if (DataBuffer.compare(0, 5, "BETA=") == 0) {
+            ConfigFile >> DataBuffer ;
+            beta_u = atof(DataBuffer.c_str()) ;
+            beta_u = beta_u * deg   ;
+            ConfigFile >> DataBuffer ;
+            beta_v = atof(DataBuffer.c_str()) ;
+            beta_v = beta_v * deg   ;
+            ConfigFile >> DataBuffer ;
+            beta_w = atof(DataBuffer.c_str()) ;
+            beta_w = beta_w * deg   ;
+            G4cout << "Beta:  " << beta_u / deg << " " << beta_v / deg << " " << beta_w / deg << G4endl  ;
+         }
+
+         else if (DataBuffer.compare(0, 11, "SIZE_DSSSD=") == 0) {
+            ConfigFile >> DataBuffer;
+            m_SizeOfDSSSD = atof(DataBuffer.c_str());
+            m_SizeOfDSSSD = m_SizeOfDSSSD * mm;
+            G4cout << "Size DSSSD: " << m_SizeOfDSSSD / mm << G4endl;
+         }
+
+         else if (DataBuffer.compare(0, 13, "NUMBER_DSSSD=") == 0) {
+            ConfigFile >> DataBuffer;
+            m_NumberOfDSSSD = atoi(DataBuffer.c_str());
+            G4cout << "Number of DSSSD: " << m_NumberOfDSSSD << G4endl;
+         }
+
+         else if (DataBuffer.compare(0, 21, "DISTANCE_INTER_DSSSD=") == 0) {
+            ConfigFile >> DataBuffer;
+            m_DistanceInterDSSSD = atof(DataBuffer.c_str());
+            m_DistanceInterDSSSD = m_DistanceInterDSSSD * mm;
+            G4cout << "Distance Inter DSSSD: " << m_DistanceInterDSSSD / mm << G4endl;
+         }
+
+         else if (DataBuffer.compare(0, 16, "THICKNESS_DSSSD=") == 0) {
+            ConfigFile >> DataBuffer;
+            m_ThicknessOfDSSSD = atof(DataBuffer.c_str());
+            m_ThicknessOfDSSSD = m_ThicknessOfDSSSD * mm;
+            G4cout << "Thickness DSSSD: " << m_ThicknessOfDSSSD / mm << G4endl;
+         }
+
+         else if (DataBuffer.compare(0, 14, "NUMBER_STRIPS=") == 0) {
+            ConfigFile >> DataBuffer;
+            m_NumberOfStrips = atoi(DataBuffer.c_str());
+            G4cout << "Number of STRIPS: " << m_NumberOfStrips << G4endl;
+         }
+
+         else if (DataBuffer.compare(0, 29, "DISTANCE_TRACKER_CALORIMETER=") == 0) {
+            ConfigFile >> DataBuffer;
+            m_DistanceTrackerCalorimeter = atof(DataBuffer.c_str());
+            m_DistanceTrackerCalorimeter = m_DistanceTrackerCalorimeter * mm;
+            G4cout << "Distance Tracker Calorimeter: " << m_DistanceTrackerCalorimeter / mm << G4endl;
+         }
+
+         else if (DataBuffer.compare(0, 22, "THICKNESS_CALORIMETER=") == 0) {
+            ConfigFile >> DataBuffer;
+            m_ThicknessOfCalorimeter = atof(DataBuffer.c_str());
+            m_ThicknessOfCalorimeter = m_ThicknessOfCalorimeter * mm;
+            G4cout << "Thickness Calorimeter: " << m_ThicknessOfCalorimeter / mm << G4endl;
+         }
+
+         else if (DataBuffer.compare(0, 8, "TRACKER=") == 0) {
+            ConfigFile >> DataBuffer;
+            TRACKER = atof(DataBuffer.c_str()) ;
+            G4cout << "Tracker: " << TRACKER << G4endl;
+         }
+
+         else if (DataBuffer.compare(0, 12, "CALORIMETER=") == 0) {
+            ConfigFile >> DataBuffer;
+            CALORIMETER = atof(DataBuffer.c_str()) ;
+            G4cout << "Calorimeter: " << CALORIMETER << G4endl;
+         }
+
+         else if (DataBuffer.compare(0, 4, "VIS=") == 0) {
+            ConfigFile >> DataBuffer;
+            if (DataBuffer.compare(0, 3, "all") == 0) m_non_sensitive_part_visiualisation = true;
+         }
+
+         else {
+            ReadingStatus = false; 
+            G4cout << "other token " << DataBuffer << G4endl;
+            G4cout << "WARNING: Wrong Token, ComptonTelescope not added" << G4endl;
+         }
+
+         //Add The previously define telescope
+         //With position method
+         if ((check_A && check_B && check_C && check_D) && !(check_Theta && check_Phi && check_R)) {
+            ReadingStatus = false ;
+            check_A = false ;
+            check_C = false ;
+            check_B = false ;
+            check_D = false ;
+
+            AddModule(A                ,
+                  B                ,
+                  C                ,
+                  D                ,
+                  TRACKER  == 1 ,
+                  CALORIMETER  == 1);
+         }
+
+         //with angle method
+         if ((check_Theta && check_Phi && check_R) && !(check_A && check_B && check_C && check_D)) {
+            ReadingStatus = false ;
+            check_Theta = false ;
+            check_Phi   = false ;
+            check_R     = false ;
+
+            AddModule(R                ,
+                  Theta            ,
+                  Phi              ,
+                  beta_u           ,
+                  beta_v           ,
+                  beta_w           ,
+                  TRACKER  == 1 ,
+                  CALORIMETER  == 1);
+         }
+
+      }
+   }
+}
+
+// Construct detector and inialise sensitive part.
+// Called After DetecorConstruction::AddDetector Method
+void ComptonTelescope::ConstructDetector(G4LogicalVolume* world)
+{
+   G4RotationMatrix* CTrot    = NULL                   ;
+   G4ThreeVector     CTpos    = G4ThreeVector(0, 0, 0) ;
+   G4ThreeVector     CTu      = G4ThreeVector(0, 0, 0) ;
+   G4ThreeVector     CTv      = G4ThreeVector(0, 0, 0) ;
+   G4ThreeVector     CTw      = G4ThreeVector(0, 0, 0) ;
+   G4ThreeVector     CTCenter = G4ThreeVector(0, 0, 0) ;
+   bool FirstStage  = true;
+   bool SecondStage = true;
+
+   G4int NumberOfTelescope = m_DefinitionType.size() ;
+
+   for (G4int i = 0; i < NumberOfTelescope; i++) {
+      // By Point
+      if (m_DefinitionType[i]) {
+         // (u,v,w) unitary vector associated to telescope referencial
+         // (u,v) // to silicon plan
+         // w perpendicular to (u,v) plan and pointing ThirdStage
+         CTu = m_X128_Y1[i] - m_X1_Y1[i];
+         CTu = CTu.unit();
+
+         CTv = m_X1_Y128[i] - m_X1_Y1[i];
+         CTv = CTv.unit();
+
+         CTw = CTu.cross(CTv);
+         CTw = CTw.unit();
+
+         CTCenter = (m_X1_Y1[i] + m_X1_Y128[i] + m_X128_Y1[i] + m_X128_Y128[i]) / 4;
+
+         // Passage Matrix from Lab Referential to Telescope Referential
+         CTrot = new G4RotationMatrix(CTu, CTv, CTw);
+         // translation to place Telescope
+         CTpos = CTw * m_TowerHeight * 0.5 + CTCenter;
+      }
+
+      // By Angle
+      else {
+         G4double Theta = m_Theta[i] ;
+         G4double Phi   = m_Phi[i]   ;
+
+         // (u,v,w) unitary vector associated to telescope referencial
+         // (u,v) // to silicon plan
+         // w perpendicular to (u,v) plan and pointing ThirdStage
+         // Phi is angle between X axis and projection in (X,Y) plan
+         // Theta is angle between  position vector and z axis
+         G4double wX = m_R[i] * sin(Theta / rad) * cos(Phi / rad);
+         G4double wY = m_R[i] * sin(Theta / rad) * sin(Phi / rad);
+         G4double wZ = m_R[i] * cos(Theta / rad);
+         CTw = G4ThreeVector(wX, wY, wZ);
+
+         // vector corresponding to the center of the module
+         CTCenter = CTw;
+
+         // vector parallel to one axis of silicon plane
+         G4double ii = cos(Theta / rad) * cos(Phi / rad);
+         G4double jj = cos(Theta / rad) * sin(Phi / rad);
+         G4double kk = -sin(Theta / rad);
+         G4ThreeVector Y = G4ThreeVector(ii, jj, kk);
+
+         CTw = CTw.unit();
+         CTu = CTw.cross(Y);
+         CTv = CTw.cross(CTu);
+         CTv = CTv.unit();
+         CTu = CTu.unit();
+
+         // Passage Matrix from Lab Referential to Telescope Referential
+         // MUST2
+         CTrot = new G4RotationMatrix(CTu, CTv, CTw);
+         // Telescope is rotate of Beta angle around CTv axis.
+         CTrot->rotate(m_beta_u[i], CTu);
+         CTrot->rotate(m_beta_v[i], CTv);
+         CTrot->rotate(m_beta_w[i], CTw);
+         // translation to place Telescope
+         CTpos = CTw * m_TowerHeight * 0.5 + CTCenter;
+      }
+
+      FirstStage  = m_wTracker[i]  ;
+      SecondStage = m_wCalorimeter[i] ;
+
+      VolumeMaker(i + 1, CTpos, CTrot, FirstStage, SecondStage, world);
+   }
+
+   delete CTrot ;
+}
+
+
+
+// Connect the GaspardTrackingData class to the output TTree
+// of the simulation
+void ComptonTelescope::InitializeRootOutput()
+{
+   RootOutput *pAnalysis = RootOutput::getInstance();
+   TTree *pTree = pAnalysis->GetTree();
+   pTree->Branch("ComptonTelescope",        "TComptonTelescopeData",        &m_Event);
+   pTree->Branch("ComptonTelescopeProcess", "TComptonTelescopeProcessData", &m_ProcessEvent);
+}
+
+
+
+// Read sensitive part and fill the Root tree.
+// Called at in the EventAction::EndOfEventAvtion
+void ComptonTelescope::ReadSensitive(const G4Event* event)
+{
+   m_Event->Clear();
+
+   //////////////////////////////////////////////////////////////////////////////////////
+   //////////////////////// Used to Read Event Map of detector //////////////////////////
+   //////////////////////////////////////////////////////////////////////////////////////
+   // Tracker
+   std::map<G4int, G4int*>::iterator    TowerNumber_itr;
+   std::map<G4int, G4int*>::iterator    DSSSDNumber_itr;
+   std::map<G4int, G4double*>::iterator Energy_itr;
+   std::map<G4int, G4double*>::iterator Time_itr;
+/*   std::map<G4int, G4int*>::iterator    X_itr;
+   std::map<G4int, G4int*>::iterator    Y_itr;
+   std::map<G4int, G4double*>::iterator Pos_X_itr;
+   std::map<G4int, G4double*>::iterator Pos_Y_itr;
+   std::map<G4int, G4double*>::iterator Pos_Z_itr;
+   std::map<G4int, G4double*>::iterator Ang_Theta_itr;
+   std::map<G4int, G4double*>::iterator Ang_Phi_itr;
+*/
+   G4THitsMap<G4int>*    TowerNumberHitMap;
+   G4THitsMap<G4int>*    DSSSDNumberHitMap;
+   G4THitsMap<G4double>* EnergyHitMap;
+   G4THitsMap<G4double>* TimeHitMap;
+/*   G4THitsMap<G4int>*    XHitMap;
+   G4THitsMap<G4int>*    YHitMap;
+   G4THitsMap<G4double>* PosXHitMap;
+   G4THitsMap<G4double>* PosYHitMap;
+   G4THitsMap<G4double>* PosZHitMap;
+   G4THitsMap<G4double>* AngThetaHitMap;
+   G4THitsMap<G4double>* AngPhiHitMap;
+*/
+   // Calorimeter
+   std::map<G4int, G4int*>::iterator    CalorimeterTowerNumber_itr;
+   std::map<G4int, G4int*>::iterator    CalorimeterDetectorNumber_itr;
+   std::map<G4int, G4double*>::iterator CalorimeterEnergy_itr;
+//   std::map<G4int, G4double*>::iterator CalorimeterTime_itr;
+   G4THitsMap<G4int>*    CalorimeterTowerNumberHitMap;
+   G4THitsMap<G4int>*    CalorimeterDetectorNumberHitMap;
+   G4THitsMap<G4double>* CalorimeterEnergyHitMap;
+//   G4THitsMap<G4double>* CalorimeterTimeHitMap;
+
+
+   // Read scorers associated to the tracker part
+   // tower number
+   G4int TrackTowCollectionID = G4SDManager::GetSDMpointer()->GetCollectionID("TrackerScorerComptonTelescope/TowerNumber");
+   TowerNumberHitMap = (G4THitsMap<G4int>*)(event->GetHCofThisEvent()->GetHC(TrackTowCollectionID));
+   TowerNumber_itr = TowerNumberHitMap->GetMap()->begin();
+
+   // detector number
+   G4int TrackDetCollectionID = G4SDManager::GetSDMpointer()->GetCollectionID("TrackerScorerComptonTelescope/DSSSDNumber");
+   DSSSDNumberHitMap = (G4THitsMap<G4int>*)(event->GetHCofThisEvent()->GetHC(TrackDetCollectionID));
+   DSSSDNumber_itr = DSSSDNumberHitMap->GetMap()->begin();
+
+   // energy
+   G4int TrackEnergyCollectionID = G4SDManager::GetSDMpointer()->GetCollectionID("TrackerScorerComptonTelescope/Energy");
+   EnergyHitMap = (G4THitsMap<G4double>*)(event->GetHCofThisEvent()->GetHC(TrackEnergyCollectionID))                    ;
+   Energy_itr = EnergyHitMap->GetMap()->begin();
+
+   // time of flight
+   G4int TrackTimeCollectionID = G4SDManager::GetSDMpointer()->GetCollectionID("TrackerScorerComptonTelescope/Time");
+   TimeHitMap = (G4THitsMap<G4double>*)(event->GetHCofThisEvent()->GetHC(TrackTimeCollectionID));
+   Time_itr = TimeHitMap->GetMap()->begin();
+/*
+   //Track Number X
+   G4int TrackXCollectionID = G4SDManager::GetSDMpointer()->GetCollectionID("TrackerScorerComptonTelescope/NumberX");
+   XHitMap = (G4THitsMap<G4int>*)(event->GetHCofThisEvent()->GetHC(TrackXCollectionID));
+   X_itr = XHitMap->GetMap()->begin();
+
+   //Track Number Y
+   G4int TrackYCollectionID = G4SDManager::GetSDMpointer()->GetCollectionID("TrackerScorerComptonTelescope/TrackNumberY")    ;
+   YHitMap = (G4THitsMap<G4int>*)(event->GetHCofThisEvent()->GetHC(TrackYCollectionID));
+   Y_itr = YHitMap->GetMap()->begin();
+
+   //Interaction Coordinate X
+   G4int InterCoordXCollectionID = G4SDManager::GetSDMpointer()->GetCollectionID("TrackerScorerComptonTelescope/InterCoordX")    ;
+   PosXHitMap = (G4THitsMap<G4double>*)(event->GetHCofThisEvent()->GetHC(InterCoordXCollectionID))                              ;
+   Pos_X_itr = PosXHitMap->GetMap()->begin()                                                                    ;
+
+   //Interaction Coordinate Y
+   G4int InterCoordYCollectionID = G4SDManager::GetSDMpointer()->GetCollectionID("TrackerScorerComptonTelescope/InterCoordY")    ;
+   PosYHitMap = (G4THitsMap<G4double>*)(event->GetHCofThisEvent()->GetHC(InterCoordYCollectionID))                              ;
+   Pos_Y_itr = PosYHitMap->GetMap()->begin()                                                                    ;
+
+   //Interaction Coordinate Z
+   G4int InterCoordZCollectionID = G4SDManager::GetSDMpointer()->GetCollectionID("TrackerScorerComptonTelescope/InterCoordZ")    ;
+   PosZHitMap = (G4THitsMap<G4double>*)(event->GetHCofThisEvent()->GetHC(InterCoordZCollectionID))                              ;
+   Pos_Z_itr = PosXHitMap->GetMap()->begin()                                                                    ;
+
+   //Interaction Coordinate Angle Theta
+   G4int InterCoordAngThetaCollectionID = G4SDManager::GetSDMpointer()->GetCollectionID("TrackerScorerComptonTelescope/InterCoordAngTheta")    ;
+   AngThetaHitMap = (G4THitsMap<G4double>*)(event->GetHCofThisEvent()->GetHC(InterCoordAngThetaCollectionID))                              ;
+   Ang_Theta_itr = AngThetaHitMap->GetMap()->begin()                                                                    ;
+
+   //Interaction Coordinate Angle Phi
+   G4int InterCoordAngPhiCollectionID = G4SDManager::GetSDMpointer()->GetCollectionID("TrackerScorerComptonTelescope/InterCoordAngPhi")    ;
+   AngPhiHitMap = (G4THitsMap<G4double>*)(event->GetHCofThisEvent()->GetHC(InterCoordAngPhiCollectionID))                              ;
+   Ang_Phi_itr = AngPhiHitMap->GetMap()->begin()                                                                    ;
+*/
+
+   // read the scorers associated to the calorimeter
+   // tower number
+   G4int CaloTowCollectionID = G4SDManager::GetSDMpointer()->GetCollectionID("CalorimeterScorerComptonTelescope/TowerNumber");
+   CalorimeterTowerNumberHitMap = (G4THitsMap<G4int>*)(event->GetHCofThisEvent()->GetHC(CaloTowCollectionID));
+   CalorimeterTowerNumber_itr = CalorimeterTowerNumberHitMap->GetMap()->begin();
+
+   // detector number
+   G4int CaloDetCollectionID = G4SDManager::GetSDMpointer()->GetCollectionID("CalorimeterScorerComptonTelescope/DetectorNumber");
+   CalorimeterDetectorNumberHitMap = (G4THitsMap<G4int>*)(event->GetHCofThisEvent()->GetHC(CaloDetCollectionID));
+   CalorimeterDetectorNumber_itr = CalorimeterDetectorNumberHitMap->GetMap()->begin();
+
+   // energy
+   G4int CaloEnergyCollectionID = G4SDManager::GetSDMpointer()->GetCollectionID("CalorimeterScorerComptonTelescope/Energy");
+   CalorimeterEnergyHitMap = (G4THitsMap<G4double>*)(event->GetHCofThisEvent()->GetHC(CaloEnergyCollectionID))                    ;
+   CalorimeterEnergy_itr = CalorimeterEnergyHitMap->GetMap()->begin();
+/*
+   // time of flight
+   G4int CaloTimeCollectionID = G4SDManager::GetSDMpointer()->GetCollectionID("CalorimeterScorerComptonTelescope/Time");
+   CalorimeterTimeHitMap = (G4THitsMap<G4double>*)(event->GetHCofThisEvent()->GetHC(CaloTimeCollectionID));
+   CalorimeterTime_itr = CalorimeterTimeHitMap->GetMap()->begin();
+*/
+
+   // Calorimeter
+//   G4int sizeCaloTower = ->entries();
+
+   // Check the size of different map
+   G4int sizeTrackerNtower = TowerNumberHitMap->entries();
+   G4int sizeTrackerNdsssd = DSSSDNumberHitMap->entries(); sizeTrackerNdsssd *= 1;
+   G4int sizeTrackerE      = EnergyHitMap->entries();
+   G4int sizeTrackerT      = TimeHitMap->entries();
+//   G4cout << sizeTrackerNtower << "\t" << sizeTrackerNdsssd << "\t" << sizeTrackerE << "\t" << sizeTrackerT << G4endl;
+//   G4int sizeTrackerX = XHitMap->entries();
+//   G4int sizeTrackerY = YHitMap->entries();
+
+//   if (sizeE != sizeT || sizeT != sizeX || sizeX != sizeY) {
+   if (sizeTrackerE != sizeTrackerT) {
+      G4cout << "No match size Si Event Map: sE:" << sizeTrackerE << " sT:" << sizeTrackerT << G4endl ;
+      return;
+   }
+
+   G4double Etot = 0;
+
+   // Loop on FirstStage number
+   for (G4int l = 0; l < sizeTrackerNtower; l++) {
+      G4double N     = *(TowerNumber_itr->second);
+      G4int NTrackID =   TowerNumber_itr->first - N;
+//      G4cout << N << "\t" << NTrackID << G4endl;
+
+      if (N > 0) {
+         // Fill tower number
+         m_Event->SetCTTrackerFrontETowerNbr(N);
+         m_Event->SetCTTrackerFrontTTowerNbr(N);
+         m_Event->SetCTTrackerBackEDetectorNbr(N);
+         m_Event->SetCTTrackerBackTDetectorNbr(N);
+
+         // Energy
+         Energy_itr = EnergyHitMap->GetMap()->begin();
+         for (G4int l = 0 ; l < sizeTrackerE ; l++) {
+            G4int ETrackID  =   Energy_itr->first - N;
+            G4double E     = *(Energy_itr->second);
+            if (ETrackID == NTrackID) {
+               Etot += E;
+               m_Event->SetCTTrackerFrontEEnergy(RandGauss::shoot(E, EnergyResolutionTracker));
+//               m_Event->SetCTTrackerBackEEnergy(RandGauss::shoot(E, EnergyResolutionTracker));
+            }
+            Energy_itr++;
+         }
+
+         //  Time
+         Time_itr = TimeHitMap->GetMap()->begin();
+         for (G4int h = 0 ; h < sizeTrackerT ; h++) {
+            G4int TTrackID  =   Time_itr->first - N;
+            G4double T     = *(Time_itr->second);
+            if (TTrackID == NTrackID) {
+               m_Event->SetCTTrackerFrontTTime(RandGauss::shoot(T, TimeResolutionTracker));
+               m_Event->SetCTTrackerBackTTime(RandGauss::shoot(T, TimeResolutionTracker));
+            }
+            Time_itr++;
+         }
+/*
+         // X
+         X_itr = XHitMap->GetMap()->begin();
+         for (G4int h = 0 ; h < sizeTrackerX ; h++) {
+            G4int XTrackID  =   X_itr->first - N;
+            G4int X         = *(X_itr->second);
+            if (XTrackID == NTrackID) {
+               m_Event->SetCTFrontEStripNbr(X);
+               m_Event->SetCTFrontTStripNbr(X);
+            }
+
+            X_itr++;
+         }
+
+         // Y
+         Y_itr = YHitMap->GetMap()->begin()  ;
+         for (G4int h = 0 ; h < sizeTrackerY ; h++) {
+            G4int YTrackID  =   Y_itr->first - N;
+            G4int Y         = *(Y_itr->second);
+            if (YTrackID == NTrackID) {
+               m_Event->SetCTBackEStripNbr(Y);
+               m_Event->SetCTBackTStripNbr(Y);
+            }
+
+            Y_itr++;
+         }
+
+         // Pos X
+         Pos_X_itr = PosXHitMap->GetMap()->begin();
+         for (G4int h = 0; h < PosXHitMap->entries(); h++) {
+            G4int PosXTrackID =   Pos_X_itr->first - N    ;
+            G4double PosX     = *(Pos_X_itr->second)      ;
+            if (PosXTrackID == NTrackID) {
+               ms_InterCoord->SetDetectedPositionX(PosX) ;
+            }
+            Pos_X_itr++;
+         }
+
+         // Pos Y
+         Pos_Y_itr = PosYHitMap->GetMap()->begin();
+         for (G4int h = 0; h < PosYHitMap->entries(); h++) {
+            G4int PosYTrackID =   Pos_Y_itr->first - N    ;
+            G4double PosY     = *(Pos_Y_itr->second)      ;
+            if (PosYTrackID == NTrackID) {
+               ms_InterCoord->SetDetectedPositionY(PosY) ;
+            }
+            Pos_Y_itr++;
+         }
+
+         // Pos Z
+         Pos_Z_itr = PosZHitMap->GetMap()->begin();
+         for (G4int h = 0; h < PosZHitMap->entries(); h++) {
+            G4int PosZTrackID =   Pos_Z_itr->first - N    ;
+            G4double PosZ     = *(Pos_Z_itr->second)      ;
+            if (PosZTrackID == NTrackID) {
+               ms_InterCoord->SetDetectedPositionZ(PosZ) ;
+            }
+            Pos_Z_itr++;
+         }
+
+         // Angle Theta
+         Ang_Theta_itr = AngThetaHitMap->GetMap()->begin();
+         for (G4int h = 0; h < AngThetaHitMap->entries(); h++) {
+            G4int AngThetaTrackID =   Ang_Theta_itr->first - N    ;
+            G4double AngTheta     = *(Ang_Theta_itr->second)      ;
+            if (AngThetaTrackID == NTrackID) {
+               ms_InterCoord->SetDetectedAngleTheta(AngTheta) ;
+            }
+            Ang_Theta_itr++;
+         }
+
+         // Angle Phi
+         Ang_Phi_itr = AngPhiHitMap->GetMap()->begin();
+         for (G4int h = 0; h < AngPhiHitMap->entries(); h++) {
+            G4int AngPhiTrackID =   Ang_Phi_itr->first - N    ;
+            G4double AngPhi     = *(Ang_Phi_itr->second)      ;
+            if (AngPhiTrackID == NTrackID) {
+               ms_InterCoord->SetDetectedAnglePhi(AngPhi) ;
+            }
+            Ang_Phi_itr++;
+         }
+*/
+/*
+         // Third Stage
+         ThirdStageEnergy_itr = ThirdStageEnergyHitMap->GetMap()->begin()  ;
+         for (G4int h = 0 ; h < ThirdStageEnergyHitMap->entries() ; h++) {
+            G4int ThirdStageEnergyTrackID  =   ThirdStageEnergy_itr->first - N;
+            G4double ThirdStageEnergy      = *(ThirdStageEnergy_itr->second)    ;
+
+            if (ThirdStageEnergyTrackID == NTrackID) {
+               m_Event->SetGPDTrkThirdStageEEnergy(RandGauss::shoot(ThirdStageEnergy, ResoThirdStage));
+               m_Event->SetGPDTrkThirdStageEPadNbr(1);
+               m_Event->SetGPDTrkThirdStageTPadNbr(1);
+               m_Event->SetGPDTrkThirdStageTTime(1);
+               m_Event->SetGPDTrkThirdStageTDetectorNbr(m_index["Square"] + N);
+               m_Event->SetGPDTrkThirdStageEDetectorNbr(m_index["Square"] + N);
+            }
+
+            ThirdStageEnergy_itr++;
+         }
+*/
+      }
+      TowerNumber_itr++;
+
+   }
+
+   // Fill total energy here
+   if (Etot > 0) m_Event->SetCTTrackerBackEEnergy(RandGauss::shoot(Etot, EnergyResolutionTracker));
+
+   // clear map for next event
+   TowerNumberHitMap -> clear();
+   DSSSDNumberHitMap -> clear();
+   EnergyHitMap      -> clear();
+   TimeHitMap        -> clear();
+/*   XHitMap        ->clear()   ;
+   YHitMap        ->clear()   ;
+   PosXHitMap     ->clear();
+   PosYHitMap     ->clear();
+   PosZHitMap     ->clear();
+   AngThetaHitMap ->clear();
+   AngPhiHitMap   ->clear();*/
+//   ThirdStageEnergyHitMap ->clear();
+
+   ///////////////////////////////////////////////////
+   // counting processes (compton, .....)           //
+   ///////////////////////////////////////////////////
+   // clear root object
+   m_ProcessEvent->Clear();
+
+   // scorers for processes....
+   std::map<G4int, G4double*>::iterator TrkProcC_itr;
+   G4THitsMap<G4double>* TrkProcCHitMap;
+   G4int TrkProcCCollectionID = G4SDManager::GetSDMpointer()->GetCollectionID("TrackerScorerComptonTelescope/Process");
+   TrkProcCHitMap = (G4THitsMap<G4double>*)(event->GetHCofThisEvent()->GetHC(TrkProcCCollectionID))                    ;
+   TrkProcC_itr = TrkProcCHitMap->GetMap()->begin();
+
+   for (G4int l = 0; l < TrkProcCHitMap->entries(); l++) {
+      // get electron energy
+      G4double ElectronKineticEnergy = *(TrkProcC_itr->second);
+      // get tower, dssd number & trackID
+      G4int index = TrkProcC_itr->first;
+//      G4cout << "Read Sensitive : " << l << "\t" << index << G4endl;
+      G4int towerID = index / (G4int)pow(100.,2.);
+      index -= towerID * (G4int)pow(100.,2.);
+      G4int dsssdID = index / (G4int)pow(100.,1.);
+      G4int trackID = index - dsssdID * (G4int)pow(100.,1.);
+      trackID *= 1;
+//      G4cout << "IDs : " << towerID << "\t" << dsssdID << "\t" << trackID << G4endl;
+//      G4cout << "Energy : " << ElectronKineticEnergy << G4endl;
+      // fill process data class
+      m_ProcessEvent->SetCTTrackerComptonTowerNbr(towerID);
+      m_ProcessEvent->SetCTTrackerComptonDetectorNbr(dsssdID);
+      m_ProcessEvent->SetCTTrackerComptonEnergy(ElectronKineticEnergy);
+
+      TrkProcC_itr++;
+   }
+   TrkProcCHitMap->clear();
+
+}
+
+
+void ComptonTelescope::InitializeMaterial()
+{
+
+   ////////////////////////////////////////////////////////////////
+   /////////////////Element  Definition ///////////////////////////
+   ////////////////////////////////////////////////////////////////
+   G4String symbol;
+   G4double density = 0, a = 0, z = 0;
+   G4int ncomponents = 0, natoms = 0;
+
+   G4Element* N   = new G4Element("Nitrogen" , symbol = "N"  , z = 7  , a = 14.01  * g / mole);
+   G4Element* O   = new G4Element("Oxigen"   , symbol = "O"  , z = 8  , a = 16.00  * g / mole);
+   G4Element* Br  = new G4Element("Bromine"  , symbol = "Br" , z = 35 , a =  79.9  * g / mole);
+   G4Element* La  = new G4Element("Lanthanum", symbol = "La" , z = 57 , a = 138.9  * g / mole);
+
+   ////////////////////////////////////////////////////////////////
+   /////////////////Material Definition ///////////////////////////
+   ////////////////////////////////////////////////////////////////
+
+   // Si
+   a = 28.0855 * g / mole;
+   density = 2.321 * g / cm3;
+   m_MaterialSilicon = new G4Material("Si", z = 14., a, density);
+
+   // Al
+   density = 2.702 * g / cm3;
+   a = 26.98 * g / mole;
+   m_MaterialAluminium = new G4Material("Aluminium", z = 13., a, density);
+
+   // LaBr3
+   density = 5.06 * g / cm3;
+   m_MaterialLaBr3 = new G4Material("LaBr3", density, ncomponents = 2);
+   m_MaterialLaBr3->AddElement(La , natoms = 1);
+   m_MaterialLaBr3->AddElement(Br , natoms = 3);
+
+   //  Vacuum
+   density = 0.000000001 * mg / cm3;
+   m_MaterialVacuum = new G4Material("Vacuum", density, ncomponents = 2);
+   m_MaterialVacuum->AddElement(N, .7);
+   m_MaterialVacuum->AddElement(O, .3);
+}
+
+
+
+void ComptonTelescope::InitializeScorers()
+{
+   // First stage Associate Scorer
+   m_TrackerScorer = new G4MultiFunctionalDetector("TrackerScorerComptonTelescope");
+   G4VPrimitiveScorer* TowerNbr    = new ComptonTelescopeScorerTrackerTowerNumber("TowerNumber", "ComptonTelescopeTower", 0);
+   G4VPrimitiveScorer* DSSSDNbr    = new ComptonTelescopeScorerTrackerDSSSDNumber("DSSSDNumber", "ComptonTelescopeTower", 0);
+   G4VPrimitiveScorer* Energy      = new ComptonTelescopeScorerTrackerEnergy("Energy", "ComptonTelescopeTower", 0);
+   G4VPrimitiveScorer* TOF         = new ComptonTelescopeScorerTrackerTOF("Time", "ComptonTelescopeTower", 0);
+   G4VPrimitiveScorer* ProcessTypeCompt = new ComptonTelescopeScorerProcess("Process", "ComptonTelescopeTower", "compt", 0);
+/*   G4VPrimitiveScorer* StripPositionX                   = new GPDScorerFirstStageFrontStripSquare("StripNumberX", 0, m_NumberOfStrips);
+   G4VPrimitiveScorer* StripPositionY                   = new GPDScorerFirstStageBackStripSquare("StripNumberY", 0, m_NumberOfStrips);
+   G4VPrimitiveScorer* InteractionCoordinatesX          = new GENERALSCORERS::PSInteractionCoordinatesX("InterCoordX","", 0);
+   G4VPrimitiveScorer* InteractionCoordinatesY          = new GENERALSCORERS::PSInteractionCoordinatesY("InterCoordY","", 0);
+   G4VPrimitiveScorer* InteractionCoordinatesZ          = new GENERALSCORERS::PSInteractionCoordinatesZ("InterCoordZ","", 0);
+   G4VPrimitiveScorer* InteractionCoordinatesAngleTheta = new GENERALSCORERS::PSInteractionCoordinatesAngleTheta("InterCoordAngTheta","", 0);
+   G4VPrimitiveScorer* InteractionCoordinatesAnglePhi   = new GENERALSCORERS::PSInteractionCoordinatesAnglePhi("InterCoordAngPhi","", 0);
+*/
+   //and register it to the multifunctionnal detector
+   m_TrackerScorer->RegisterPrimitive(TowerNbr);
+   m_TrackerScorer->RegisterPrimitive(DSSSDNbr);
+   m_TrackerScorer->RegisterPrimitive(Energy);
+   m_TrackerScorer->RegisterPrimitive(TOF);
+   m_TrackerScorer->RegisterPrimitive(ProcessTypeCompt);
+/*   m_TrackerScorer->RegisterPrimitive(StripPositionX);
+   m_TrackerScorer->RegisterPrimitive(StripPositionY);
+   m_TrackerScorer->RegisterPrimitive(InteractionCoordinatesX);
+   m_TrackerScorer->RegisterPrimitive(InteractionCoordinatesY);
+   m_TrackerScorer->RegisterPrimitive(InteractionCoordinatesZ);
+   m_TrackerScorer->RegisterPrimitive(InteractionCoordinatesAngleTheta);
+   m_TrackerScorer->RegisterPrimitive(InteractionCoordinatesAnglePhi);
+*/
+   //  Third stage Associate Scorer 
+   m_CalorimeterScorer = new G4MultiFunctionalDetector("CalorimeterScorerComptonTelescope");
+   G4VPrimitiveScorer* CaloTower    = new ComptonTelescopeScorerCalorimeterTowerNumber("TowerNumber", "ComptonTelescopeTower", 0);
+   G4VPrimitiveScorer* CaloDetector = new ComptonTelescopeScorerCalorimeterDetectorNumber("DetectorNumber", "ComptonTelescopeTower", 0);
+   G4VPrimitiveScorer* CaloEnergy   = new ComptonTelescopeScorerCalorimeterEnergy("Energy", "ComptonTelescopeTower", 0);
+//   G4VPrimitiveScorer* CaloTime     = new ComptonTelescopeScorerCalorimeterTOF("Time", "ComptonTelescopeTower", 0);
+   m_CalorimeterScorer->RegisterPrimitive(CaloTower);
+   m_CalorimeterScorer->RegisterPrimitive(CaloDetector);
+   m_CalorimeterScorer->RegisterPrimitive(CaloEnergy);
+//   m_CalorimeterScorer->RegisterPrimitive(CaloTime);
+
+   //  Add All Scorer to the Global Scorer Manager
+   G4SDManager::GetSDMpointer()->AddNewDetector(m_TrackerScorer);
+   G4SDManager::GetSDMpointer()->AddNewDetector(m_CalorimeterScorer);
+}
diff --git a/NPSimulation/src/ComptonTelescopeScorers.cc b/NPSimulation/src/ComptonTelescopeScorers.cc
new file mode 100755
index 0000000000000000000000000000000000000000..278a8b93b55938b8ad81ec72bd1bfcce06f1acc8
--- /dev/null
+++ b/NPSimulation/src/ComptonTelescopeScorers.cc
@@ -0,0 +1,608 @@
+/*****************************************************************************
+ * Copyright (C) 2009   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: M. Labiche  contact address: marc.labiche@stfc.ac.uk     *
+ *                                                                           *
+ * Creation Date  : 30/02/10                                                 *
+ * Last update    :                                                          *
+ *---------------------------------------------------------------------------*
+ * Decription: This class holds all the scorers needed by the                *
+ *             Paris*** objects.                                    *
+ *---------------------------------------------------------------------------*
+ * Comment:                                                                  *
+ *                                                                           *
+ *                                                                           *
+ *****************************************************************************/
+
+// G4 headers
+#include "G4UnitsTable.hh"
+#include "G4VProcess.hh"
+
+// NPTool headers
+#include "GeneralScorers.hh"
+
+#include "ComptonTelescopeScorers.hh"
+
+
+//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
+//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
+// Added by Adrien MATTA:
+// Those Scorer use TrackID as map index. This way ones can rebuild energy deposit,
+// time of flight or position,... particle by particle for each event. Because standard
+// scorer provide by G4 don't work this way but using a global ID for each event you should
+// not use those scorer with some G4 provided ones or being very carefull doing so.
+
+
+//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
+// FirstStage Tower Number Scorer (deal with multiple particle hit)
+ComptonTelescopeScorerProcess::ComptonTelescopeScorerProcess(G4String name, G4String volumeName, G4String processName, G4int depth)
+      : G4VPrimitiveScorer(name, depth), HCID(-1)
+{
+   m_VolumeName  = volumeName;
+   m_ProcessName = processName;
+}
+
+ComptonTelescopeScorerProcess::~ComptonTelescopeScorerProcess()
+{
+}
+
+G4bool ComptonTelescopeScorerProcess::ProcessHits(G4Step* aStep, G4TouchableHistory*)
+{
+   G4bool status = false;
+
+   // Get track ID
+   G4Track *track          = aStep->GetTrack();
+   G4int    trackID        = track->GetTrackID();
+   if (trackID > 1) {    // secondary particle
+      // get some relevant track informations
+//      G4int    parentID       = track->GetParentID();
+      G4int    stepNumber     = track->GetCurrentStepNumber();
+      G4String parentProcName = track->GetCreatorProcess()->GetProcessName();
+      G4String particleName   = track->GetDefinition()->GetParticleName();
+      // select secondary electrons created by compton effect
+      if (particleName   == "e-"          &&    // secondary is an electron
+          parentProcName == m_ProcessName &&    // electron has been created through compton effect
+          stepNumber     == 1                   // first step of track 
+         ) {
+         // electron kinetic energy
+         G4double ElectronKineticEnergy = aStep->GetPreStepPoint()->GetKineticEnergy() / MeV;
+         // id of dsssd & tower
+         // dsssd id
+         G4int dsssdID = aStep->GetPreStepPoint()->GetTouchableHandle()->GetCopyNumber(0);
+         // tower id
+         G4int towerID = aStep->GetPreStepPoint()->GetTouchableHandle()->GetCopyNumber(1);
+         // build index for map
+         G4int index = trackID + pow(100,1)*dsssdID + pow(100,2)*towerID;
+         // fill map
+         EvtMap->set(index, ElectronKineticEnergy);
+
+         // debug outputs
+//         G4cout << "////////// Compton electron found.............." << G4endl;
+//         G4cout << "\tCopyNumbers()\t" << dsssdID << "\t" << towerID << G4endl;
+//         G4cout << "\tElectron energy\t" << ElectronKineticEnergy << G4endl;
+
+         status = true;
+      }
+   }
+
+   return status;
+}
+
+void ComptonTelescopeScorerProcess::Initialize(G4HCofThisEvent* HCE)
+{
+   EvtMap = new G4THitsMap<G4double>(GetMultiFunctionalDetector()->GetName(), GetName());
+   if (HCID < 0) {
+      HCID = GetCollectionID(0);
+   }
+   HCE->AddHitsCollection(HCID, (G4VHitsCollection*)EvtMap);
+}
+
+void ComptonTelescopeScorerProcess::EndOfEvent(G4HCofThisEvent*)
+{
+}
+
+void ComptonTelescopeScorerProcess::Clear()
+{
+   EvtMap->clear();
+}
+
+void ComptonTelescopeScorerProcess::DrawAll()
+{
+}
+
+void ComptonTelescopeScorerProcess::PrintAll()
+{
+   G4cout << " MultiFunctionalDet  " << detector->GetName() << G4endl;
+   G4cout << " PrimitiveScorer " << GetName() << G4endl;
+   G4cout << " Number of entries " << EvtMap->entries() << G4endl;
+   std::map<G4int, G4double*>::iterator itr = EvtMap->GetMap()->begin();
+   for (; itr != EvtMap->GetMap()->end(); itr++) {
+      G4cout << "  copy no.: " << itr->first
+      << " Tower Number : " << G4BestUnit(*(itr->second), "TowerNumber")
+      << G4endl;
+   }
+}
+
+
+
+
+
+//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
+// FirstStage Tower Number Scorer (deal with multiple particle hit)
+ComptonTelescopeScorerTrackerTowerNumber::ComptonTelescopeScorerTrackerTowerNumber(G4String name, G4String volumeName, G4int depth)
+      : G4VPrimitiveScorer(name, depth), HCID(-1)
+{
+   m_VolumeName = volumeName;
+}
+
+ComptonTelescopeScorerTrackerTowerNumber::~ComptonTelescopeScorerTrackerTowerNumber()
+{
+}
+
+G4bool ComptonTelescopeScorerTrackerTowerNumber::ProcessHits(G4Step* aStep, G4TouchableHistory*)
+{
+   // get detector number
+   int DetNbr = GENERALSCORERS::PickUpDetectorNumber(aStep, m_VolumeName);
+   // int DetNbr  = aStep->GetPreStepPoint()->GetTouchableHandle()->GetCopyNumber(0); // this line does exactly the same than the line above
+   int DSSSDNbr  = aStep->GetPreStepPoint()->GetTouchableHandle()->GetCopyNumber(0);
+
+   // get energy
+   G4double edep = aStep->GetTotalEnergyDeposit();
+   if (edep < 0*keV) return FALSE;                   // = HERE IS THE DIFFERENCE WITH GENERALSCORER 
+   G4int  index = aStep->GetTrack()->GetTrackID();
+   EvtMap->set(DSSSDNbr + DetNbr + index, DetNbr);
+   return TRUE;
+}
+
+void ComptonTelescopeScorerTrackerTowerNumber::Initialize(G4HCofThisEvent* HCE)
+{
+   EvtMap = new G4THitsMap<G4int>(GetMultiFunctionalDetector()->GetName(), GetName());
+   if (HCID < 0) {
+      HCID = GetCollectionID(0);
+   }
+   HCE->AddHitsCollection(HCID, (G4VHitsCollection*)EvtMap);
+}
+
+void ComptonTelescopeScorerTrackerTowerNumber::EndOfEvent(G4HCofThisEvent*)
+{
+}
+
+void ComptonTelescopeScorerTrackerTowerNumber::Clear()
+{
+   EvtMap->clear();
+}
+
+void ComptonTelescopeScorerTrackerTowerNumber::DrawAll()
+{
+}
+
+void ComptonTelescopeScorerTrackerTowerNumber::PrintAll()
+{
+   G4cout << " MultiFunctionalDet  " << detector->GetName() << G4endl;
+   G4cout << " PrimitiveScorer " << GetName() << G4endl;
+   G4cout << " Number of entries " << EvtMap->entries() << G4endl;
+   std::map<G4int, G4int*>::iterator itr = EvtMap->GetMap()->begin();
+   for (; itr != EvtMap->GetMap()->end(); itr++) {
+      G4cout << "  copy no.: " << itr->first
+      << " Tower Number : " << G4BestUnit(*(itr->second), "TowerNumber")
+      << G4endl;
+   }
+}
+
+
+
+//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
+// FirstStage Energy Scorer (deal with multiple particle hit)
+ComptonTelescopeScorerTrackerEnergy::ComptonTelescopeScorerTrackerEnergy(G4String name, G4String volumeName, G4int depth)
+      : G4VPrimitiveScorer(name, depth), HCID(-1)
+{
+   m_VolumeName = volumeName;
+}
+
+ComptonTelescopeScorerTrackerEnergy::~ComptonTelescopeScorerTrackerEnergy()
+{
+}
+
+G4bool ComptonTelescopeScorerTrackerEnergy::ProcessHits(G4Step* aStep, G4TouchableHistory*)
+{
+   // get detector number
+   int DetNbr = GENERALSCORERS::PickUpDetectorNumber(aStep, m_VolumeName);
+   int DSSSDNbr  = aStep->GetPreStepPoint()->GetTouchableHandle()->GetCopyNumber(1);
+
+   // get energy
+   G4ThreeVector POS  = aStep->GetPreStepPoint()->GetPosition();
+   POS = aStep->GetPreStepPoint()->GetTouchableHandle()->GetHistory()->GetTopTransform().TransformPoint(POS);
+
+   G4double edep = aStep->GetTotalEnergyDeposit();
+   //   if (edep < 100*keV) return FALSE;
+   if (edep < 0*keV) return FALSE;                  // = HERE IS THE DIFFERENCE WITH GENERALSCORER 
+   G4int  index = aStep->GetTrack()->GetTrackID();
+   EvtMap->add(DSSSDNbr + DetNbr + index, edep);
+   return TRUE;
+}
+
+void ComptonTelescopeScorerTrackerEnergy::Initialize(G4HCofThisEvent* HCE)
+{
+   EvtMap = new G4THitsMap<G4double>(GetMultiFunctionalDetector()->GetName(), GetName());
+   if (HCID < 0) {
+      HCID = GetCollectionID(0);
+   }
+   HCE->AddHitsCollection(HCID, (G4VHitsCollection*)EvtMap);
+}
+
+void ComptonTelescopeScorerTrackerEnergy::EndOfEvent(G4HCofThisEvent*)
+{
+}
+
+void ComptonTelescopeScorerTrackerEnergy::Clear()
+{
+   EvtMap->clear();
+}
+
+void ComptonTelescopeScorerTrackerEnergy::DrawAll()
+{
+}
+
+void ComptonTelescopeScorerTrackerEnergy::PrintAll()
+{
+   G4cout << " MultiFunctionalDet  " << detector->GetName() << G4endl;
+   G4cout << " PrimitiveScorer " << GetName() << G4endl;
+   G4cout << " Number of entries " << EvtMap->entries() << G4endl;
+   std::map<G4int, G4double*>::iterator itr = EvtMap->GetMap()->begin();
+   for (; itr != EvtMap->GetMap()->end(); itr++) {
+      G4cout << "  copy no.: " << itr->first
+      << "  energy deposit: " << G4BestUnit(*(itr->second), "Energy")
+      << G4endl;
+   }
+}
+
+
+//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
+// FirstStage CrystalNbr Scorer (deal with multiple particle hit)
+ComptonTelescopeScorerTrackerDSSSDNumber::ComptonTelescopeScorerTrackerDSSSDNumber(G4String name, G4String volumeName, G4int depth)
+      : G4VPrimitiveScorer(name, depth), HCID(-1)
+{
+   m_VolumeName = volumeName;
+}
+
+ComptonTelescopeScorerTrackerDSSSDNumber::~ComptonTelescopeScorerTrackerDSSSDNumber()
+{
+}
+
+G4bool ComptonTelescopeScorerTrackerDSSSDNumber::ProcessHits(G4Step* aStep, G4TouchableHistory*)
+{
+   // get detector number
+   int DetNbr = GENERALSCORERS::PickUpDetectorNumber(aStep, m_VolumeName);
+
+   //G4int CrystalNbr  = aStep->GetPreStepPoint()->GetTouchableHandle()->GetReplicaNumber(1);
+   //Adde by Anna:
+  G4int DSSSDNbr  = aStep->GetPreStepPoint()->GetTouchableHandle()->GetCopyNumber(1); // daughter crystal volume
+   //depth:0 is the world, 1 is the mother...
+   //AC instead of GetReplicaNumber(1)
+   //cout<<"****replica****"<<endl;
+   //cout<<"copy nbr"<<aStep->GetPreStepPoint()->GetTouchableHandle()->GetCopyNumber(1)<<endl;
+   //cout<<"replica nbr"<<aStep->GetPreStepPoint()->GetTouchableHandle()->GetReplicaNumber(1)<<endl;
+   //cout<<aStep->GetPreStepPoint()->GetTouchableHandle()->GetCopyNumber(2)<<endl;
+   //cout<<aStep->GetPreStepPoint()->GetTouchableHandle()->GetCopyNumber(0)<<endl;
+ 
+   // get energy
+   G4double edep = aStep->GetTotalEnergyDeposit();
+   //   if (edep < 100*keV) return FALSE;
+   if (edep < 0*keV) return FALSE;                   // = HERE IS THE DIFFERENCE WITH GENERALSCORER 
+   G4int  index = aStep->GetTrack()->GetTrackID();
+   //EvtMap->add(DetNbr + index, CrystalNbr);  // Marc
+   //cout<<"index "<<index<<endl;
+   //cout<<"DetNbr + index "<<DetNbr + index<<endl;   
+   EvtMap->set(DSSSDNbr + DetNbr + index, DSSSDNbr);// modified by Anna
+   return TRUE;
+
+}
+
+void ComptonTelescopeScorerTrackerDSSSDNumber::Initialize(G4HCofThisEvent* HCE)
+{
+   EvtMap = new G4THitsMap<G4int>(GetMultiFunctionalDetector()->GetName(), GetName());
+   if (HCID < 0) {
+      HCID = GetCollectionID(0);
+   }
+   HCE->AddHitsCollection(HCID, (G4VHitsCollection*)EvtMap);
+}
+
+void ComptonTelescopeScorerTrackerDSSSDNumber::EndOfEvent(G4HCofThisEvent*)
+{
+}
+
+void ComptonTelescopeScorerTrackerDSSSDNumber::Clear()
+{
+   EvtMap->clear();
+}
+
+void ComptonTelescopeScorerTrackerDSSSDNumber::DrawAll()
+{
+}
+
+void ComptonTelescopeScorerTrackerDSSSDNumber::PrintAll()
+{
+   G4cout << " MultiFunctionalDet  " << detector->GetName() << G4endl;
+   G4cout << " PrimitiveScorer " << GetName() << G4endl;
+   G4cout << " Number of entries " << EvtMap->entries() << G4endl;
+      std::map<G4int, G4int*>::iterator itr = EvtMap->GetMap()->begin();
+      for (; itr != EvtMap->GetMap()->end(); itr++) {
+         G4cout << "  copy no.: " << itr->first
+         << "  crystal nbr: " << G4BestUnit(*(itr->second), "DSSSD")
+       << G4endl;
+   }
+}
+
+
+
+
+//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
+// FirstStage ToF Scorer (deal with multiple particle hit)
+ComptonTelescopeScorerTrackerTOF::ComptonTelescopeScorerTrackerTOF(G4String name, G4String volumeName, G4int depth)
+      : G4VPrimitiveScorer(name, depth), HCID(-1)
+{
+   m_VolumeName = volumeName;
+}
+
+ComptonTelescopeScorerTrackerTOF::~ComptonTelescopeScorerTrackerTOF()
+{
+}
+
+G4bool ComptonTelescopeScorerTrackerTOF::ProcessHits(G4Step* aStep, G4TouchableHistory*)
+{
+   // get detector number
+   int DetNbr = GENERALSCORERS::PickUpDetectorNumber(aStep, m_VolumeName);
+   int DSSSDNbr  = aStep->GetPreStepPoint()->GetTouchableHandle()->GetCopyNumber(1);
+
+   // get TOF
+   G4double TOF  = aStep->GetPreStepPoint()->GetGlobalTime();
+
+   G4double edep = aStep->GetTotalEnergyDeposit();
+   //   if (edep < 100*keV) return FALSE;
+   if (edep < 0*keV) return FALSE;                   // = HERE IS THE DIFFERENCE WITH GENERALSCORER 
+   G4int  index = aStep->GetTrack()->GetTrackID();
+   EvtMap->add(DSSSDNbr + DetNbr + index, TOF);
+   return TRUE;
+}
+
+void ComptonTelescopeScorerTrackerTOF::Initialize(G4HCofThisEvent* HCE)
+{
+   EvtMap = new G4THitsMap<G4double>(GetMultiFunctionalDetector()->GetName(), GetName());
+   if (HCID < 0) {
+      HCID = GetCollectionID(0);
+   }
+   HCE->AddHitsCollection(HCID, (G4VHitsCollection*)EvtMap);
+}
+
+void ComptonTelescopeScorerTrackerTOF::EndOfEvent(G4HCofThisEvent*)
+{
+}
+
+void ComptonTelescopeScorerTrackerTOF::Clear()
+{
+   EvtMap->clear();
+}
+
+void ComptonTelescopeScorerTrackerTOF::DrawAll()
+{
+}
+
+void ComptonTelescopeScorerTrackerTOF::PrintAll()
+{
+   G4cout << " MultiFunctionalDet  " << detector->GetName() << G4endl;
+   G4cout << " PrimitiveScorer " << GetName() << G4endl;
+   G4cout << " Number of entries " << EvtMap->entries() << G4endl;
+}
+
+
+
+
+
+//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
+// SecondStage (CsI) Tower Number Scorer (deal with multiple particle hit)
+ComptonTelescopeScorerCalorimeterTowerNumber::ComptonTelescopeScorerCalorimeterTowerNumber(G4String name, G4String volumeName, G4int depth)
+      : G4VPrimitiveScorer(name, depth), HCID(-1)
+{
+   m_VolumeName = volumeName;
+}
+
+ComptonTelescopeScorerCalorimeterTowerNumber::~ComptonTelescopeScorerCalorimeterTowerNumber()
+{
+}
+
+G4bool ComptonTelescopeScorerCalorimeterTowerNumber::ProcessHits(G4Step* aStep, G4TouchableHistory*)
+{
+   // get detector number
+   int DetNbr = GENERALSCORERS::PickUpDetectorNumber(aStep, m_VolumeName);
+   // int DetNbr  = aStep->GetPreStepPoint()->GetTouchableHandle()->GetCopyNumber(0); // this line does exactly the same than the line above
+   int DSSSDNbr  = aStep->GetPreStepPoint()->GetTouchableHandle()->GetCopyNumber(1);
+
+   // get energy
+   G4double edep = aStep->GetTotalEnergyDeposit();
+   if (edep < 0*keV) return FALSE;                   // = HERE IS THE DIFFERENCE WITH GENERALSCORER 
+   G4int  index = aStep->GetTrack()->GetTrackID();
+   EvtMap->set(DSSSDNbr + DetNbr + index, DetNbr);
+   return TRUE;
+}
+
+void ComptonTelescopeScorerCalorimeterTowerNumber::Initialize(G4HCofThisEvent* HCE)
+{
+   EvtMap = new G4THitsMap<G4int>(GetMultiFunctionalDetector()->GetName(), GetName());
+   if (HCID < 0) {
+      HCID = GetCollectionID(0);
+   }
+   HCE->AddHitsCollection(HCID, (G4VHitsCollection*)EvtMap);
+}
+
+void ComptonTelescopeScorerCalorimeterTowerNumber::EndOfEvent(G4HCofThisEvent*)
+{
+}
+
+void ComptonTelescopeScorerCalorimeterTowerNumber::Clear()
+{
+   EvtMap->clear();
+}
+
+void ComptonTelescopeScorerCalorimeterTowerNumber::DrawAll()
+{
+}
+
+void ComptonTelescopeScorerCalorimeterTowerNumber::PrintAll()
+{
+   G4cout << " MultiFunctionalDet  " << detector->GetName() << G4endl;
+   G4cout << " PrimitiveScorer " << GetName() << G4endl;
+   G4cout << " Number of entries " << EvtMap->entries() << G4endl;
+   std::map<G4int, G4int*>::iterator itr = EvtMap->GetMap()->begin();
+   for (; itr != EvtMap->GetMap()->end(); itr++) {
+      G4cout << "  copy no.: " << itr->first
+      << " Tower Number : " << G4BestUnit(*(itr->second), "DetectorNumber")
+      << G4endl;
+   }
+}
+
+
+//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
+// Calorimeter Energy Scorer (deal with multiple particle hit)
+ComptonTelescopeScorerCalorimeterEnergy::ComptonTelescopeScorerCalorimeterEnergy(G4String name, G4String volumeName, G4int depth)
+      : G4VPrimitiveScorer(name, depth), HCID(-1)
+{
+   m_VolumeName = volumeName;
+}
+
+ComptonTelescopeScorerCalorimeterEnergy::~ComptonTelescopeScorerCalorimeterEnergy()
+{
+}
+
+G4bool ComptonTelescopeScorerCalorimeterEnergy::ProcessHits(G4Step* aStep, G4TouchableHistory*)
+{
+   // get detector number
+   int DetNbr = GENERALSCORERS::PickUpDetectorNumber(aStep, m_VolumeName);
+   int DSSSDNbr  = aStep->GetPreStepPoint()->GetTouchableHandle()->GetCopyNumber(1);
+
+   // get energy
+   G4ThreeVector POS  = aStep->GetPreStepPoint()->GetPosition();
+   POS = aStep->GetPreStepPoint()->GetTouchableHandle()->GetHistory()->GetTopTransform().TransformPoint(POS);
+
+   G4double edep = aStep->GetTotalEnergyDeposit();
+   //if (edep < 100*keV) return FALSE;      
+   if (edep < 0*keV) return FALSE;      // = HERE IS THE DIFFERENCE WITH GENERALSCORER 
+   G4int  index = aStep->GetTrack()->GetTrackID();
+   EvtMap->add(DSSSDNbr + DetNbr + index, edep);
+   return TRUE;
+}
+
+void ComptonTelescopeScorerCalorimeterEnergy::Initialize(G4HCofThisEvent* HCE)
+{
+   EvtMap = new G4THitsMap<G4double>(GetMultiFunctionalDetector()->GetName(), GetName());
+   if (HCID < 0) {
+      HCID = GetCollectionID(0);
+   }
+   HCE->AddHitsCollection(HCID, (G4VHitsCollection*)EvtMap);
+}
+
+void ComptonTelescopeScorerCalorimeterEnergy::EndOfEvent(G4HCofThisEvent*)
+{
+}
+
+void ComptonTelescopeScorerCalorimeterEnergy::Clear()
+{
+   EvtMap->clear();
+}
+
+void ComptonTelescopeScorerCalorimeterEnergy::DrawAll()
+{
+}
+
+void ComptonTelescopeScorerCalorimeterEnergy::PrintAll()
+{
+   G4cout << " MultiFunctionalDet  " << detector->GetName() << G4endl;
+   G4cout << " PrimitiveScorer " << GetName() << G4endl;
+   G4cout << " Number of entries " << EvtMap->entries() << G4endl;
+   std::map<G4int, G4double*>::iterator itr = EvtMap->GetMap()->begin();
+   for (; itr != EvtMap->GetMap()->end(); itr++) {
+      G4cout << "  copy no.: " << itr->first
+      << "  energy deposit: " << G4BestUnit(*(itr->second), "Energy")
+      << G4endl;
+   }
+}
+
+
+//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
+// all added by Anna:
+
+// FirstStage DetectorNbr Scorer (deal with multiple particle hit)
+ComptonTelescopeScorerCalorimeterDetectorNumber::ComptonTelescopeScorerCalorimeterDetectorNumber(G4String name, G4String volumeName, G4int depth)
+      : G4VPrimitiveScorer(name, depth), HCID(-1)
+{
+   m_VolumeName = volumeName;
+}
+
+ComptonTelescopeScorerCalorimeterDetectorNumber::~ComptonTelescopeScorerCalorimeterDetectorNumber()
+{
+}
+
+G4bool ComptonTelescopeScorerCalorimeterDetectorNumber::ProcessHits(G4Step* aStep, G4TouchableHistory*)
+{
+   // get detector number
+   int DetNbr = GENERALSCORERS::PickUpDetectorNumber(aStep, m_VolumeName);
+
+   // get energy
+   G4int DetectorNbr  = aStep->GetPreStepPoint()->GetTouchableHandle()->GetCopyNumber(1);
+   //depth:0 is the world, 1 is the mother...
+   //AC instead of GetReplicaNumber(1)
+   //cout<<"****replica****"<<endl;
+   //cout<<"copy nbr"<<aStep->GetPreStepPoint()->GetTouchableHandle()->GetCopyNumber(1)<<endl;
+   //cout<<"replica nbr"<<aStep->GetPreStepPoint()->GetTouchableHandle()->GetReplicaNumber(1)<<endl;
+   //cout<<aStep->GetPreStepPoint()->GetTouchableHandle()->GetCopyNumber(2)<<endl;
+   //cout<<aStep->GetPreStepPoint()->GetTouchableHandle()->GetCopyNumber(0)<<endl;
+ 
+   G4double edep = aStep->GetTotalEnergyDeposit();
+   //   if (edep < 100*keV) return FALSE;
+   if (edep < 0*keV) return FALSE;                   // = HERE IS THE DIFFERENCE WITH GENERALSCORER 
+   G4int  index = aStep->GetTrack()->GetTrackID();
+   //cout<<"index "<<index<<endl;
+   //cout<<"DetNbr + index "<<DetNbr + index<<endl;
+   EvtMap->set(DetectorNbr + DetNbr + index, DetectorNbr);
+   return TRUE;
+
+}
+
+void ComptonTelescopeScorerCalorimeterDetectorNumber::Initialize(G4HCofThisEvent* HCE)
+{
+   EvtMap = new G4THitsMap<G4int>(GetMultiFunctionalDetector()->GetName(), GetName());
+   if (HCID < 0) {
+      HCID = GetCollectionID(0);
+   }
+   HCE->AddHitsCollection(HCID, (G4VHitsCollection*)EvtMap);
+}
+
+void ComptonTelescopeScorerCalorimeterDetectorNumber::EndOfEvent(G4HCofThisEvent*)
+{
+}
+
+void ComptonTelescopeScorerCalorimeterDetectorNumber::Clear()
+{
+   EvtMap->clear();
+}
+
+void ComptonTelescopeScorerCalorimeterDetectorNumber::DrawAll()
+{
+}
+
+void ComptonTelescopeScorerCalorimeterDetectorNumber::PrintAll()
+{
+   G4cout << " MultiFunctionalDet  " << detector->GetName() << G4endl;
+   G4cout << " PrimitiveScorer " << GetName() << G4endl;
+   G4cout << " Number of entries " << EvtMap->entries() << G4endl;
+      std::map<G4int, G4int*>::iterator itr = EvtMap->GetMap()->begin();
+      for (; itr != EvtMap->GetMap()->end(); itr++) {
+         G4cout << "  copy no.: " << itr->first
+         << "  detector nbr: " << G4BestUnit(*(itr->second), "Detector")
+       << G4endl;
+   }
+}
diff --git a/NPSimulation/src/DetectorConstruction.cc b/NPSimulation/src/DetectorConstruction.cc
index 43dccfde964fe7558a1f3ee677e4a7f649386a6c..8101ed47cd79abff216495cd448f47ff048ecc71 100644
--- a/NPSimulation/src/DetectorConstruction.cc
+++ b/NPSimulation/src/DetectorConstruction.cc
@@ -40,16 +40,18 @@
 #include "G4RotationMatrix.hh"
 
 // Detector class
+#include "AnnularS1.hh"
+#include "Chamber.hh"
+#include "ComptonTelescope.hh"
 #include "DummyDetector.hh"
-#include "MUST2Array.hh"
+#include "Eurogam.hh"
 #include "GaspardTracker.hh"
 #include "HydeTracker.hh"
-#include "AnnularS1.hh"
+#include "MUST2Array.hh"
+#include "Paris.hh"
+#include "Plastic.hh"
 #include "Target.hh"
-#include "Chamber.hh"
 #include "ThinSi.hh"
-#include "Plastic.hh"
-#include "Paris.hh"
 #include "Shield.hh"
 #include "W1.hh"
 
@@ -93,9 +95,9 @@ G4VPhysicalVolume* DetectorConstruction::Construct()
 
    //------------------------------world volume
 
-   G4double world_x = 80.0 * cm;
-   G4double world_y = 80.0 * cm;
-   G4double world_z = 80.0 * cm;
+   G4double world_x = 10.0 * m;
+   G4double world_y = 10.0 * m;
+   G4double world_z = 10.0 * m;
 
    G4Box* world_box
    = new G4Box("world_box", world_x, world_y, world_z);
@@ -137,20 +139,26 @@ G4VPhysicalVolume* DetectorConstruction::Construct()
    return world_phys;
 }
 
+
+
 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
 void DetectorConstruction::AddDetector(VDetector* NewDetector)
 {
    // Add new detector to vector
    m_Detectors.push_back(NewDetector);
+
    // Initialize Scorer
    NewDetector->InitializeScorers();
+
    // Construct new detector
    NewDetector->ConstructDetector(world_log);
+
    // Add Detector to TTree
    NewDetector->InitializeRootOutput();
-   
 }
 
+
+
 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
 void DetectorConstruction::ReadConfigurationFile(string Path)
 {
@@ -159,18 +167,20 @@ void DetectorConstruction::ReadConfigurationFile(string Path)
    string DataBuffer;
 
    /////////Checking Boolean////////////////////
-   bool cMUST2           = false;
-   bool cAddThinSi       = false;
-   bool cGeneralTarget   = false;
-   bool cGeneralChamber  = false;
-   bool cGPDTracker      = false;   // Gaspard Tracker
-   bool cHYDTracker      = false;   // Hyde detector
-   bool cS1              = false;
-   bool cPlastic         = false;
-   bool cDummy           = false;
-   bool cParis           = false;   // Paris Calorimeter
-   bool cShield          = false;   // Paris Shield CsI
-   bool cW1              = false;   // W1 Micron DSSD
+   bool cAddThinSi        = false;
+   bool cComptonTelescope = false;
+   bool cDummy            = false;
+   bool cEurogam          = false;
+   bool cGeneralTarget    = false;
+   bool cGeneralChamber   = false;
+   bool cGPDTracker       = false;   // Gaspard Tracker
+   bool cHYDTracker       = false;   // Hyde detector
+   bool cMUST2            = false;
+   bool cPlastic          = false;
+   bool cParis            = false;   // Paris Calorimeter
+   bool cS1               = false;
+   bool cShield           = false;   // Paris Shield CsI
+   bool cW1               = false;   // W1 Micron DSSD
    //////////////////////////////////////////////////////////////////////////////////////////
    ifstream ConfigFile;
    ConfigFile.open(Path.c_str());
@@ -208,6 +218,46 @@ void DetectorConstruction::ReadConfigurationFile(string Path)
       }
 
 
+      /////////////////////////////////////////////////////
+      //////////// Search for ComptonTelescope ////////////
+      /////////////////////////////////////////////////////
+      else if (LineBuffer.compare(0, 16, "ComptonTelescope") == 0 && cComptonTelescope == false) {
+         cComptonTelescope = true;
+         G4cout << "//////// ComptonTelescope  ////////" << G4endl;
+
+         // Instantiate the new array as a VDetector Object
+         VDetector* myDetector = new ComptonTelescope();
+
+         // Read Position of detector
+         ConfigFile.close();
+         myDetector->ReadConfiguration(Path);
+         ConfigFile.open(Path.c_str());
+
+         // Add array to the VDetector Vector
+         AddDetector(myDetector);
+      }
+
+
+      ////////////////////////////////////////////
+      //////////// Search for Eurogam ////////////
+      ////////////////////////////////////////////
+      else if (LineBuffer.compare(0, 7, "Eurogam") == 0 && cEurogam == false) {
+         cEurogam = true;
+         G4cout << "//////// Eurogam  ////////" << G4endl;
+
+         // Instantiate the new array as a VDetector Object
+         VDetector* myDetector = new Eurogam();
+
+         // Read Position of detector
+         ConfigFile.close();
+         myDetector->ReadConfiguration(Path);
+         ConfigFile.open(Path.c_str());
+
+         // Add array to the VDetector Vector
+         AddDetector(myDetector);
+      }
+
+
       ////////////////////////////////////////////
       //////////// Search for Gaspard ////////////
       ////////////////////////////////////////////
diff --git a/NPSimulation/src/Eurogam.cc b/NPSimulation/src/Eurogam.cc
new file mode 100755
index 0000000000000000000000000000000000000000..d9d2c9ed4fa682de3e77ab986370e73d6a489444
--- /dev/null
+++ b/NPSimulation/src/Eurogam.cc
@@ -0,0 +1,694 @@
+/*****************************************************************************
+ * Copyright (C) 2009   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: N. de Sereville  contact address: deserevi@ipno.in2p3.fr *
+ *                                                                           *
+ * Creation Date  : December 2010                                            *
+ * Last update    :                                                          *
+ *---------------------------------------------------------------------------*
+ * Decription:                                                               *
+ *     This class describes the Eurogam germanium detector                   *
+ *                                                                           *
+ *---------------------------------------------------------------------------*
+ * Comment:                                                                  *
+ *                                                                           *
+ *****************************************************************************/
+
+// C++ headers
+#include <sstream>
+#include <cmath>
+#include <limits>
+
+//G4 Geometry object
+#include "G4Box.hh"
+#include "G4Tubs.hh"
+#include "G4Cons.hh"
+#include "G4UnionSolid.hh"
+#include "G4SubtractionSolid.hh"
+#include "G4IntersectionSolid.hh"
+
+//G4 sensitive
+#include "G4SDManager.hh"
+#include "G4MultiFunctionalDetector.hh"
+
+//G4 various object
+#include "G4MaterialTable.hh"
+#include "G4Element.hh"
+#include "G4ElementTable.hh"
+#include "G4Transform3D.hh"
+#include "G4PVPlacement.hh"
+#include "G4VisAttributes.hh"
+#include "G4Colour.hh"
+
+// NPTool header
+#include "Eurogam.hh"
+#include "GeneralScorers.hh"
+#include "RootOutput.h"
+using namespace GENERALSCORERS;
+
+// CLHEP header
+#include "CLHEP/Random/RandGauss.h"
+
+using namespace std;
+using namespace CLHEP;
+using namespace EUROGAMDETECTOR;
+
+
+
+//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
+// Eurogam Specific Method
+Eurogam::Eurogam()
+{
+   InitializeMaterial();
+   m_Event = new TEurogamData();
+}
+
+
+
+Eurogam::~Eurogam()
+{
+   // Materials
+   delete m_Material_Vacuum;
+   delete m_Material_Aluminium;
+   delete m_Material_Silicon;
+   delete m_Material_Germanium;
+
+   delete m_Event;
+   delete m_EurogamScorer;
+}
+
+
+
+//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
+void Eurogam::AddEurogamModule(G4double R, G4double Theta, G4double Phi,
+                               G4double beta_u, G4double beta_v, G4double beta_w)
+{
+   m_R.push_back(R);
+   m_Theta.push_back(Theta);
+   m_Phi.push_back(Phi);
+   m_beta_u.push_back(beta_u);
+   m_beta_v.push_back(beta_v);
+   m_beta_w.push_back(beta_w);
+}
+
+
+
+// Read stream at Configfile to pick-up parameters of detector (Position,...)
+// Called in DetecorConstruction::ReadDetextorConfiguration Method
+void Eurogam::ReadConfiguration(string Path)
+{
+   ifstream ConfigFile;
+   ConfigFile.open(Path.c_str());
+   string LineBuffer, DataBuffer;
+
+   G4double R = 0, Theta = 0, Phi = 0;
+   G4double beta_u = 0, beta_v = 0, beta_w = 0;
+
+   bool check_Theta   = false;
+   bool check_Phi     = false;
+   bool check_R       = false;
+   bool ReadingStatus = false;
+
+
+   while (!ConfigFile.eof()) {
+      getline(ConfigFile, LineBuffer);
+
+      // If line is a Start Up Eurogam bloc, Reading toggle to true
+      if (LineBuffer.compare(0, 7, "Eurogam") == 0) {
+         G4cout << "///" << G4endl;
+         G4cout << "Eurogam Module found: " << G4endl;
+         ReadingStatus = true;
+      }
+      // Else don't toggle to Reading Block Status
+      else ReadingStatus = false;
+
+      // Reading Block
+      while (ReadingStatus) {
+         // Pickup Next Word 
+         ConfigFile >> DataBuffer;
+
+         // Comment Line 
+         if (DataBuffer.compare(0, 1, "%") == 0) {
+            ConfigFile.ignore(std::numeric_limits<std::streamsize>::max(), '\n');
+         }
+
+         // Finding another telescope (safety), toggle out
+         else if (DataBuffer.compare(0, 7, "Eurogam") == 0) {
+            cout << "WARNING: Another Detector is find before standard sequence of Token, Error may occured in Telecope definition" << endl;
+            ReadingStatus = false;
+         }
+
+         // Angle method
+         else if (DataBuffer.compare(0, 2, "R=") == 0) {
+            check_R = true;
+            ConfigFile >> DataBuffer ;
+            R = atof(DataBuffer.c_str()) ;
+            R = R * mm;
+            cout << "R:  " << R/mm << endl;
+         }
+
+         else if (DataBuffer.compare(0, 6, "THETA=") == 0) {
+            check_Theta = true;
+            ConfigFile >> DataBuffer ;
+            Theta = atof(DataBuffer.c_str()) ;
+            Theta = Theta * deg;
+            cout << "Theta:  " << Theta / deg << endl;
+         }
+
+         else if (DataBuffer.compare(0, 4, "PHI=") == 0) {
+            check_Phi = true;
+            ConfigFile >> DataBuffer ;
+            Phi = atof(DataBuffer.c_str()) ;
+            Phi = Phi * deg;
+            cout << "Phi:  " << Phi / deg << endl;
+         }
+
+         else if (DataBuffer.compare(0, 5, "BETA=") == 0) {
+            ConfigFile >> DataBuffer ;
+            beta_u = atof(DataBuffer.c_str()) ;
+            beta_u = beta_u * deg   ;
+            ConfigFile >> DataBuffer ;
+            beta_v = atof(DataBuffer.c_str()) ;
+            beta_v = beta_v * deg   ;
+            ConfigFile >> DataBuffer ;
+            beta_w = atof(DataBuffer.c_str()) ;
+            beta_w = beta_w * deg   ;
+            G4cout << "Beta:  " << beta_u / deg << " " << beta_v / deg << " " << beta_w / deg << G4endl  ;
+         }
+         
+         ///////////////////////////////////////////////////
+         // If no Detector Token and no comment, toggle out
+         else {
+            ReadingStatus = false; 
+            G4cout << "Wrong Token Sequence: Getting out " << DataBuffer << G4endl;
+         }
+
+         /////////////////////////////////////////////////
+         // If All necessary information there, toggle out
+         if (check_Theta && check_Phi && check_R) { 
+            AddEurogamModule(R, Theta, Phi, beta_u, beta_v, beta_w);
+
+            // Reinitialisation of Check Boolean 
+            check_R       = false;
+            check_Theta   = false;
+            check_Phi     = false;
+            ReadingStatus = false;
+            cout << "///"<< endl;
+      	 }
+      }
+   }
+}
+
+
+
+// Construct detector and inialise sensitive part.
+// Called After DetecorConstruction::AddDetector Method
+void Eurogam::ConstructDetector(G4LogicalVolume* world)
+{
+   G4ThreeVector     Det_pos = G4ThreeVector(0, 0, 0);
+   G4RotationMatrix* Det_rot = new G4RotationMatrix();
+
+   for (unsigned short i = 0; i < m_R.size(); i++) {
+      G4double Theta = m_Theta[i];
+      G4double Phi   = m_Phi[i];
+
+      // (u,v,w) unitary vector associated to the detector referencial
+      // (u,v) // to detector front
+      // w perpendicular to (u,v) plan and pointing to the detector back
+      // Phi is angle between X axis and projection in (X,Y) plan
+      // Theta is angle between  position vector and z axis
+      G4double wX = m_R[i] * sin(Theta / rad) * cos(Phi / rad);
+      G4double wY = m_R[i] * sin(Theta / rad) * sin(Phi / rad);
+      G4double wZ = m_R[i] * cos(Theta / rad);
+      G4ThreeVector dirw = G4ThreeVector(wX, wY, wZ);
+
+      // vector corresponding to the center of the module
+      Det_pos = dirw;
+      dirw = dirw.unit();
+
+      // vector parallel to one axis of silicon plane
+      G4double ii = cos(Theta / rad) * cos(Phi / rad);
+      G4double jj = cos(Theta / rad) * sin(Phi / rad);
+      G4double kk = -sin(Theta / rad);
+      G4ThreeVector Y = G4ThreeVector(ii, jj, kk);
+
+      // build rotation matrix to go from the lab referential 
+      // to the telescope referential
+      G4ThreeVector diru = dirw.cross(Y);
+      G4ThreeVector dirv = dirw.cross(diru);
+      dirv = dirv.unit();
+      diru = diru.unit();
+      Det_rot = new G4RotationMatrix(diru, dirv, dirw);
+
+      // Detector is rotated by Beta angles around the v axis.
+      Det_rot->rotate(m_beta_u[i], diru);
+      Det_rot->rotate(m_beta_v[i], dirv);
+      Det_rot->rotate(m_beta_w[i], dirw);
+
+      // translation to place the detector
+      Det_pos += dirw * EurogamDepth * 0.5;
+
+      // Build geometry
+      VolumeMaker(i + 1, Det_pos, Det_rot, world);
+   }
+}
+
+
+
+void Eurogam::VolumeMaker(G4int             DetNumber,
+                          G4ThreeVector     DetPos, 
+                          G4RotationMatrix* DetRot,
+                          G4LogicalVolume*  world)
+{
+
+   ////////////////////////////////////////////////////////////////
+   ////////////// Starting Volume Definition //////////////////////
+   ////////////////////////////////////////////////////////////////		
+   // Name of the module
+   std::ostringstream DetectorNumber;
+   DetectorNumber << DetNumber;
+   G4String Name = "Eurogam" + DetectorNumber.str();
+
+   // EUROGAM box
+   G4Box* solidEurogam = new G4Box(Name, EurogamSize/2, EurogamSize/2, EurogamDepth/2);
+
+   G4LogicalVolume* logicEurogam = new G4LogicalVolume(solidEurogam, m_Material_Vacuum, Name, 0, 0, 0); 
+
+   new G4PVPlacement(G4Transform3D(*DetRot, DetPos), logicEurogam, Name, world, false, 0);
+
+   logicEurogam->SetVisAttributes(G4VisAttributes::Invisible);
+
+   // Germanium detector itself
+   // Capot en Aluminium
+   // Epaisseur du capot
+   G4double AluThickness = 1*mm;
+   // Fermeture du capot par 2 disques pleins
+   G4double RMinFront = 0, RMaxFront = 66.2/2*mm, DzFront = AluThickness;
+   G4double RMinBack  = 0, RMaxBack  = 86.2/2*mm, DzBack  = AluThickness;
+   // Composante conique du capot
+   G4double RMin1Cone = RMaxFront - DzFront, RMax1Cone = RMaxFront;
+   G4double RMin2Cone = RMaxBack  - DzBack,  RMax2Cone = RMaxBack;
+   G4double DzCone = 101.5*mm;
+   // Composante cylindrique du capot
+   G4double RMinCylin = RMaxBack - DzBack, RMaxCylin = RMaxBack;
+   G4double DzCylin = 163.1*mm;
+
+   // Capot avant
+   G4VSolid* solidCapotFront = new G4Tubs("solidCapotFront", RMinFront, RMaxFront, DzFront/2, 0*degree, 360*degree);
+
+   G4LogicalVolume* logicCapotFront = new G4LogicalVolume(solidCapotFront, // its solid
+                                                          m_Material_Aluminium,       // its material
+                                                          "logicCapotFront");   // its name
+
+   G4double OffsetZCapotFront = -(EurogamDepth - DzFront)/2;
+   G4ThreeVector ZposCapotFront = G4ThreeVector(0, 0, OffsetZCapotFront);
+   new G4PVPlacement(0,     // no rotation
+                     ZposCapotFront,   // at (0,0,Dz)
+                     logicCapotFront,  // its logical name
+                     Name + "_CapotFront",  // its name
+                     logicEurogam,  // its mother name
+                     false,      // no boolean operation
+                     0);      // copy number
+
+   // Partie conique
+   G4VSolid* solidCapotCone = new G4Cons("solidCapotCone", RMin1Cone, RMax1Cone, RMin2Cone, RMax2Cone, DzCone/2, 0*degree, 360*degree);
+
+   G4LogicalVolume* logicCapotCone = new G4LogicalVolume(solidCapotCone,      //its solid
+                                                         m_Material_Aluminium,    //its material
+                                                        "logicCapotCone");    //its name
+
+   G4double OffsetZCapotCone = -(EurogamDepth/2 - DzFront - DzCone/2);
+   G4ThreeVector ZposCapotCone = G4ThreeVector(0, 0, OffsetZCapotCone);
+   new G4PVPlacement(0,      // no rotation
+                     ZposCapotCone,  // at (0,0,Dz)
+                     logicCapotCone, // its logical name
+                     Name + "_CapotCone", // its name
+                     logicEurogam,   // its mother name
+                     false,    // no boolean operation
+                     0);    // copy number
+
+   // Partie cylindrique
+   G4VSolid* solidCapotCylin = new G4Tubs("solidCapotCylin", RMinCylin, RMaxCylin, DzCylin/2, 0*degree, 360*degree);
+
+   G4LogicalVolume* logicCapotCylin = new G4LogicalVolume(solidCapotCylin, //its solid
+                                                          m_Material_Aluminium,      //its material
+                                                          "logicCapotCylin");     //its name
+
+   G4double OffsetZCapotCylin = -(EurogamDepth/2 - DzFront - DzCone - DzCylin/2);
+   G4ThreeVector ZposCapotCylin = G4ThreeVector(0, 0, OffsetZCapotCylin);
+   new G4PVPlacement(0,     // no rotation
+                     ZposCapotCylin,   // at (0,0,Dz)
+                     logicCapotCylin,  // its logical name
+                     Name + "_CapotCylin",  // its name
+                     logicEurogam,  // its mother name
+                     false,      // no boolean operation
+                     0);      // copy number
+
+  // Capot arriere
+  G4VSolid* solidCapotBack = new G4Tubs("solidCapotBack", RMinBack, RMaxBack, DzBack/2, 0*degree, 360*degree);
+
+  G4LogicalVolume* logicCapotBack = new G4LogicalVolume(solidCapotBack,      //its solid
+                                                        m_Material_Aluminium,     //its material
+                                                        "logicCapotBack");     //its name
+
+   G4double OffsetZCapotBack = -(EurogamDepth/2 - DzFront - DzCone - DzCylin - DzBack/2);
+   G4ThreeVector ZposCapotBack = G4ThreeVector(0, 0, OffsetZCapotBack);
+   new G4PVPlacement(0,         // no rotation
+                     ZposCapotBack,  // at (0,0,Dz)
+                     logicCapotBack, // its logical name
+                     Name + "_CapotBack", // its name
+                     logicEurogam,   // its mother name
+                     false,    // no boolean operation
+                     0);    // copy number
+
+   // cristal de Ge et doigt froid
+   G4double RMinGe = 0, RMaxGe = 63.1/2*mm, DzGe = 78.5*mm;
+   G4double SPhiGe = 0, DPhiGe = 360*degree;
+   G4double distCapotGe = 20*mm;
+   G4double RMinDoigt = 0, RMaxDoigt = 11.2/2*mm, DzDoigt = 70*mm;
+   G4double SPhiDoigt = 0*degree, DPhiDoigt = 360*degree;
+
+   G4VSolid* solidDetec = new G4Tubs("solidGermanium",           //its name
+                                     RMinGe, RMaxGe, DzGe/2,      //its size
+                                     SPhiGe, DPhiGe);        //its size
+
+   G4VSolid* solidDoigt = new G4Tubs("solidDoigt",
+                                     RMinDoigt, RMaxDoigt, DzDoigt/2,
+                                     SPhiDoigt, DPhiDoigt);
+
+   // !!! pour soustraire le doigt froid du cristal initial de Germainum
+   // cela se fait dans le repere du cristal de Germanium
+   // *************** changer signe - en signe + ???????????
+   G4double OffsetZDoigt = - (DzGe/2 - DzDoigt/2);
+   G4ThreeVector ZposDoigt = G4ThreeVector(0, 0, OffsetZDoigt);
+   G4VSolid* solidSubtrac = new G4SubtractionSolid("solidCristalGe", solidDetec, solidDoigt, 0, ZposDoigt);
+
+   G4LogicalVolume* logicDetec= new G4LogicalVolume(solidSubtrac,    //its solid
+//                                                    m_Material_Germanium,    //its material
+                                                    m_Material_Silicon,    //its material
+                                                    "logicCristalGe");     //its name
+
+//   G4LogicalVolume* logicDetec= new G4LogicalVolume(solidDetec,      //its solid
+//                                                    m_Material_Germanium,    //its material
+//                                                    "logicCristalGe");     //its name
+                                                                                     
+
+   G4double OffsetZGe = -(EurogamDepth/2 - distCapotGe - DzGe/2);
+   G4ThreeVector ZposGe = G4ThreeVector(0, 0, OffsetZGe);
+   new G4PVPlacement(0,    //no rotation
+                     ZposGe, //at (0,0,0)
+                     logicDetec, //its logical volume
+                     Name + "_CristalGe",    //its name
+                     logicEurogam,  //its mother  volume
+                     false,      //no boolean operation
+                     0);      //copy number
+
+   // Set Ge detector sensible
+   logicDetec->SetSensitiveDetector(m_EurogamScorer);
+
+   // Visualisation of FirstStage Strip
+   G4VisAttributes* DetectorVisAtt = new G4VisAttributes(G4Colour(0.0, 0.0, 0.9));   // blue
+   logicDetec->SetVisAttributes(DetectorVisAtt);
+}
+
+
+
+// Add Detector branch to the EventTree.
+// Called After DetecorConstruction::AddDetector Method
+void Eurogam::InitializeRootOutput()
+{
+   RootOutput *pAnalysis = RootOutput::getInstance();
+   TTree *pTree = pAnalysis->GetTree();
+   pTree->Branch("Eurogam", "TEurogamData", &m_Event) ;
+}
+
+
+
+// Read sensitive part and fill the Root tree.
+// Called at in the EventAction::EndOfEventAvtion
+void Eurogam::ReadSensitive(const G4Event* event)
+{
+   // Clear the data of the TEurogamData object
+   m_Event->Clear();
+
+   //////////////////////////////////////////////////////////////////////////////////////
+   //////////////////////// Used to Read Event Map of detector //////////////////////////
+   //////////////////////////////////////////////////////////////////////////////////////
+   std::map<G4int, G4int*>::iterator    DetectorNumber_itr;
+   std::map<G4int, G4double*>::iterator Energy_itr;
+   std::map<G4int, G4double*>::iterator Time_itr;
+   std::map<G4int, G4double*>::iterator Pos_X_itr;
+   std::map<G4int, G4double*>::iterator Pos_Y_itr;
+   std::map<G4int, G4double*>::iterator Pos_Z_itr;
+   std::map<G4int, G4double*>::iterator Ang_Theta_itr;
+   std::map<G4int, G4double*>::iterator Ang_Phi_itr;
+
+   G4THitsMap<G4int>*    DetectorNumberHitMap;
+   G4THitsMap<G4double>* EnergyHitMap;
+   G4THitsMap<G4double>* TimeHitMap;
+   G4THitsMap<G4double>* PosXHitMap;
+   G4THitsMap<G4double>* PosYHitMap;
+   G4THitsMap<G4double>* PosZHitMap;
+   G4THitsMap<G4double>* AngThetaHitMap;
+   G4THitsMap<G4double>* AngPhiHitMap;
+
+   // Read the Scorer associate to the Silicon Strip
+   //Detector Number
+   G4int DetCollectionID = G4SDManager::GetSDMpointer()->GetCollectionID("EurogamScorer/DetectorNumber");
+   DetectorNumberHitMap = (G4THitsMap<G4int>*)(event->GetHCofThisEvent()->GetHC(DetCollectionID));
+   DetectorNumber_itr =  DetectorNumberHitMap->GetMap()->begin();
+
+   // Energy
+   G4int EnergyCollectionID = G4SDManager::GetSDMpointer()->GetCollectionID("EurogamScorer/Energy");
+   EnergyHitMap = (G4THitsMap<G4double>*)(event->GetHCofThisEvent()->GetHC(EnergyCollectionID));
+   Energy_itr = EnergyHitMap->GetMap()->begin();
+
+   //Time of Flight
+   G4int TimeCollectionID = G4SDManager::GetSDMpointer()->GetCollectionID("EurogamScorer/Time");
+   TimeHitMap = (G4THitsMap<G4double>*)(event->GetHCofThisEvent()->GetHC(TimeCollectionID));
+   Time_itr = TimeHitMap->GetMap()->begin();
+
+   //Interaction Coordinate X
+   G4int InterCoordXCollectionID = G4SDManager::GetSDMpointer()->GetCollectionID("EurogamScorer/InterCoordX");
+   PosXHitMap = (G4THitsMap<G4double>*)(event->GetHCofThisEvent()->GetHC(InterCoordXCollectionID));
+   Pos_X_itr = PosXHitMap->GetMap()->begin();
+
+   //Interaction Coordinate Y
+   G4int InterCoordYCollectionID = G4SDManager::GetSDMpointer()->GetCollectionID("EurogamScorer/InterCoordY");
+   PosYHitMap = (G4THitsMap<G4double>*)(event->GetHCofThisEvent()->GetHC(InterCoordYCollectionID));
+   Pos_Y_itr = PosYHitMap->GetMap()->begin();
+
+   //Interaction Coordinate Z
+   G4int InterCoordZCollectionID = G4SDManager::GetSDMpointer()->GetCollectionID("EurogamScorer/InterCoordZ");
+   PosZHitMap = (G4THitsMap<G4double>*)(event->GetHCofThisEvent()->GetHC(InterCoordZCollectionID));
+   Pos_Z_itr = PosXHitMap->GetMap()->begin();
+
+   //Interaction Coordinate Angle Theta
+   G4int InterCoordAngThetaCollectionID = G4SDManager::GetSDMpointer()->GetCollectionID("EurogamScorer/InterCoordAngTheta");
+   AngThetaHitMap = (G4THitsMap<G4double>*)(event->GetHCofThisEvent()->GetHC(InterCoordAngThetaCollectionID));
+   Ang_Theta_itr = AngThetaHitMap->GetMap()->begin();
+
+   //Interaction Coordinate Angle Phi
+   G4int InterCoordAngPhiCollectionID = G4SDManager::GetSDMpointer()->GetCollectionID("EurogamScorer/InterCoordAngPhi");
+   AngPhiHitMap = (G4THitsMap<G4double>*)(event->GetHCofThisEvent()->GetHC(InterCoordAngPhiCollectionID));
+   Ang_Phi_itr = AngPhiHitMap->GetMap()->begin();
+
+   // Check the size of different map
+   G4int sizeN = DetectorNumberHitMap->entries();
+   G4int sizeE = EnergyHitMap->entries();
+   G4int sizeT = TimeHitMap->entries();
+   G4int sizeX = PosXHitMap->entries();
+
+/*   if (sizeN != sizeE || sizeE != sizeT) {
+      G4cout << "No match size Eurogam Event Map: sE:" << sizeE << " sT:" << sizeT << endl;
+      return;
+   }*/
+   G4cout << "*******SIZE********: " << sizeN << "  " << sizeE << "  " << sizeT << "  " << sizeX << G4endl;
+
+   G4double Etot = 0;
+
+   // Loop on detector number
+   for (G4int l = 0; l < sizeN; l++) {
+      G4double N     = *(DetectorNumber_itr->second);
+      G4int NTrackID =   DetectorNumber_itr->first - N;
+      G4cout << "NTrackID: " << NTrackID << "  " << N << G4endl;
+
+      if (N > 0) {
+         // Fill detector number
+         m_Event->SetEurogamDetectorNumber(N);
+
+         // Energy
+         Energy_itr = EnergyHitMap->GetMap()->begin();
+         for (G4int l = 0; l < sizeE; l++) {
+            G4int ETrackID =   Energy_itr->first - N;
+            G4double E     = *(Energy_itr->second);
+            G4cout << "ETrackID, E: " << ETrackID << "   " << E << G4endl;
+            if (ETrackID == NTrackID) {
+               Etot += E;
+//               m_Event->SetEurogamEnergy(RandGauss::shoot(E, 1));
+               // Fill energy loss for each step
+//               m_Event->SetEurogamEnergy(E*1e3);
+            }
+            Energy_itr++;
+         }
+
+         //  Time
+         Time_itr = TimeHitMap->GetMap()->begin();
+         for (G4int h = 0; h < sizeT; h++) {
+            G4int TTrackID =   Time_itr->first - N;
+            G4double T     = *(Time_itr->second);
+            if (TTrackID == NTrackID) {
+               m_Event->SetEurogamTime(RandGauss::shoot(T, 1));
+            }
+            Time_itr++;
+         }
+
+         // Pos X
+         Pos_X_itr = PosXHitMap->GetMap()->begin();
+         for (G4int h = 0; h < PosXHitMap->entries(); h++) {
+            G4int PosXTrackID =   Pos_X_itr->first - N;
+            G4double PosX     = *(Pos_X_itr->second);
+            if (PosXTrackID == NTrackID) {
+               ms_InterCoord->SetDetectedPositionX(PosX);
+            }
+            Pos_X_itr++;
+         }
+
+         // Pos Y
+         Pos_Y_itr = PosYHitMap->GetMap()->begin();
+         for (G4int h = 0; h < PosYHitMap->entries(); h++) {
+            G4int PosYTrackID =   Pos_Y_itr->first - N;
+            G4double PosY     = *(Pos_Y_itr->second);
+            if (PosYTrackID == NTrackID) {
+               ms_InterCoord->SetDetectedPositionY(PosY);
+            }
+            Pos_Y_itr++;
+         }
+
+         // Pos Z
+         Pos_Z_itr = PosZHitMap->GetMap()->begin();
+         for (G4int h = 0; h < PosZHitMap->entries(); h++) {
+            G4int PosZTrackID =   Pos_Z_itr->first - N;
+            G4double PosZ     = *(Pos_Z_itr->second);
+            if (PosZTrackID == NTrackID) {
+               ms_InterCoord->SetDetectedPositionZ(PosZ);
+            }
+            Pos_Z_itr++;
+         }
+
+         // Angle Theta
+         Ang_Theta_itr = AngThetaHitMap->GetMap()->begin();
+         for (G4int h = 0; h < AngThetaHitMap->entries(); h++) {
+            G4int AngThetaTrackID =   Ang_Theta_itr->first - N;
+            G4double AngTheta     = *(Ang_Theta_itr->second);
+            if (AngThetaTrackID == NTrackID) {
+               ms_InterCoord->SetDetectedAngleTheta(AngTheta);
+            }
+            Ang_Theta_itr++;
+         }
+
+         // Angle Phi
+         Ang_Phi_itr = AngPhiHitMap->GetMap()->begin();
+         for (G4int h = 0; h < AngPhiHitMap->entries(); h++) {
+            G4int AngPhiTrackID =   Ang_Phi_itr->first - N;
+            G4double AngPhi     = *(Ang_Phi_itr->second);
+            if (AngPhiTrackID == NTrackID) {
+               ms_InterCoord->SetDetectedAnglePhi(AngPhi);
+            }
+            Ang_Phi_itr++;
+         }
+
+      }
+      DetectorNumber_itr++;
+   }
+
+   // Fill total energy here
+   if (Etot > 0) m_Event->SetEurogamEnergy(RandGauss::shoot(Etot*1e3, 1));
+
+   // clear map for next event
+   DetectorNumberHitMap    -> clear();
+   EnergyHitMap            -> clear();
+   TimeHitMap              -> clear();
+   PosXHitMap              -> clear();
+   PosYHitMap              -> clear();
+   PosZHitMap              -> clear();
+   AngThetaHitMap          -> clear();
+   AngPhiHitMap            -> clear();
+}
+
+
+
+////////////////////////////////////////////////////////////////
+void Eurogam::InitializeMaterial()
+{
+   ////////////////////////////////////////////////////////////////
+   /////////////////Element  Definition ///////////////////////////
+   ////////////////////////////////////////////////////////////////
+   G4String symbol;
+   G4double density = 0, a = 0, z = 0;
+   G4int ncomponents = 0;
+
+   // Elements
+   G4Element* N  = new G4Element("Nitrogen" , symbol = "N",  z = 7, a = 14.01  * g / mole);
+   G4Element* O  = new G4Element("Oxigen"   , symbol = "O",  z = 8, a = 16.00  * g / mole);
+   G4Element* Al = new G4Element("Aluminium", symbol = "Al", z= 13, a = 26.98  * g / mole);
+   G4Element* Si = new G4Element("Silicon"  , symbol = "Si", z= 14, a = 28.09  * g / mole);
+   G4Element* Ge = new G4Element("Germanium", symbol = "Ge", z= 32, a = 72.61  * g / mole);
+
+
+   ////////////////////////////////////////////////////////////////
+   /////////////////Material Definition ///////////////////////////
+   ////////////////////////////////////////////////////////////////
+   //  Vacuum
+   density = 0.000000001 * mg / cm3;
+   m_Material_Vacuum = new G4Material("Vacuum", density, ncomponents = 2);
+   m_Material_Vacuum->AddElement(N, .7);
+   m_Material_Vacuum->AddElement(O, .3);
+
+   // Aluminium
+   m_Material_Aluminium = new G4Material("Aluminium", density= 2.699*g/cm3, ncomponents=1);
+   m_Material_Aluminium->AddElement(Al, 1);
+
+   // Siliclum
+   m_Material_Silicon = new G4Material("Silicium", density = 2.321*g/cm3, ncomponents=1);
+   m_Material_Silicon->AddElement(Si, 1);
+
+   // Germanium
+   m_Material_Germanium = new G4Material("Germanium", density= 5.323*g/cm3, ncomponents=1);
+   m_Material_Germanium->AddElement(Ge, 1);
+}
+
+
+
+////////////////////////////////////////////////////////////////	
+void Eurogam::InitializeScorers() 
+{ 
+   // Eurogam associated scorer
+   m_EurogamScorer                                      = new G4MultiFunctionalDetector("EurogamScorer");
+   G4VPrimitiveScorer* DetNbr                           = new GENERALSCORERS::PSDetectorNumber("DetectorNumber", "Eurogam", 0);
+   G4VPrimitiveScorer* Energy                           = new GENERALSCORERS::PSEnergy("Energy","Eurogam", 0);
+   G4VPrimitiveScorer* TOF                              = new GENERALSCORERS::PSTOF("Time", "Eurogam", 0);
+   G4VPrimitiveScorer* InteractionCoordinatesX          = new GENERALSCORERS::PSInteractionCoordinatesX("InterCoordX", "Eurogam", 0);
+   G4VPrimitiveScorer* InteractionCoordinatesY          = new GENERALSCORERS::PSInteractionCoordinatesY("InterCoordY", "Eurogam", 0);
+   G4VPrimitiveScorer* InteractionCoordinatesZ          = new GENERALSCORERS::PSInteractionCoordinatesZ("InterCoordZ", "Eurogam", 0);
+   G4VPrimitiveScorer* InteractionCoordinatesAngleTheta = new GENERALSCORERS::PSInteractionCoordinatesAngleTheta("InterCoordAngTheta", "Eurogam", 0);
+   G4VPrimitiveScorer* InteractionCoordinatesAnglePhi   = new GENERALSCORERS::PSInteractionCoordinatesAnglePhi("InterCoordAngPhi", "Eurogam", 0);
+
+   //and register it to the multifunctionnal detector
+   m_EurogamScorer->RegisterPrimitive(DetNbr);
+   m_EurogamScorer->RegisterPrimitive(Energy);
+   m_EurogamScorer->RegisterPrimitive(TOF);
+   m_EurogamScorer->RegisterPrimitive(InteractionCoordinatesX);
+   m_EurogamScorer->RegisterPrimitive(InteractionCoordinatesY);
+   m_EurogamScorer->RegisterPrimitive(InteractionCoordinatesZ);
+   m_EurogamScorer->RegisterPrimitive(InteractionCoordinatesAngleTheta);
+   m_EurogamScorer->RegisterPrimitive(InteractionCoordinatesAnglePhi);
+
+   // Add All Scorer to the Global Scorer Manager
+   G4SDManager::GetSDMpointer()->AddNewDetector(m_EurogamScorer);
+}
diff --git a/NPSimulation/src/GaspardTrackerAnnular.cc b/NPSimulation/src/GaspardTrackerAnnular.cc
index af0e3c8b38ca1280ef285c4a580b6ab983b01ae0..fce7062f128579ad6562771a371ea74fa614a33a 100644
--- a/NPSimulation/src/GaspardTrackerAnnular.cc
+++ b/NPSimulation/src/GaspardTrackerAnnular.cc
@@ -179,10 +179,6 @@ void GaspardTrackerAnnular::VolumeMaker(G4int TelescopeNumber   ,
    ////////////////////////////////////////////////////////////////
    ////////////// Starting Volume Definition //////////////////////
    ////////////////////////////////////////////////////////////////
-   // Little trick to avoid warning in compilation: Use a PVPlacement "buffer".
-   // If don't you will have a Warning unused variable 'myPVP'
-   G4PVPlacement* PVPBuffer ;
-
    // Name of the module
    G4String Name = "GPDAnnular" + DetectorNumber;
 
@@ -197,12 +193,7 @@ void GaspardTrackerAnnular::VolumeMaker(G4int TelescopeNumber   ,
 //   G4LogicalVolume* logicMM = new G4LogicalVolume(solidMM, Iron, Name, 0, 0, 0);
    G4LogicalVolume* logicMM = new G4LogicalVolume(solidMM, Vacuum, Name, 0, 0, 0);
 
-   PVPBuffer     = new G4PVPlacement(G4Transform3D(*MMrot, MMpos) ,
-                                     logicMM                      ,
-                                     Name                         ,
-                                     world                        ,
-                                     false                        ,
-                                     0);
+   new G4PVPlacement(G4Transform3D(*MMrot, MMpos), logicMM, Name, world, false, 0);
 
    logicMM->SetVisAttributes(G4VisAttributes::Invisible);
    if (m_non_sensitive_part_visiualisation) logicMM->SetVisAttributes(G4VisAttributes(G4Colour(0.90, 0.90, 0.90)));
@@ -219,7 +210,7 @@ void GaspardTrackerAnnular::VolumeMaker(G4int TelescopeNumber   ,
 
    G4LogicalVolume* logicVacBox = new G4LogicalVolume(solidVacBox, Vacuum, "logicVacBox", 0, 0, 0);
 
-   PVPBuffer = new G4PVPlacement(0, positionVacBox, logicVacBox, "G" + DetectorNumber + "VacBox", logicMM, false, 0);
+   G4PVPlacement(0, positionVacBox, logicVacBox, "G" + DetectorNumber + "VacBox", logicMM, false, 0);
 
    logicVacBox->SetVisAttributes(G4VisAttributes::Invisible);
 
@@ -241,8 +232,8 @@ void GaspardTrackerAnnular::VolumeMaker(G4int TelescopeNumber   ,
 //      G4LogicalVolume* logicAluStrip = new G4LogicalVolume(solidAluStrip, Aluminium, "logicAluStrip", 0, 0, 0);
       G4LogicalVolume* logicAluStrip = new G4LogicalVolume(solidAluStrip, Vacuum, "logicAluStrip", 0, 0, 0);
 
-      PVPBuffer = new G4PVPlacement(0, positionAluStripFront, logicAluStrip, "G" + DetectorNumber + "AluStripFront", logicMM, false, 0);
-      PVPBuffer = new G4PVPlacement(0, positionAluStripBack,  logicAluStrip, "G" + DetectorNumber + "AluStripBack",  logicMM, false, 0);
+      new G4PVPlacement(0, positionAluStripFront, logicAluStrip, "G" + DetectorNumber + "AluStripFront", logicMM, false, 0);
+      new G4PVPlacement(0, positionAluStripBack,  logicAluStrip, "G" + DetectorNumber + "AluStripBack",  logicMM, false, 0);
 
       logicAluStrip->SetVisAttributes(G4VisAttributes::Invisible);
 
@@ -257,7 +248,7 @@ void GaspardTrackerAnnular::VolumeMaker(G4int TelescopeNumber   ,
                                          360*deg); 
       G4LogicalVolume* logicSilicon = new G4LogicalVolume(solidSilicon, Silicon, "logicSilicon", 0, 0, 0);
 
-      PVPBuffer = new G4PVPlacement(0, positionSilicon, logicSilicon, Name + "_Silicon", logicMM, false, 0);
+      new G4PVPlacement(0, positionSilicon, logicSilicon, Name + "_Silicon", logicMM, false, 0);
 
       // Set First Stage sensible
       logicSilicon->SetSensitiveDetector(m_FirstStageScorer);
@@ -283,7 +274,7 @@ void GaspardTrackerAnnular::VolumeMaker(G4int TelescopeNumber   ,
 
       G4LogicalVolume* logicSecondStage = new G4LogicalVolume(solidSecondStage, Silicon, "logicSecondStage", 0, 0, 0);
 
-      PVPBuffer = new G4PVPlacement(0, positionSecondStage, logicSecondStage, Name + "_SecondStage", logicMM, false, 0);
+      new G4PVPlacement(0, positionSecondStage, logicSecondStage, Name + "_SecondStage", logicMM, false, 0);
 
       ///Visualisation of Second Stage
       G4VisAttributes* SecondStageVisAtt = new G4VisAttributes(G4Colour(0.9, 0, 0));   // red
@@ -309,7 +300,7 @@ void GaspardTrackerAnnular::VolumeMaker(G4int TelescopeNumber   ,
 
       G4LogicalVolume* logicThirdStage = new G4LogicalVolume(solidThirdStage, Silicon, "logicThirdStage", 0, 0, 0);
 
-      PVPBuffer = new G4PVPlacement(0, positionThirdStage, logicThirdStage, Name + "_ThirdStage", logicMM, false, 0);
+      new G4PVPlacement(0, positionThirdStage, logicThirdStage, Name + "_ThirdStage", logicMM, false, 0);
 
       ///Visualisation of Third Stage
       G4VisAttributes* ThirdStageVisAtt = new G4VisAttributes(G4Colour(0.0, 0.9, 0.)) ;   // green
diff --git a/NPSimulation/src/GaspardTrackerDummyShape.cc b/NPSimulation/src/GaspardTrackerDummyShape.cc
index 96872ce593df10b6f7ca2e23d3ebdda740c41bfc..22cf70dfdf8de3603a5dbe085e08d3eae1d18a1c 100644
--- a/NPSimulation/src/GaspardTrackerDummyShape.cc
+++ b/NPSimulation/src/GaspardTrackerDummyShape.cc
@@ -22,6 +22,7 @@
  *    + 12/10/09: Change scorer scheme (N. de Sereville)                     *
  *    + 01/10/10: Fix bug with TInteractionCoordinate map size in Read       *
  *                Sensitive (N. de Sereville)                                *
+ *    + 01/07/11: Add dead layer support (N. de Sereville)                   *
  *                                                                           *
  *                                                                           *
  *****************************************************************************/
@@ -174,6 +175,11 @@ void GaspardTrackerDummyShape::VolumeMaker(G4int TelescopeNumber,
    ////////////////////////////////////////////////////////////////
    /////////////////Material Definition ///////////////////////////
    ////////////////////////////////////////////////////////////////
+   // Al
+//   density = 2.702 * g / cm3;
+//   a = 26.98 * g / mole;
+//   G4Material* Aluminium = new G4Material("Aluminium", z = 13., a, density);
+
    // Si
    a = 28.0855 * g / mole;
    density = 2.321 * g / cm3;
@@ -191,15 +197,12 @@ void GaspardTrackerDummyShape::VolumeMaker(G4int TelescopeNumber,
    ////////////////////////////////////////////////////////////////
    ////////////// Starting Volume Definition //////////////////////
    ////////////////////////////////////////////////////////////////
-   // Little trick to avoid warning in compilation: Use a PVPlacement "buffer".
-   // If don't you will have a Warning unused variable 'myPVP'
-   G4PVPlacement* PVPBuffer;
    G4String Name = "GPDDummyShape" + DetectorNumber ;
 
    G4Box*           solidGPDDummyShape = new G4Box(Name, 0.5*FaceFront, 0.5*FaceFront, 0.5*Length);
    G4LogicalVolume* logicGPDDummyShape = new G4LogicalVolume(solidGPDDummyShape, Vacuum, Name, 0, 0, 0);
 
-   PVPBuffer     = new G4PVPlacement(G4Transform3D(*MMrot, MMpos) ,
+   new G4PVPlacement(G4Transform3D(*MMrot, MMpos) ,
                                      logicGPDDummyShape           ,
                                      Name                         ,
                                      world                        ,
@@ -217,7 +220,7 @@ void GaspardTrackerDummyShape::VolumeMaker(G4int TelescopeNumber,
    G4ThreeVector positionMarkerU = MMCenter*0.8 + MMu*FirstStageFace/4;
    G4Box*           solidMarkerU = new G4Box("solidMarkerU", FirstStageFace/4, 1*mm, 1*mm);
    G4LogicalVolume* logicMarkerU = new G4LogicalVolume(solidMarkerU, Vacuum, "logicMarkerU", 0, 0, 0);
-   PVPBuffer                     = new G4PVPlacement(G4Transform3D(*MMrot,positionMarkerU), logicMarkerU, "MarkerU", world, false, 0);
+   new G4PVPlacement(G4Transform3D(*MMrot,positionMarkerU), logicMarkerU, "MarkerU", world, false, 0);
 
    G4VisAttributes* MarkerUVisAtt= new G4VisAttributes(G4Colour(0.,0.,0.5)); //blue
    logicMarkerU->SetVisAttributes(MarkerUVisAtt);
@@ -225,7 +228,7 @@ void GaspardTrackerDummyShape::VolumeMaker(G4int TelescopeNumber,
    G4ThreeVector positionMarkerV = MMCenter*0.8 + MMv*FirstStageFace/4;
    G4Box*           solidMarkerV = new G4Box("solidMarkerU", 1*mm, FirstStageFace/4, 1*mm);
    G4LogicalVolume* logicMarkerV = new G4LogicalVolume(solidMarkerV, Vacuum, "logicMarkerV", 0, 0, 0);
-   PVPBuffer                     = new G4PVPlacement(G4Transform3D(*MMrot,positionMarkerV), logicMarkerV, "MarkerV", world, false, 0);
+   new G4PVPlacement(G4Transform3D(*MMrot,positionMarkerV), logicMarkerV, "MarkerV", world, false, 0);
 
    G4VisAttributes* MarkerVVisAtt= new G4VisAttributes(G4Colour(0.,0.5,0.)); //green
    logicMarkerV->SetVisAttributes(MarkerVVisAtt);
@@ -234,13 +237,26 @@ void GaspardTrackerDummyShape::VolumeMaker(G4int TelescopeNumber,
    ///////////////// First Stage Construction /////////////////////
    ////////////////////////////////////////////////////////////////
    if (wFirstStage) {
+      // Dead layers
+/*      G4ThreeVector positionFirstStageDLFront = G4ThreeVector(0, 0, FirstStage_DL_Front_PosZ);
+      G4ThreeVector positionFirstStageDLBack  = G4ThreeVector(0, 0, FirstStage_DL_Back_PosZ);
+
+      G4Box*           solidFirstStageDL = new G4Box("solidFirstStageDL", 0.5*FirstStageFace, 0.5*FirstStageFace, 0.5*FirstStageDeadLayer);
+      G4LogicalVolume* logicFirstStageDL = new G4LogicalVolume(solidFirstStageDL, Aluminium, "logicFirstStageDL", 0, 0, 0);
+
+      PVPBuffer = new G4PVPlacement(0, positionFirstStageDLFront, logicFirstStageDL, Name + "_DLFront", logicGPDDummyShape, false, 0);
+      PVPBuffer = new G4PVPlacement(0, positionFirstStageDLBack,  logicFirstStageDL, Name + "_DLBack",  logicGPDDummyShape, false, 0);
+
+      logicFirstStageDL->SetVisAttributes(G4VisAttributes::Invisible);
+*/
+
       // Silicon detector itself
       G4ThreeVector  positionFirstStage = G4ThreeVector(0, 0, FirstStage_PosZ);
 
       G4Box*           solidFirstStage = new G4Box("solidFirstStage", 0.5*FirstStageFace, 0.5*FirstStageFace, 0.5*FirstStageThickness);
       G4LogicalVolume* logicFirstStage = new G4LogicalVolume(solidFirstStage, Silicon, "logicFirstStage", 0, 0, 0);
 
-      PVPBuffer = new G4PVPlacement(0, 
+      new G4PVPlacement(0, 
                                     positionFirstStage, 
                                     logicFirstStage, 
                                     Name + "_FirstStage", 
@@ -260,13 +276,26 @@ void GaspardTrackerDummyShape::VolumeMaker(G4int TelescopeNumber,
    //////////////////// Second Stage  Construction ////////////////
    ////////////////////////////////////////////////////////////////
    if (wSecondStage) {
+      // Dead layers
+/*      G4ThreeVector positionSecondStageDLFront = G4ThreeVector(0, 0, SecondStage_DL_Front_PosZ);
+      G4ThreeVector positionSecondStageDLBack  = G4ThreeVector(0, 0, SecondStage_DL_Back_PosZ);
+
+      G4Box*           solidSecondStageDL = new G4Box("solidSecondStageDL", 0.5*SecondStageFace, 0.5*SecondStageFace, 0.5*SecondStageDeadLayer);
+      G4LogicalVolume* logicSecondStageDL = new G4LogicalVolume(solidSecondStageDL, Aluminium, "logicSecondStageDL", 0, 0, 0);
+
+      PVPBuffer = new G4PVPlacement(0, positionSecondStageDLFront, logicSecondStageDL, Name + "_DLFront", logicGPDDummyShape, false, 0);
+      PVPBuffer = new G4PVPlacement(0, positionSecondStageDLBack,  logicSecondStageDL, Name + "_DLBack",  logicGPDDummyShape, false, 0);
+
+      logicSecondStageDL->SetVisAttributes(G4VisAttributes::Invisible);
+*/
+
       // Second stage silicon detector
       G4ThreeVector  positionSecondStage = G4ThreeVector(0, 0, SecondStage_PosZ);
 
       G4Box*           solidSecondStage = new G4Box("solidSecondStage", 0.5*SecondStageFace, 0.5*SecondStageFace, 0.5*SecondStageThickness);
       G4LogicalVolume* logicSecondStage = new G4LogicalVolume(solidSecondStage, Silicon, "logicSecondStage", 0, 0, 0);
 
-      PVPBuffer = new G4PVPlacement(0, 
+      new G4PVPlacement(0, 
                                     positionSecondStage, 
                                     logicSecondStage, 
                                     Name + "_SecondStage", 
@@ -286,13 +315,26 @@ void GaspardTrackerDummyShape::VolumeMaker(G4int TelescopeNumber,
    ///////////////// Third Stage Construction /////////////////////
    ////////////////////////////////////////////////////////////////
    if (wThirdStage) {
+      // Dead layers
+/*      G4ThreeVector positionThirdStageDLFront = G4ThreeVector(0, 0, ThirdStage_DL_Front_PosZ);
+      G4ThreeVector positionThirdStageDLBack  = G4ThreeVector(0, 0, ThirdStage_DL_Back_PosZ);
+
+      G4Box*           solidThirdStageDL = new G4Box("solidThirdStageDL", 0.5*ThirdStageFace, 0.5*ThirdStageFace, 0.5*ThirdStageDeadLayer);
+      G4LogicalVolume* logicThirdStageDL = new G4LogicalVolume(solidThirdStageDL, Aluminium, "logicThirdStageDL", 0, 0, 0);
+
+      PVPBuffer = new G4PVPlacement(0, positionThirdStageDLFront, logicThirdStageDL, Name + "_DLFront", logicGPDDummyShape, false, 0);
+      PVPBuffer = new G4PVPlacement(0, positionThirdStageDLBack,  logicThirdStageDL, Name + "_DLBack",  logicGPDDummyShape, false, 0);
+
+      logicThirdStageDL->SetVisAttributes(G4VisAttributes::Invisible);
+*/
+
       // Third stage silicon detector
       G4ThreeVector  positionThirdStage = G4ThreeVector(0, 0, ThirdStage_PosZ);
 
       G4Box*           solidThirdStage = new G4Box("solidThirdStage", 0.5*ThirdStageFace, 0.5*ThirdStageFace, 0.5*ThirdStageThickness);
       G4LogicalVolume* logicThirdStage = new G4LogicalVolume(solidThirdStage, Silicon, "logicThirdStage", 0, 0, 0);
 
-      PVPBuffer = new G4PVPlacement(0, 
+      new G4PVPlacement(0, 
                                     positionThirdStage, 
                                     logicThirdStage, 
                                     Name + "_ThirdStage", 
@@ -343,12 +385,10 @@ void GaspardTrackerDummyShape::ReadConfiguration(string Path)
    bool check_Theta = false;
    bool check_Phi   = false;
    bool check_R     = false;
-   bool check_beta  = false;
    
    bool check_FirstStage = false;
    bool check_SecondStage = false;
    bool check_ThirdStage = false;
-   bool check_NStrip = false;
    bool checkVis = false;
 
    while (!ConfigFile.eof()) {
@@ -449,7 +489,6 @@ void GaspardTrackerDummyShape::ReadConfiguration(string Path)
             cout << "R:  " << R / mm << endl;
          }
          else if (DataBuffer.compare(0, 5, "BETA=") == 0) {
-            check_beta = true;
             ConfigFile >> DataBuffer ;
             beta_u = atof(DataBuffer.c_str()) ;
             beta_u = beta_u * deg   ;
@@ -479,9 +518,9 @@ void GaspardTrackerDummyShape::ReadConfiguration(string Path)
          }
 
          else if (DataBuffer.compare(0, 7, "NSTRIP=") == 0) {
-            check_NStrip = true ;
             ConfigFile >> DataBuffer;
             NSTRIP = atof(DataBuffer.c_str()) ;
+            NSTRIP *= 1;
          }
 
          else if (DataBuffer.compare(0, 4, "VIS=") == 0) {
@@ -516,7 +555,6 @@ void GaspardTrackerDummyShape::ReadConfiguration(string Path)
             check_Theta = false;
             check_Phi   = false;
             check_R     = false;
-            check_beta  = false;
             check_FirstStage = false;
             check_SecondStage = false;
             check_ThirdStage = false;
@@ -787,7 +825,6 @@ void GaspardTrackerDummyShape::ReadSensitive(const G4Event* event)
             G4int TTrackID  =   Time_itr->first - N;
             G4double T     = *(Time_itr->second);
             if (TTrackID == NTrackID) {
-               T = RandGauss::shoot(T, ResoTimeGpd);
                ms_Event->SetGPDTrkFirstStageFrontTTime(RandGauss::shoot(T, ResoTimeGpd));
                ms_Event->SetGPDTrkFirstStageBackTTime(RandGauss::shoot(T, ResoTimeGpd));
             }
diff --git a/NPSimulation/src/GaspardTrackerSquare.cc b/NPSimulation/src/GaspardTrackerSquare.cc
index 25319d58224ff162e01746914f2b55df5286ce72..e53923e0a13588cc5bdb80e955c6877be1b92fc4 100644
--- a/NPSimulation/src/GaspardTrackerSquare.cc
+++ b/NPSimulation/src/GaspardTrackerSquare.cc
@@ -228,15 +228,12 @@ void GaspardTrackerSquare::VolumeMaker(G4int TelescopeNumber,
    ////////////////////////////////////////////////////////////////
    ////////////// Starting Volume Definition //////////////////////
    ////////////////////////////////////////////////////////////////
-   // Little trick to avoid warning in compilation: Use a PVPlacement "buffer".
-   // If don't you will have a Warning unused variable 'myPVP'
-   G4PVPlacement* PVPBuffer ;
    G4String Name = "GPDSquare" + DetectorNumber;
 
    G4Box*           solidGPDSquare = new G4Box(Name, 0.5*FaceFront, 0.5*FaceFront, 0.5*Length);
    G4LogicalVolume* logicGPDSquare = new G4LogicalVolume(solidGPDSquare, Vacuum, Name, 0, 0, 0);
 
-   PVPBuffer = new G4PVPlacement(G4Transform3D(*MMrot, MMpos), logicGPDSquare, Name, world, false, 0);
+   new G4PVPlacement(G4Transform3D(*MMrot, MMpos), logicGPDSquare, Name, world, false, 0);
 
    logicGPDSquare->SetVisAttributes(G4VisAttributes::Invisible);
    if (m_non_sensitive_part_visiualisation) logicGPDSquare->SetVisAttributes(G4VisAttributes(G4Colour(0.90, 0.90, 0.90)));
@@ -274,13 +271,7 @@ void GaspardTrackerSquare::VolumeMaker(G4int TelescopeNumber,
       G4Box*           solidFirstStage = new G4Box("solidFirstStage", 0.5*FirstStageFace, 0.5*FirstStageFace, 0.5*FirstStageThickness);
       G4LogicalVolume* logicFirstStage = new G4LogicalVolume(solidFirstStage, Silicon, "logicFirstStage", 0, 0, 0);
 
-      PVPBuffer = new G4PVPlacement(0,
-                                    positionFirstStage,
-                                    logicFirstStage,
-                                    Name + "_FirstStage",
-                                    logicGPDSquare,
-                                    false,
-                                    0);
+      new G4PVPlacement(0, positionFirstStage, logicFirstStage, Name + "_FirstStage", logicGPDSquare, false, 0);
 
       // Set First Stage sensible
       logicFirstStage->SetSensitiveDetector(m_FirstStageScorer);
@@ -300,13 +291,7 @@ void GaspardTrackerSquare::VolumeMaker(G4int TelescopeNumber,
       G4Box*           solidSecondStage = new G4Box("solidSecondStage", 0.5*SecondStageFace, 0.5*SecondStageFace, 0.5*SecondStageThickness);
       G4LogicalVolume* logicSecondStage = new G4LogicalVolume(solidSecondStage, Silicon, "logicSecondStage", 0, 0, 0);
 
-      PVPBuffer = new G4PVPlacement(0,
-                                    positionSecondStage,
-                                    logicSecondStage,
-                                    Name + "_SecondStage",
-                                    logicGPDSquare,
-                                    false,
-                                    0);
+      new G4PVPlacement(0, positionSecondStage, logicSecondStage, Name + "_SecondStage", logicGPDSquare, false, 0);
 
       // Set Second Stage sensible
       logicSecondStage->SetSensitiveDetector(m_SecondStageScorer);
@@ -326,13 +311,7 @@ void GaspardTrackerSquare::VolumeMaker(G4int TelescopeNumber,
       G4Box*           solidThirdStage = new G4Box("solidThirdStage", 0.5*ThirdStageFace, 0.5*ThirdStageFace, 0.5*ThirdStageThickness);
       G4LogicalVolume* logicThirdStage = new G4LogicalVolume(solidThirdStage, Silicon, "logicThirdStage", 0, 0, 0);
 
-      PVPBuffer = new G4PVPlacement(0,
-                                    positionThirdStage,
-                                    logicThirdStage,
-                                    Name + "_ThirdStage",
-                                    logicGPDSquare,
-                                    false,
-                                    0);
+      new G4PVPlacement(0, positionThirdStage, logicThirdStage, Name + "_ThirdStage", logicGPDSquare, false, 0);
 
       // Set Third Stage sensible
       logicThirdStage->SetSensitiveDetector(m_ThirdStageScorer);
@@ -377,7 +356,6 @@ void GaspardTrackerSquare::ReadConfiguration(string Path)
    bool check_Theta = false ;
    bool check_Phi   = false ;
    bool check_R     = false ;
-   bool check_beta  = false ;
    
    bool check_FirstStage = false ;
    bool check_SecondStage = false ;
@@ -490,7 +468,6 @@ void GaspardTrackerSquare::ReadConfiguration(string Path)
          }
 
          else if (DataBuffer.compare(0, 5, "BETA=") == 0) {
-            check_beta = true;
             ConfigFile >> DataBuffer ;
             beta_u = atof(DataBuffer.c_str()) ;
             beta_u = beta_u * deg   ;
@@ -558,7 +535,6 @@ void GaspardTrackerSquare::ReadConfiguration(string Path)
              check_Theta = false ;
              check_Phi   = false ;
              check_R     = false ;
-             check_beta  = false ;
            check_FirstStage = false ;
           check_SecondStage = false ;
            check_ThirdStage = false ;
diff --git a/NPSimulation/src/GaspardTrackerTrapezoid.cc b/NPSimulation/src/GaspardTrackerTrapezoid.cc
index 9658c41e425a69827c577851f292619f538ca42f..b0beab40b50408669a6104c907ef497686c59e46 100644
--- a/NPSimulation/src/GaspardTrackerTrapezoid.cc
+++ b/NPSimulation/src/GaspardTrackerTrapezoid.cc
@@ -224,9 +224,6 @@ void GaspardTrackerTrapezoid::VolumeMaker(G4int TelescopeNumber   ,
    ////////////////////////////////////////////////////////////////
    ////////////// Starting Volume Definition //////////////////////
    ////////////////////////////////////////////////////////////////
-   // Little trick to avoid warning in compilation: Use a PVPlacement "buffer".
-   // If don't you will have a Warning unused variable 'myPVP'
-   G4PVPlacement* PVPBuffer ;
    G4String Name = "GPDTrapezoid" + DetectorNumber ;
 
    // Definition of the volume containing the sensitive detector
@@ -236,7 +233,7 @@ void GaspardTrackerTrapezoid::VolumeMaker(G4int TelescopeNumber   ,
                                           Height/2, BaseLarge/2, BaseSmall/2, 0*deg);
    G4LogicalVolume* logicGPDTrapezoid = new G4LogicalVolume(solidGPDTrapezoid, Vacuum, Name, 0, 0, 0);
 
-   PVPBuffer = new G4PVPlacement(G4Transform3D(*MMrot, MMpos), logicGPDTrapezoid, Name, world, false, 0);
+   new G4PVPlacement(G4Transform3D(*MMrot, MMpos), logicGPDTrapezoid, Name, world, false, 0);
 
    logicGPDTrapezoid->SetVisAttributes(G4VisAttributes::Invisible);
    if (m_non_sensitive_part_visiualisation) logicGPDTrapezoid->SetVisAttributes(G4VisAttributes(G4Colour(0.90, 0.90, 0.90)));
@@ -277,7 +274,7 @@ void GaspardTrackerTrapezoid::VolumeMaker(G4int TelescopeNumber   ,
                                            FirstStageHeight/2, FirstStageBaseLarge/2, FirstStageBaseSmall/2, 0*deg);
       G4LogicalVolume* logicFirstStage = new G4LogicalVolume(solidFirstStage, Silicon, "logicFirstStage", 0, 0, 0);
 
-      PVPBuffer = new G4PVPlacement(0,
+      new G4PVPlacement(0,
                                     positionFirstStage,
                                     logicFirstStage,
                                     Name + "_FirstStage",
@@ -306,7 +303,7 @@ void GaspardTrackerTrapezoid::VolumeMaker(G4int TelescopeNumber   ,
                                            FirstStageHeight/2, FirstStageBaseLarge/2, FirstStageBaseSmall/2, 0*deg);
       G4LogicalVolume* logicSecondStage = new G4LogicalVolume(solidSecondStage, Silicon, "logicSecondStage", 0, 0, 0);
 
-      PVPBuffer = new G4PVPlacement(0,
+      new G4PVPlacement(0,
                                     positionSecondStage,
                                     logicSecondStage,
                                     Name + "_SecondStage",
@@ -335,7 +332,7 @@ void GaspardTrackerTrapezoid::VolumeMaker(G4int TelescopeNumber   ,
                                            FirstStageHeight/2, FirstStageBaseLarge/2, FirstStageBaseSmall/2, 0*deg);
       G4LogicalVolume* logicThirdStage = new G4LogicalVolume(solidThirdStage, Silicon, "logicThirdStage", 0, 0, 0);
 
-      PVPBuffer = new G4PVPlacement(0,
+      new G4PVPlacement(0,
                                     positionThirdStage,
                                     logicThirdStage,
                                     Name + "_ThirdStage",
@@ -386,7 +383,6 @@ void GaspardTrackerTrapezoid::ReadConfiguration(string Path)
    bool check_Theta = false ;
    bool check_Phi   = false ;
    bool check_R     = false ;
-   bool check_beta  = false ;
    
    bool check_FirstStage = false ;
    bool check_SecondStage = false ;
@@ -499,7 +495,6 @@ void GaspardTrackerTrapezoid::ReadConfiguration(string Path)
          }
 
          else if (DataBuffer.compare(0, 5, "BETA=") == 0) {
-            check_beta = true;
             ConfigFile >> DataBuffer ;
             beta_u = atof(DataBuffer.c_str()) ;
             beta_u = beta_u * deg   ;
@@ -567,7 +562,6 @@ void GaspardTrackerTrapezoid::ReadConfiguration(string Path)
              check_Theta = false ;
              check_Phi   = false ;
              check_R     = false ;
-             check_beta  = false ;
            check_FirstStage = false ;
           check_SecondStage = false ;
            check_ThirdStage = false ;
diff --git a/NPSimulation/src/ParisCluster.cc b/NPSimulation/src/ParisCluster.cc
index c80d9b9c44656b900a0acb5a744082dc4cbafb64..df56f1e006bea64ce88f6a76e8352abe37c967bc 100644
--- a/NPSimulation/src/ParisCluster.cc
+++ b/NPSimulation/src/ParisCluster.cc
@@ -9,9 +9,9 @@
  * Original Author: M. Labiche  contact address: marc.labiche@stfc.ac.uk     *
  *                                                                           *
  * Creation Date  : 04/12/09                                                 *
- * Last update    :                                                          *
+ * Last update    : 20/07/11                                                 *
  *---------------------------------------------------------------------------*
- * Decription: Define a cluster of 9 phoswitch modules for the Paris detector*
+ * Decription: Define a cluster of 9 phoswich modules for the Paris detector *
  *                                                                           *
  *---------------------------------------------------------------------------*
  * Comment:                                                                  *
@@ -199,110 +199,107 @@ void ParisCluster::VolumeMaker(G4int             DetecNumber,
    ////////////////////////////////////////////////////////////////
    ////////////// Starting Volume Definition //////////////////////
    ////////////////////////////////////////////////////////////////
-   // Little trick to avoid warning in compilation: Use a PVPlacement "buffer".
-   // If don't you will have a Warning unused variable 'myPVP'
-   G4PVPlacement* PVPBuffer;
    G4String Name = "ParisCluster" + DetectorNumber ;
 
    // Mother Volume
    G4Box*           solidParisCluster = new G4Box(Name, 0.5*FaceFront, 0.5*FaceFront, 0.5*Length);
    G4LogicalVolume* logicParisCluster = new G4LogicalVolume(solidParisCluster, Vacuum, Name, 0, 0, 0);
 
-   PVPBuffer     = new G4PVPlacement(G4Transform3D(*MMrot, MMpos) ,
-                                     logicParisCluster           ,
-                                     Name                         ,
-                                     world                        ,
-                                     false                        ,
-                                     0);
+   new G4PVPlacement(G4Transform3D(*MMrot, MMpos) ,
+                     logicParisCluster           ,
+                     Name                         ,
+                     world                        ,
+                     false                        ,
+                     0);
 
    logicParisCluster->SetVisAttributes(G4VisAttributes::Invisible);
    if (m_non_sensitive_part_visiualisation) logicParisCluster->SetVisAttributes(G4VisAttributes(G4Colour(0.90, 0.90, 0.90)));
 
-   // Phoswich construction
+   // Phoswich volume construction (empty volume)
 
    G4ThreeVector  positionPhoSwStage = G4ThreeVector(LaBr3Face+InterSpace, LaBr3Face+InterSpace, 0.);
-   G4Box*           solidPhoSwStage = new G4Box(Name+"_PhoSwStage", 0.5*LaBr3Face, 0.5*LaBr3Face, 0.5*(LaBr3Thickness+CsIThickness));
-   G4LogicalVolume* logicPhoSwStage = new G4LogicalVolume(solidPhoSwStage, LaBr3, "logicPhoSwStage", 0, 0, 0);
-
-   PVPBuffer = new G4PVPlacement(0, 
-                                 positionPhoSwStage, 
-                                 logicPhoSwStage, 
-                                 Name+"_PhoSwStage", 
-                                 logicParisCluster, 
-                                 false, 
-                                 0);
+   G4Box*           solidPhoSwStage = new G4Box(Name+"_PhoSwStage", 0.5*LaBr3Face, 0.5*LaBr3Face, 0.5*Length);
+   G4LogicalVolume* logicPhoSwStage = new G4LogicalVolume(solidPhoSwStage, Vacuum, "logicPhoSwStage", 0, 0, 0);
+
+   new G4PVPlacement(0, 
+                     positionPhoSwStage, 
+                     logicPhoSwStage, 
+                     Name+"_PhoSwStage", 
+                     logicParisCluster, 
+                     false,8); 
+   // 0);
    
    positionPhoSwStage = G4ThreeVector(0., LaBr3Face+InterSpace, 0.);
-   PVPBuffer = new G4PVPlacement(0, 
+   G4PVPlacement(0, 
                                  positionPhoSwStage, 
                                  logicPhoSwStage, 
                                  Name+"_PhoSwStage", 
                                  logicParisCluster, 
-                                 false, 
-                                 1);
+                                 false,7); 
+                                // 1);
 
    positionPhoSwStage = G4ThreeVector(-(LaBr3Face+InterSpace), LaBr3Face+InterSpace, 0.);
-   PVPBuffer = new G4PVPlacement(0, 
+   new G4PVPlacement(0, 
                                  positionPhoSwStage, 
                                  logicPhoSwStage, 
                                  Name+"_PhoSwStage", 
                                  logicParisCluster, 
-                                 false, 
-                                 2);
+                                 false,6); 
+                                 //2);
 
    positionPhoSwStage = G4ThreeVector(LaBr3Face+InterSpace, 0., 0.);
-   PVPBuffer = new G4PVPlacement(0, 
+   new G4PVPlacement(0, 
                                  positionPhoSwStage, 
                                  logicPhoSwStage, 
                                  Name+"_PhoSwStage", 
                                  logicParisCluster, 
-                                 false, 
-                                 3);
+                                 false,5); 
+                                 //3);
 
    positionPhoSwStage = G4ThreeVector(0., 0., 0.);
-   PVPBuffer = new G4PVPlacement(0, 
+   new G4PVPlacement(0, 
                                  positionPhoSwStage, 
                                  logicPhoSwStage, 
                                  Name+"_PhoSwStage", 
                                  logicParisCluster, 
-                                 false, 
-                                 4);
+                                 false, 4);
+                                 //4);
 
    positionPhoSwStage = G4ThreeVector(-(LaBr3Face+InterSpace), 0., 0.);
-   PVPBuffer = new G4PVPlacement(0, 
+   new G4PVPlacement(0, 
                                  positionPhoSwStage, 
                                  logicPhoSwStage, 
                                  Name+"_PhoSwStage", 
                                  logicParisCluster, 
-                                 false, 
-                                 5);
+                                 false, 3);
+                                 //5);
 
    positionPhoSwStage = G4ThreeVector(LaBr3Face+InterSpace, -(LaBr3Face+InterSpace), 0.);
-   PVPBuffer = new G4PVPlacement(0, 
+   new G4PVPlacement(0, 
                                  positionPhoSwStage, 
                                  logicPhoSwStage, 
                                  Name+"_PhoSwStage", 
                                  logicParisCluster, 
-                                 false, 
-                                 6);
+                                 false,2); 
+                                 //6);
 
    positionPhoSwStage = G4ThreeVector(0.,-(LaBr3Face+InterSpace), 0.);
-   PVPBuffer = new G4PVPlacement(0, 
+   new G4PVPlacement(0, 
                                  positionPhoSwStage, 
                                  logicPhoSwStage, 
                                  Name+"_PhoSwStage", 
                                  logicParisCluster, 
-                                 false, 
-                                 7);
+                                 false, 1);
+                                 //7);
 
    positionPhoSwStage = G4ThreeVector(-(LaBr3Face+InterSpace),-(LaBr3Face+InterSpace), 0.);
-   PVPBuffer = new G4PVPlacement(0, 
+   new G4PVPlacement(0, 
                                  positionPhoSwStage, 
                                  logicPhoSwStage, 
                                  Name+"_PhoSwStage", 
                                  logicParisCluster, 
-                                 false, 
-                                 8);
+                                 false, 0);
+                                 //8);
    
 
    // LaBr3
@@ -311,13 +308,13 @@ void ParisCluster::VolumeMaker(G4int             DetecNumber,
    G4Box*           solidLaBr3Stage = new G4Box(Name+"_LaBr3Stage", 0.5*LaBr3Face, 0.5*LaBr3Face, 0.5*LaBr3Thickness);
    G4LogicalVolume* logicLaBr3Stage = new G4LogicalVolume(solidLaBr3Stage, LaBr3, "logicLaBr3Stage", 0, 0, 0);
 
-   PVPBuffer = new G4PVPlacement(0, 
-                                 positionLaBr3Stage, 
-                                 logicLaBr3Stage, 
-                                 Name+"_LaBr3Stage", 
-                                 logicPhoSwStage, 
-                                 false, 
-                                 0);
+   new G4PVPlacement(0, 
+                     positionLaBr3Stage, 
+                     logicLaBr3Stage, 
+                     Name+"_LaBr3Stage", 
+                     logicPhoSwStage, 
+                     false, 
+                     0);
 
 
 
@@ -336,13 +333,13 @@ void ParisCluster::VolumeMaker(G4int             DetecNumber,
    //G4LogicalVolume* logicCsIStage = new G4LogicalVolume(solidCsIStage, CsI, "logicCsIStage", 0, 0, 0);
    G4LogicalVolume* logicCsIStage = new G4LogicalVolume(solidCsIStage, NaI, "logicCsIStage", 0, 0, 0);
 
-   PVPBuffer = new G4PVPlacement(0, 
-                                 positionCsIStage, 
-                                 logicCsIStage, 
-                                 Name + "_CsIStage", 
-                                 logicPhoSwStage, 
-                                 false, 
-                                 0);
+   new G4PVPlacement(0, 
+                     positionCsIStage, 
+                     logicCsIStage, 
+                     Name + "_CsIStage", 
+                     logicPhoSwStage, 
+                     false, 
+                     0);
 
    // Set CsI sensible
    logicCsIStage->SetSensitiveDetector(m_CsIStageScorer);
@@ -384,7 +381,6 @@ void ParisCluster::ReadConfiguration(string Path)
    bool check_Theta = false;
    bool check_Phi   = false;
    bool check_R     = false;
-   bool check_beta  = false;
    
    bool checkVis = false;
 
@@ -400,7 +396,7 @@ void ParisCluster::ReadConfiguration(string Path)
          ConfigFile >> DataBuffer;
          // Comment Line 
          if (DataBuffer.compare(0, 1, "%") == 0) {/*do nothing */;}
-   
+	
          // Position method
          else if (DataBuffer.compare(0, 6, "X1_Y1=") == 0) {
             check_A = true;
@@ -486,7 +482,6 @@ void ParisCluster::ReadConfiguration(string Path)
             cout << "R:  " << R / mm << endl;
          }
          else if (DataBuffer.compare(0, 5, "BETA=") == 0) {
-            check_beta = true;
             ConfigFile >> DataBuffer ;
             beta_u = atof(DataBuffer.c_str()) ;
             beta_u = beta_u * deg   ;
@@ -512,11 +507,11 @@ void ParisCluster::ReadConfiguration(string Path)
          if ((check_A && check_B && check_C && check_D && checkVis) && 
              !(check_Theta && check_Phi && check_R)) {
             ReadingStatus = false;
-       check_A = false;
-       check_C = false;
-       check_B = false;
-       check_D = false;
-       checkVis = false;
+	    check_A = false;
+	    check_C = false;
+	    check_B = false;
+	    check_D = false;
+	    checkVis = false;
 
             AddModule(A, B, C, D);
          }
@@ -526,11 +521,10 @@ void ParisCluster::ReadConfiguration(string Path)
              !(check_A && check_B && check_C && check_D)) {
             ReadingStatus = false;
             check_Theta = false;
-          check_Phi   = false;
-          check_R     = false;
-          check_beta  = false;
-       checkVis = false;
-           
+   	    check_Phi   = false;
+   	    check_R     = false;
+	    checkVis = false;
+		     
             AddModule(R, Theta, Phi, beta_u, beta_v, beta_w);
          }
       }
@@ -652,8 +646,9 @@ void ParisCluster::ReadSensitive(const G4Event* event)
  
       momentum = event->GetPrimaryVertex()->GetPrimary()->GetMomentum(); 
       G4double EGamma = momentum.getR(); // for photon E=p
-      G4double EGammaMin = EGamma-4*ResoFirstStage; 
-      G4double EGammaMax = EGamma+4*ResoFirstStage;
+      EGamma *= 1;
+      //G4double EGammaMin = EGamma-4*ResoFirstStage; 
+      //G4double EGammaMax = EGamma+4*ResoFirstStage;
 
    // First Stage (LaBr3)
    std::map<G4int, G4int*>::iterator    DetectorNumber_itr;
@@ -683,8 +678,10 @@ void ParisCluster::ReadSensitive(const G4Event* event)
    // NULL pointer are given to avoid warning at compilation
    // Second Stage (CsI)
    std::map<G4int, G4int*>::iterator    CsIDetectorNumber_itr;
+   std::map<G4int, G4int*>::iterator    CsICrystalNumber_itr; // added by Anna
    std::map<G4int, G4double*>::iterator CsIStageEnergy_itr ;
    G4THitsMap<G4int>* CsIDetectorNumberHitMap = NULL      ;
+   G4THitsMap<G4int>* CsICrystalNumberHitMap = NULL      ;    // added by Anna
    G4THitsMap<G4double>* CsIStageEnergyHitMap = NULL      ;
   
 
@@ -753,6 +750,14 @@ void ParisCluster::ReadSensitive(const G4Event* event)
    G4int CsIDetCollectionID = G4SDManager::GetSDMpointer()->GetCollectionID("CsIStageScorerParisCluster/CsIDetectorNumber")    ;
    CsIDetectorNumberHitMap = (G4THitsMap<G4int>*)(event->GetHCofThisEvent()->GetHC(CsIDetCollectionID))         ;
    CsIDetectorNumber_itr =  CsIDetectorNumberHitMap->GetMap()->begin()                                               ;
+
+   //CsI Crystal Number  // added by Anna
+   G4int CsICryCollectionID = G4SDManager::GetSDMpointer()->GetCollectionID("CsIStageScorerParisCluster/CsICrystalNumber")    ; // added by Anna
+   CsICrystalNumberHitMap = (G4THitsMap<G4int>*)(event->GetHCofThisEvent()->GetHC(CsICryCollectionID))         ;  // added by Anna
+   CsICrystalNumber_itr =  CsICrystalNumberHitMap->GetMap()->begin()                                               ; // added by Anna
+
+
+
    //CsI Energy
    G4int CsIStageEnergyCollectionID = G4SDManager::GetSDMpointer()->GetCollectionID("CsIStageScorerParisCluster/CsIStageEnergy")   ;
    CsIStageEnergyHitMap = (G4THitsMap<G4double>*)(event->GetHCofThisEvent()->GetHC(CsIStageEnergyCollectionID))                 ;
@@ -760,8 +765,8 @@ void ParisCluster::ReadSensitive(const G4Event* event)
 
 
    // Check the size of different map
-   G4int sizeN = DetectorNumberHitMap->entries();  // number of objects hit by trackID=1 (can be the same object hit several time) 
-   G4int sizeC = CrystalNumberHitMap->entries();
+   G4int sizeN = DetectorNumberHitMap->entries();  // number of hits by trackID=1 (can be the same object hit several time) 
+   G4int sizeC = CrystalNumberHitMap->entries();   // number of hits in all crystal by trackID=1
    G4int sizeE = EnergyHitMap->entries();          // = number of steps with edep non null 
    G4int sizeT = TimeHitMap->entries();
    //G4int sizeX = PosXHitMap->entries();
@@ -770,21 +775,28 @@ void ParisCluster::ReadSensitive(const G4Event* event)
    //G4int sizeY = YHitMap->entries();
 
    G4int sizeNCsI= CsIDetectorNumberHitMap->entries();
+   G4int sizeCCsI= CsICrystalNumberHitMap->entries(); // added by Anna
    G4int sizeECsI= CsIStageEnergyHitMap->entries();
 
-   sizeC *= 1;      // remove warning at compilation
-   sizeECsI *= 1;   // remove warning at compilation
-   //G4cout <<"SizeN=" << sizeN << endl;
-   //G4cout <<"SizeC=" << sizeC << endl;
-   //G4cout <<"SizeN CsI =" << sizeNCsI << endl;
-   //G4cout <<"SizeE CsI =" << sizeECsI << endl;
+   sizeC    *= 1;      // remove warning at compilation  added by Anna
+   sizeCCsI *= 1;      // remove warning at compilation  added by Anna
+   sizeECsI *= 1;   // remove warning at compilation  added by Anna
+   /*   
+   G4cout <<"SizeN=" << sizeN << endl;
+   G4cout <<"SizeC=" << sizeC << endl;
+   G4cout <<"SizeE=" << sizeE << endl;
+   G4cout <<"SizeT=" << sizeT << endl;
+   G4cout <<"SizeN CsI =" << sizeNCsI << endl;
+   G4cout <<"SizeC CsI =" << sizeCCsI << endl;
+   G4cout <<"SizeE CsI =" << sizeECsI << endl;
+   */
 
    //DetectorNumberHitMap->PrintAllHits();
 
 
     if (sizeE != sizeT) {
-      G4cout << "No match size PARIS Event Map: sE:"
-      << sizeE << " sT:" << sizeT << endl ;
+//      G4cout << "No match size PARIS Event Map: sE:"
+//      << sizeE << " sT:" << sizeT << endl ;
 
       //   if (sizeE != sizeX) {
       //G4cout << "No match size PARIS Event Map: sE:"
@@ -795,213 +807,356 @@ void ParisCluster::ReadSensitive(const G4Event* event)
 
     //G4cout <<"SizeN=" << sizeN << G4endl;
 
-
-   if(sizeN>0)
+    //if at least 1 cluster is hit:
+    if(sizeN>0)
      {
 
        // Deal with trackID=1:
-       G4int N_first= *(DetectorNumber_itr->second);                  // ID of first det hit
+       G4int N_first= *(DetectorNumber_itr->second);                  // ID of first hit det (det=cluster)
        G4int NTrackID =   DetectorNumber_itr->first - N_first;           // first trackID dealt with (not always =1)
        G4double E = *(Energy_itr->second);
        G4double T = *(Time_itr->second);
-       G4int NCryst= *(CrystalNumber_itr->second);
-
-       NCryst *= 1;    //remove warning at compilation
-       //G4cout <<"NTrackID=" << NTrackID << G4endl;
-       //G4cout <<"N_first=" << N_first << G4endl;
-       //G4cout <<"CrystalNumber_first=" << NCryst << G4endl;
-       //G4cout <<"Energy first=" << E << G4endl;
-       //G4cout <<"Time first =" << T << G4endl;
-
-
-       if(sizeN>1)
-    {
-      Energy_itr++;
-      Time_itr++;
-      CrystalNumber_itr++;
-      DetectorNumber_itr++;
-
-      for (G4int l = 1; l < sizeN ; l++) {                    // loop on all the other tracks
-
- 
-        G4int N= *(DetectorNumber_itr->second);            // ID of det hit
-        NTrackID =   DetectorNumber_itr->first - N;           // ID of the track
-
-        //G4cout <<"l=" << l << G4endl;
-        //G4cout <<"N=" << N << G4endl;
-        //G4cout <<"DetectorNumber_itr->first =" << DetectorNumber_itr->first << G4endl;
-        //G4cout <<"NTrackID=" << NTrackID << G4endl;
-
-        if(N==N_first)
-          {
-       E += *(Energy_itr->second);
-
-          }else  // we fill the tree for the first detector hit and move to the next detector hit
-       {
-         if(E!=0)
-           {
-             // Fill detector number
-             ms_Event->SetPARISLaBr3StageEDetectorNbr(m_index["Cluster"] + N_first);
-             ms_Event->SetPARISLaBr3StageTDetectorNbr(m_index["Cluster"] + N_first);
-             // Fill Energy
-             //ms_Event->SetPARISLaBr3StageEEnergy(RandGauss::shoot(E, ResoFirstStage));
-                 E=RandGauss::shoot(E, ResoFirstStage);
-                 ms_Event->SetPARISLaBr3StageEEnergy(E); // Fill the tree
-                 if(E>EGammaMin && E<EGammaMax)ms_Event->SetPARISLaBr3StageEffphpeak(EGamma);
-
-             // Fill Time
-             ms_Event->SetPARISLaBr3StageTTime(RandGauss::shoot(T, ResoTimeGpd));
-
-           }
-
-         N_first=N;
-         E=*(Energy_itr->second);
-
-       }
-
+       G4int NCryst= *(CrystalNumber_itr->second);                    // ID of first hit crystal
+
+       NCryst *= 1;    //remove warning at compilation  // added by Anna
+       NTrackID *= 1;    //remove warning at compilation
+       /*
+       G4cout <<"NTrackID=" << NTrackID << G4endl;
+       G4cout <<"N_first=" << N_first << G4endl;
+       G4cout <<"CrystalNumber_first=" << NCryst << G4endl;
+       G4cout <<"Energy first=" << E << G4endl;
+       G4cout <<"Time first =" << T << G4endl;
+       cout<<"*******"<<endl;
+
+	//added by Nicolas on the model of gaspard scorers 8/7/11
+         CrystalNumber_itr = CrystalNumberHitMap->GetMap()->begin();
+	 
+         for (G4int l = 0 ; l < sizeC ; l++) {
+	   G4double NCryst = *(CrystalNumber_itr->second);         
+	    G4int CTrackID  =   CrystalNumber_itr->first - N_first - NCryst;
+	    G4cout << N_first << "  " << NTrackID << "  " << CTrackID << "  " << NCryst << G4endl;
+            if (CTrackID == NTrackID) {
+	       G4cout << "****************** NCryst " <<  NCryst << G4endl;
+               //ms_Event->SetGPDTrkFirstStageFrontEEnergy(RandGauss::shoot(E, ResoFirstStage));
+               //ms_Event->SetGPDTrkFirstStageBackEEnergy(RandGauss::shoot(E, ResoFirstStage));
+            }
+            CrystalNumber_itr++;
+         }
+	 //rewind:
+         for (G4int l = 0 ; l < sizeC ; l++) {
+            CrystalNumber_itr--;
+	 }
+       */
+
+	 //if there is more than 1 interaction in crystals (1 interaction = 1 hit)
+	 if(sizeN>1)
+	 {
+            
+	   //At clusters'level
+	   for (G4int l = 1; l < sizeN ; l++) {                    // loop on all the other hits
+
+	   Energy_itr++;
+	   Time_itr++;
+           DetectorNumber_itr++;
+	   CrystalNumber_itr++;
+
+	     G4int N= *(DetectorNumber_itr->second);                // ID of hit cluster 
+	     G4int Nc= *(CrystalNumber_itr->second);                // ID of hit crystal
+
+	     //G4cout <<"l=" << l << G4endl;
+	     //G4cout <<"DetectorNumber_itr->first =" << DetectorNumber_itr->first << G4endl;
+	     //G4cout <<"TrackID=" << NTrackID << G4endl;
+	     //G4cout <<"CTrackID=" << CTrackID << G4endl;
+
+	     // At clusters'level:
+	     if(N==N_first)     // if the hit is still in the same cluster
+	       {
+		 // At crystals'level:
+		 if(Nc==NCryst)  // if we are still in the same crystal than the first hit crystal
+		   {
+		     E += *(Energy_itr->second);   // if same detector then sum up the energy
+		 
+		     // G4cout <<"Energy=" << E << G4endl;
+		 
+		   }else  // we fill the tree for the first hit crystal and move to the next hit crystal if any
+		     {
+		       if(E!=0)
+			 {
+			   //G4cout <<" -1- filling tree with energy=" << E << G4endl;
+			   // Fill detector number
+			   ms_Event->SetPARISLaBr3StageEDetectorNbr(m_index["Cluster"] + N_first );
+			   ms_Event->SetPARISLaBr3StageTDetectorNbr(m_index["Cluster"] + N_first );
+			   ms_Event->SetPARISLaBr3StageECrystalNbr(NCryst); // added by Anna
+			   ms_Event->SetPARISLaBr3StageTCrystalNbr(NCryst); // added by Anna
+			   // Fill Energy
+			   //ms_Event->SetPARISLaBr3StageEEnergy(RandGauss::shoot(E, ResoFirstStage));
+			   E=RandGauss::shoot(E, ResoFirstStage);
+			   ms_Event->SetPARISLaBr3StageEEnergy(E); // Fill the tree with energy deposited in first detector
+			   //if(E>EGammaMin && E<EGammaMax)ms_Event->SetPARISLaBr3StageEffphpeak(EGamma);
+		       
+			   // Fill Time
+			   ms_Event->SetPARISLaBr3StageTTime(RandGauss::shoot(T, ResoTimeGpd));
+		       
+			 }
+		   
+
+		       NCryst=Nc;   // continue with the next hit crystal		   
+		       E=*(Energy_itr->second);
+		     }
+
+
+	       }else  // if it's a new cluster, one fills the tree with first hit and inspect this new cluster 
+		 {
+	     
+		   if(E!=0)
+		     {
+//		       G4cout <<" -2- filling tree with energy=" << E << G4endl;
+		       // Fill detector number
+		       ms_Event->SetPARISLaBr3StageEDetectorNbr(m_index["Cluster"] + N_first );
+		       ms_Event->SetPARISLaBr3StageTDetectorNbr(m_index["Cluster"] + N_first );
+		       ms_Event->SetPARISLaBr3StageECrystalNbr(NCryst); // added by Anna
+			    ms_Event->SetPARISLaBr3StageTCrystalNbr(NCryst); // added by Anna
+		       // Fill Energy
+		       //ms_Event->SetPARISLaBr3StageEEnergy(RandGauss::shoot(E, ResoFirstStage));
+		       E=RandGauss::shoot(E, ResoFirstStage);
+		       ms_Event->SetPARISLaBr3StageEEnergy(E); // Fill the tree with energy deposited in first detector
+		       //if(E>EGammaMin && E<EGammaMax)ms_Event->SetPARISLaBr3StageEffphpeak(EGamma);
+		       
+		       // Fill Time
+		       ms_Event->SetPARISLaBr3StageTTime(RandGauss::shoot(T, ResoTimeGpd));
+		       
+		     }
+	    
+		   N_first=N;  // continue with the new hit cluster
+		   NCryst=Nc;   // and continue with the new hit crystal in this new cluster		   
+		   E=*(Energy_itr->second); 
+   
+		 }
 
-        //G4cout <<"Energy=" << E << G4endl;
-        //G4cout <<"Time =" << T << G4endl;
+	     //G4cout <<"Energy=" << E << G4endl;
+	     //G4cout <<"Time =" << T << G4endl;
        
-        // Always fill the tree at the end of the loop:
-      if(l==(sizeN-1) && E!=0)
-        {
-          // Fill detector number
-          ms_Event->SetPARISLaBr3StageEDetectorNbr(m_index["Cluster"] + N_first);
-          ms_Event->SetPARISLaBr3StageTDetectorNbr(m_index["Cluster"] + N_first);
-          // Fill Energy
-          //ms_Event->SetPARISLaBr3StageEEnergy(RandGauss::shoot(E, ResoFirstStage));
-                 E=RandGauss::shoot(E, ResoFirstStage);
-                 ms_Event->SetPARISLaBr3StageEEnergy(E); // Fill the tree
-                 if(E>EGammaMin && E<EGammaMax)ms_Event->SetPARISLaBr3StageEffphpeak(EGamma);
-
-          // Fill Time
-          ms_Event->SetPARISLaBr3StageTTime(RandGauss::shoot(T, ResoTimeGpd));          
-        }
-
-        Energy_itr++;
-        DetectorNumber_itr++;
-      }
-    }else
-      {
-        // Fill the tree if sizeN=1:
-        if(E!=0)
-          {
-          // Fill detector number
-          ms_Event->SetPARISLaBr3StageEDetectorNbr(m_index["Cluster"] + N_first);
-          ms_Event->SetPARISLaBr3StageTDetectorNbr(m_index["Cluster"] + N_first);
-          // Fill Energy
-          //ms_Event->SetPARISLaBr3StageEEnergy(RandGauss::shoot(E, ResoFirstStage));
-                 E=RandGauss::shoot(E, ResoFirstStage);
-                 ms_Event->SetPARISLaBr3StageEEnergy(E); // Fill the tree
-                 if(E>EGammaMin && E<EGammaMax)ms_Event->SetPARISLaBr3StageEffphpeak(EGamma);
-
-          // Fill Time
-          ms_Event->SetPARISLaBr3StageTTime(RandGauss::shoot(T, ResoTimeGpd));
-          }
-      }
-   
- 
+
+	     // Always fill the tree at the end of the loop:	   
+	     if(l==(sizeN-1) && E!=0)
+	       {
+//		 G4cout <<"-3- filling tree with energy=" << E << G4endl;
+		 // Fill detector number
+		 ms_Event->SetPARISLaBr3StageEDetectorNbr(m_index["Cluster"] + N_first);
+		 ms_Event->SetPARISLaBr3StageTDetectorNbr(m_index["Cluster"] + N_first);
+		 ms_Event->SetPARISLaBr3StageECrystalNbr(NCryst); // added by Anna
+	    ms_Event->SetPARISLaBr3StageTCrystalNbr(NCryst); // added by Anna
+//		 cout<<NTrackID<<" filled at the end "<<NCryst<<endl;
+
+		 // Fill Energy
+		 //ms_Event->SetPARISLaBr3StageEEnergy(RandGauss::shoot(E, ResoFirstStage));
+		 E=RandGauss::shoot(E, ResoFirstStage);
+		 ms_Event->SetPARISLaBr3StageEEnergy(E); // Fill the tree
+		 //if(E>EGammaMin && E<EGammaMax)ms_Event->SetPARISLaBr3StageEffphpeak(EGamma);
+
+		 // Fill Time
+		 ms_Event->SetPARISLaBr3StageTTime(RandGauss::shoot(T, ResoTimeGpd));	       
+	       }
+	   
+	   
+	   } // end of the l loop
+     
+	 }else
+	   {
+	     // Fill the tree if sizeN=1 and E>0
+	     if(E!=0)
+	       {
+//		 G4cout <<" -4- filling tree with energy=" << E << G4endl;
+		 // Fill detector number
+		 ms_Event->SetPARISLaBr3StageEDetectorNbr(m_index["Cluster"] + N_first);
+		 ms_Event->SetPARISLaBr3StageTDetectorNbr(m_index["Cluster"] + N_first);
+		 ms_Event->SetPARISLaBr3StageECrystalNbr(NCryst);
+	    ms_Event->SetPARISLaBr3StageTCrystalNbr(NCryst); // added by Anna
+//		 cout<<NTrackID<<" filled with sizeN=1 "<<NCryst<<endl;
+
+
+		 // Fill Energy
+		 //ms_Event->SetPARISLaBr3StageEEnergy(RandGauss::shoot(E, ResoFirstStage));
+		 E=RandGauss::shoot(E, ResoFirstStage);
+		 ms_Event->SetPARISLaBr3StageEEnergy(E); // Fill the tree
+		 //if(E>EGammaMin && E<EGammaMax)ms_Event->SetPARISLaBr3StageEffphpeak(EGamma);
+
+		 // Fill Time
+		 ms_Event->SetPARISLaBr3StageTTime(RandGauss::shoot(T, ResoTimeGpd));
+	       }
+	   }
+	
      }
   
 
    ///////// For CsI stage:
-   EGammaMin = EGamma-4*ResoSecondStage; 
-   EGammaMax = EGamma+4*ResoSecondStage;
+   //EGammaMin = EGamma-4*ResoSecondStage; 
+   //EGammaMax = EGamma+4*ResoSecondStage;
    if(sizeNCsI>0)
      {
        // Deal with trackID=1:
        G4int NCsI_first= *(CsIDetectorNumber_itr->second);                  // ID of first det hit
        G4int NCsITrackID =   CsIDetectorNumber_itr->first - NCsI_first;           // first trackID dealt with (not always =1)
        G4double E_CsI=*(CsIStageEnergy_itr->second);                   // Energy second stage
+       G4int NCsICryst= *(CsICrystalNumber_itr->second); //9/6 Nicolas and Anna added
 
 
        //G4cout <<"NCsITrackID=" << NCsITrackID << G4endl;
        //G4cout <<"NCsI_first=" << NCsI_first << G4endl;
        //G4cout <<"CsI Energy first=" << E_CsI << G4endl;
 
-       if(sizeNCsI>1)
-    {
-      CsIDetectorNumber_itr++;
-      CsIStageEnergy_itr++;
-
-      for (G4int l = 1; l < sizeNCsI ; l++) {                    // loop on all the other tracks
-
+	//added by Anna and Nicolas on the model of gaspard scorers 8/7/11
+         CsICrystalNumber_itr = CsICrystalNumberHitMap->GetMap()->begin();
+	 /*	
+         for (G4int l = 0 ; l < sizeCCsI ; l++) {
+            G4double NCsICryst = *(CsICrystalNumber_itr->second);
+	    G4int CCsITrackID  =   CsICrystalNumber_itr->first - NCsI_first - NCsICryst;
+	    G4cout << NCsI_first << "  " << NCsITrackID << "  " << CCsITrackID << "  " << NCsICryst << G4endl;
+            if (CCsITrackID == NCsITrackID) {
+	       G4cout << "****************** NCsICryst " <<  NCsICryst << G4endl;
+               //ms_Event->SetGPDTrkFirstStageFrontEEnergy(RandGauss::shoot(E, ResoFirstStage));
+               //ms_Event->SetGPDTrkFirstStageBackEEnergy(RandGauss::shoot(E, ResoFirstStage));
+            }
+            CsICrystalNumber_itr++;
+         }
+	 //rewind:
+         for (G4int l = 0 ; l < sizeCCsI ; l++) {
+            CsICrystalNumber_itr--;
+	 }
+	 */
+
+	 if(sizeNCsI>1)
+	 {
+	   for (G4int l = 1; l < sizeNCsI ; l++) {                    // loop on all the other tracks
+
+	     CsIStageEnergy_itr++;
+	     CsIDetectorNumber_itr++;
+	     CsICrystalNumber_itr++;
  
-        G4int NCsI= *(CsIDetectorNumber_itr->second);            // ID of det hit
-        NCsITrackID =   CsIDetectorNumber_itr->first - NCsI;           // ID of the track
-
-        //G4cout <<"l=" << l << G4endl;
-        //G4cout <<"NCsI=" << NCsI << G4endl;
-        //G4cout <<"DetectorNumber_itr->first =" << CsIDetectorNumber_itr->first << G4endl;
-        //G4cout <<"NCsITrackID=" << NCsITrackID << G4endl;
-
-        if(NCsI==NCsI_first)
-          {
-      
-       E_CsI += *(CsIStageEnergy_itr->second);
-
-          }else  // we fill the tree for the first detector hit and move to the next detector hit
-       {
-         if(E_CsI!=0)
-           {
-             // Fill detector number
-             ms_Event->SetPARISCsIStageEDetectorNbr(m_index["Cluster"] + NCsI_first);
-             ms_Event->SetPARISCsIStageTDetectorNbr(m_index["Cluster"] + NCsI_first);
-             // Fill Energy
-             // ms_Event->SetPARISCsIStageEEnergy(RandGauss::shoot(E_CsI, ResoSecondStage));
-                 E_CsI=RandGauss::shoot(E_CsI, ResoSecondStage);
-                 ms_Event->SetPARISCsIStageEEnergy(E_CsI); // Fill the tree
-                 if(E_CsI>EGammaMin && E_CsI<EGammaMax)ms_Event->SetPARISCsIStageEffphpeak(EGamma);
-
-             // Fill Time
-             //ms_Event->SetPARISCsIStageTTime(RandGauss::shoot(T_CsI, ResoTimeGpd));
-           }
-         
-          NCsI_first=NCsI;
-          E_CsI=*(CsIStageEnergy_itr->second);
-       }
+	     G4int NCsI= *(CsIDetectorNumber_itr->second);            // ID of hit cluster
+	     //NCsITrackID =   CsIDetectorNumber_itr->first - NCsI;           // ID of the track
+	     G4int NcCsI= *(CsICrystalNumber_itr->second);            // ID of hit CsI crystal
+	     //NcCsITrackID =   CsIDetectorNumber_itr->first - NCsI;           // ID of the track
+
+	     //G4cout <<"l=" << l << G4endl;
+	     //G4cout <<"NCsI=" << NCsI << G4endl;
+	     //G4cout <<"DetectorNumber_itr->first =" << CsIDetectorNumber_itr->first << G4endl;
+	     //G4cout <<"NCsITrackID=" << NCsITrackID << G4endl;
+
+
+	     // At clusters'level:
+	     if(NCsI==NCsI_first)    // if the hit is still in the same cluster
+	       {
+		
+		 // At crystals'level:
+		 if(NcCsI==NCsICryst)  // if we are still in the same crystal than the first hit CsI crystal
+		   {
+		     E_CsI += *(CsIStageEnergy_itr->second);   // if same detector then sum up the energy
+
+		   }else  // we fill the tree for the first detector hit and move to the next detector hit
+		     {
+		       if(E_CsI!=0)
+			 {
+//			   G4cout <<" -1- filling tree with energy in CsI =" << E_CsI << G4endl;
+			   // Fill detector number
+			   ms_Event->SetPARISCsIStageEDetectorNbr(m_index["Cluster"] + NCsI_first);
+			   ms_Event->SetPARISCsIStageTDetectorNbr(m_index["Cluster"] + NCsI_first);
+			   ms_Event->SetPARISCsIStageECrystalNbr(NCsICryst);
+			   ms_Event->SetPARISCsIStageTCrystalNbr(NCsICryst);
+			   // Fill Energy
+			   // ms_Event->SetPARISCsIStageEEnergy(RandGauss::shoot(E_CsI, ResoSecondStage));
+		           E_CsI=RandGauss::shoot(E_CsI, ResoSecondStage);
+		           ms_Event->SetPARISCsIStageEEnergy(E_CsI); // Fill the tree
+		           //if(E_CsI>EGammaMin && E_CsI<EGammaMax)ms_Event->SetPARISCsIStageEffphpeak(EGamma);
+
+			   // Fill Time
+			   //ms_Event->SetPARISCsIStageTTime(RandGauss::shoot(T_CsI, ResoTimeGpd));
+
+			   //ms_Event->SetPARISCsIStageECrystalNbr(NCsICryst); // added by Anna
+			   //cout<<NCsITrackID<<" filled with sizeN=1 "<<NCsICryst<<endl;
+			 }
+		   
+		       NCsICryst=NcCsI;   // continue with the next hit CsI crystal
+		       E_CsI=*(CsIStageEnergy_itr->second);
+		     }
+
+	       }else           // if it's a new cluster, one fills the tree with first hit and inspect the new cluster 
+		 {
+		   if(E_CsI!=0)
+		     {
+//		       G4cout <<" -2- filling tree with energy in CsI =" << E_CsI << G4endl;
+		       // Fill detector number
+		       ms_Event->SetPARISCsIStageEDetectorNbr(m_index["Cluster"] + NCsI_first );
+		       ms_Event->SetPARISCsIStageTDetectorNbr(m_index["Cluster"] + NCsI_first );
+		       ms_Event->SetPARISCsIStageECrystalNbr(NCsICryst); // added by Anna
+		       ms_Event->SetPARISCsIStageTCrystalNbr(NCsICryst); // added by Anna
+		       // Fill Energy
+		       //ms_Event->SetPARISLaBr3StageEEnergy(RandGauss::shoot(E, ResoFirstStage));
+		       E_CsI=RandGauss::shoot(E_CsI, ResoFirstStage);
+		       ms_Event->SetPARISCsIStageEEnergy(E_CsI); // Fill the tree with energy deposited in first detector
+		       //if(E_CsI>EGammaMin && E_CsI<EGammaMax)ms_Event->SetPARISCsIStageEffphpeak(EGamma);
+		       
+		       // Fill Time
+		       //ms_Event->SetPARISCsIStageTTime(RandGauss::shoot(T_CsI, ResoTimeGpd));
+
+		     }
+	    
+		   NCsI_first=NCsI;  // continue with the new hit cluster
+		   NCsICryst=NcCsI;   // and continue with the new hit CsI crystal in this new cluster
+		   E_CsI=*(CsIStageEnergy_itr->second); 
+   
+		 }
 
-        //G4cout <<"Energy_CsI=" << E_CsI << G4endl;
 
-        // Always fill the tree at the end of the loop:
+	   // Always fill the tree at the end of the loop:
        
-      if(l==(sizeNCsI-1) && E_CsI!=0)
-        {
-          // Fill detector number
-          ms_Event->SetPARISCsIStageEDetectorNbr(m_index["Cluster"] + NCsI_first);
-          ms_Event->SetPARISCsIStageTDetectorNbr(m_index["Cluster"] + NCsI_first);
-          // Fill Energy
-          // ms_Event->SetPARISCsIStageEEnergy(RandGauss::shoot(E_CsI, ResoSecondStage));
-                 E_CsI=RandGauss::shoot(E_CsI, ResoSecondStage);
-                 ms_Event->SetPARISCsIStageEEnergy(E_CsI); // Fill the tree
-                 if(E_CsI>EGammaMin && E_CsI<EGammaMax)ms_Event->SetPARISCsIStageEffphpeak(EGamma);
-          // Fill Time
-          //ms_Event->SetPARISCsIStageTTime(RandGauss::shoot(T_CsI, ResoTimeGpd));
-          
-          }
-
-        CsIStageEnergy_itr++;
-        CsIDetectorNumber_itr++;
-      }
-
-    }else
-      {
-        // Fill the tree if sizeN=1:
-        if(E_CsI!=0)
-          {
-          // Fill detector number
-          ms_Event->SetPARISCsIStageEDetectorNbr(m_index["Cluster"] + NCsI_first);
-          ms_Event->SetPARISCsIStageTDetectorNbr(m_index["Cluster"] + NCsI_first);
-          // Fill Energy
-          // ms_Event->SetPARISCsIStageEEnergy(RandGauss::shoot(E_CsI, ResoSecondStage));
-                 E_CsI=RandGauss::shoot(E_CsI, ResoSecondStage);
-                 ms_Event->SetPARISCsIStageEEnergy(E_CsI); // Fill the tree
-                 if(E_CsI>EGammaMin && E_CsI<EGammaMax)ms_Event->SetPARISCsIStageEffphpeak(EGamma);
-          // Fill Time
-          //ms_Event->SetPARISCsIStageTTime(RandGauss::shoot(T_CsI, ResoTimeGpd));
-          }
-      }
+	     if(l==(sizeNCsI-1) && E_CsI!=0)
+	       {
+//		 G4cout <<" -3- filling tree with energy in CsI =" << E_CsI << G4endl;
+		 // Fill detector number
+		 ms_Event->SetPARISCsIStageEDetectorNbr(m_index["Cluster"] + NCsI_first);
+		 ms_Event->SetPARISCsIStageTDetectorNbr(m_index["Cluster"] + NCsI_first);
+		 ms_Event->SetPARISCsIStageECrystalNbr(NCsICryst);
+		 ms_Event->SetPARISCsIStageTCrystalNbr(NCsICryst);
+		 // Fill Energy
+		 // ms_Event->SetPARISCsIStageEEnergy(RandGauss::shoot(E_CsI, ResoSecondStage));
+		 E_CsI=RandGauss::shoot(E_CsI, ResoSecondStage);
+		 ms_Event->SetPARISCsIStageEEnergy(E_CsI); // Fill the tree
+		 //if(E_CsI>EGammaMin && E_CsI<EGammaMax)ms_Event->SetPARISCsIStageEffphpeak(EGamma);
+		 // Fill Time
+		 //ms_Event->SetPARISCsIStageTTime(RandGauss::shoot(T_CsI, ResoTimeGpd));
+	       
+		 ms_Event->SetPARISCsIStageECrystalNbr(NCsICryst); // added by Anna
+		 cout<<NCsITrackID<<" filled with sizeN=1 "<<NCsICryst<<endl;
+	       }
+
+	   }  // end of l loop
+
+	 }else
+	   {
+	     // Fill the tree if sizeN=1:
+	     if(E_CsI!=0)
+	       {
+//		 G4cout <<" -4- filling tree with energy in CsI =" << E_CsI << G4endl;
+		 // Fill detector number
+		 ms_Event->SetPARISCsIStageEDetectorNbr(m_index["Cluster"] + NCsI_first);
+		 ms_Event->SetPARISCsIStageTDetectorNbr(m_index["Cluster"] + NCsI_first);
+		 ms_Event->SetPARISCsIStageECrystalNbr(NCsICryst);
+		 ms_Event->SetPARISCsIStageTCrystalNbr(NCsICryst);
+		 // Fill Energy
+		 // ms_Event->SetPARISCsIStageEEnergy(RandGauss::shoot(E_CsI, ResoSecondStage));
+		 E_CsI=RandGauss::shoot(E_CsI, ResoSecondStage);
+		 ms_Event->SetPARISCsIStageEEnergy(E_CsI); // Fill the tree
+		 //if(E_CsI>EGammaMin && E_CsI<EGammaMax)ms_Event->SetPARISCsIStageEffphpeak(EGamma);
+		 // Fill Time
+		 //ms_Event->SetPARISCsIStageTTime(RandGauss::shoot(T_CsI, ResoTimeGpd));
+
+		 // Fill Crystal number  // added by Anna
+		 ms_Event->SetPARISCsIStageECrystalNbr(NCsICryst);
+		 //cout<<NCsITrackID<<" filled with sizeN=1 "<<NCsICryst<<endl;
+		 
+	       }
+	   }
  
      }
   
@@ -1010,6 +1165,7 @@ void ParisCluster::ReadSensitive(const G4Event* event)
 
       // clear map for next event
       DetectorNumberHitMap    -> clear();
+      CrystalNumberHitMap     -> clear();  // added by anna
       EnergyHitMap            -> clear();
       TimeHitMap              -> clear();
       //XHitMap                 -> clear();
@@ -1021,6 +1177,7 @@ void ParisCluster::ReadSensitive(const G4Event* event)
       //AngPhiHitMap            -> clear();
 
       CsIDetectorNumberHitMap    -> clear();
+      CsICrystalNumberHitMap    -> clear();   // added by Anna
       CsIStageEnergyHitMap -> clear();
       //    SecondStageEnergyHitMap -> clear();
       //    ThirdStageEnergyHitMap  -> clear();
@@ -1072,9 +1229,11 @@ void ParisCluster::InitializeScorers()
    m_CsIStageScorer = new G4MultiFunctionalDetector("CsIStageScorerParisCluster");
    /**/
    G4VPrimitiveScorer* CsIDetNbr                        = new PARISScorerCsIStageDetectorNumber("CsIDetectorNumber", "ParisCluster", 0);
+   G4VPrimitiveScorer* CsICryNbr                        = new PARISScorerCsIStageCrystalNumber("CsICrystalNumber", "ParisCluster", 0);
    G4VPrimitiveScorer* CsIStageEnergy                   = new PARISScorerCsIStageEnergy("CsIStageEnergy", "ParisCluster", 0);
 
    m_CsIStageScorer->RegisterPrimitive(CsIDetNbr);
+   m_CsIStageScorer->RegisterPrimitive(CsICryNbr); // Added by anna
    m_CsIStageScorer->RegisterPrimitive(CsIStageEnergy);
    /**/
 
diff --git a/NPSimulation/src/ParisPhoswich.cc b/NPSimulation/src/ParisPhoswich.cc
index 14ef9081c51543212e80f6891a804aa9e5657d5b..6bc6ce01c316a12af9ce3e8ffb96821e2d7950ae 100644
--- a/NPSimulation/src/ParisPhoswich.cc
+++ b/NPSimulation/src/ParisPhoswich.cc
@@ -9,9 +9,9 @@
  * Original Author: M. Labiche  contact address: marc.labiche@stfc.ac.uk     *
  *                                                                           *
  * Creation Date  : 04/12/09                                                 *
- * Last update    :                                                          *
+ * Last update    : 20/07/11                                                 *
  *---------------------------------------------------------------------------*
- * Decription: Define a phoswitch module for the Paris detector.             *
+ * Decription: Define a phoswich module for the Paris detector.              *
  *                                                                           *
  *---------------------------------------------------------------------------*
  * Comment:                                                                  *
@@ -172,6 +172,10 @@ void ParisPhoswich::VolumeMaker(G4int             DetecNumber,
    Vacuum->AddElement(N, .7);
    Vacuum->AddElement(O, .3);
 
+   // Germanium
+//   density = 5.32*g/cm3; 
+//   G4Material* Ge = new G4Material(name="Germanium",32,72.59*g/mole, density);
+
    // NaI
    density = 3.67*g/cm3, nel = 2; 
    G4Material* NaI = new G4Material(name="NaI",density,nel);
@@ -199,21 +203,19 @@ void ParisPhoswich::VolumeMaker(G4int             DetecNumber,
    ////////////////////////////////////////////////////////////////
    ////////////// Starting Volume Definition //////////////////////
    ////////////////////////////////////////////////////////////////
-   // Little trick to avoid warning in compilation: Use a PVPlacement "buffer".
-   // If don't you will have a Warning unused variable 'myPVP'
-   G4PVPlacement* PVPBuffer;
    G4String Name = "ParisPhoswich" + DetectorNumber ;
 
    // Mother Volume
+   //   G4Box*           solidParisPhoswich = new G4Box(Name, 0.5*FaceFront, 0.5*FaceFront, 0.5*Length);
    G4Box*           solidParisPhoswich = new G4Box(Name, 0.5*FaceFront, 0.5*FaceFront, 0.5*Length);
    G4LogicalVolume* logicParisPhoswich = new G4LogicalVolume(solidParisPhoswich, Vacuum, Name, 0, 0, 0);
 
-   PVPBuffer     = new G4PVPlacement(G4Transform3D(*MMrot, MMpos) ,
-                                     logicParisPhoswich           ,
-                                     Name                         ,
-                                     world                        ,
-                                     false                        ,
-                                     0);
+   new G4PVPlacement(G4Transform3D(*MMrot, MMpos) ,
+                     logicParisPhoswich           ,
+                     Name                         ,
+                     world                        ,
+                     false                        ,
+                     0);
 
    logicParisPhoswich->SetVisAttributes(G4VisAttributes::Invisible);
    if (m_non_sensitive_part_visiualisation) logicParisPhoswich->SetVisAttributes(G4VisAttributes(G4Colour(0.90, 0.90, 0.90)));
@@ -224,14 +226,15 @@ void ParisPhoswich::VolumeMaker(G4int             DetecNumber,
 
    G4Box*           solidLaBr3Stage = new G4Box("solidLaBr3Stage", 0.5*LaBr3Face, 0.5*LaBr3Face, 0.5*LaBr3Thickness);
    G4LogicalVolume* logicLaBr3Stage = new G4LogicalVolume(solidLaBr3Stage, LaBr3, "logicLaBr3Stage", 0, 0, 0);
+   //G4LogicalVolume* logicLaBr3Stage = new G4LogicalVolume(solidLaBr3Stage, Ge, "logicLaBr3Stage", 0, 0, 0);
 
-   PVPBuffer = new G4PVPlacement(0, 
-                                 positionLaBr3Stage, 
-                                 logicLaBr3Stage, 
-                                 Name + "_LaBr3Stage", 
-                                 logicParisPhoswich, 
-                                 false, 
-                                 0);
+   new G4PVPlacement(0, 
+                     positionLaBr3Stage, 
+                     logicLaBr3Stage, 
+                     Name + "_LaBr3Stage", 
+                     logicParisPhoswich, 
+                     false, 
+                     0);
 
    // Set LaBr3 sensible
    logicLaBr3Stage->SetSensitiveDetector(m_LaBr3StageScorer);
@@ -247,13 +250,13 @@ void ParisPhoswich::VolumeMaker(G4int             DetecNumber,
    //G4LogicalVolume* logicCsIStage = new G4LogicalVolume(solidCsIStage, CsI, "logicCsIStage", 0, 0, 0);
    G4LogicalVolume* logicCsIStage = new G4LogicalVolume(solidCsIStage, NaI, "logicCsIStage", 0, 0, 0);
 
-   PVPBuffer = new G4PVPlacement(0, 
-                                 positionCsIStage, 
-                                 logicCsIStage, 
-                                 Name + "_CsIStage", 
-                                 logicParisPhoswich, 
-                                 false, 
-                                 0);
+   new G4PVPlacement(0, 
+                     positionCsIStage, 
+                     logicCsIStage, 
+                     Name + "_CsIStage", 
+                     logicParisPhoswich, 
+                     false, 
+                     0);
 
    // Set CsI sensible
    logicCsIStage->SetSensitiveDetector(m_CsIStageScorer);
@@ -295,7 +298,6 @@ void ParisPhoswich::ReadConfiguration(string Path)
    bool check_Theta = false;
    bool check_Phi   = false;
    bool check_R     = false;
-   bool check_beta  = false;
    
    bool checkVis = false;
 
@@ -311,7 +313,7 @@ void ParisPhoswich::ReadConfiguration(string Path)
          ConfigFile >> DataBuffer;
          // Comment Line 
          if (DataBuffer.compare(0, 1, "%") == 0) {/*do nothing */;}
-   
+	
          // Position method
          else if (DataBuffer.compare(0, 6, "X1_Y1=") == 0) {
             check_A = true;
@@ -397,7 +399,6 @@ void ParisPhoswich::ReadConfiguration(string Path)
             cout << "R:  " << R / mm << endl;
          }
          else if (DataBuffer.compare(0, 5, "BETA=") == 0) {
-            check_beta = true;
             ConfigFile >> DataBuffer ;
             beta_u = atof(DataBuffer.c_str()) ;
             beta_u = beta_u * deg   ;
@@ -422,12 +423,12 @@ void ParisPhoswich::ReadConfiguration(string Path)
          // With position method
          if ((check_A && check_B && check_C && check_D && checkVis) && 
              !(check_Theta && check_Phi && check_R)) {
-             ReadingStatus = false;
-             check_A = false;
-             check_C = false;
-             check_B = false;
-             check_D = false;
-             checkVis = false;
+            ReadingStatus = false;
+	    check_A = false;
+	    check_C = false;
+	    check_B = false;
+	    check_D = false;
+	    checkVis = false;
 
             AddModule(A, B, C, D);
          }
@@ -435,13 +436,12 @@ void ParisPhoswich::ReadConfiguration(string Path)
          // With angle method
          if ((check_Theta && check_Phi && check_R && checkVis) && 
              !(check_A && check_B && check_C && check_D)) {
-             ReadingStatus = false;
-             check_Theta = false;
-             check_Phi   = false;
-             check_R     = false;
-             check_beta  = false;
-             checkVis = false;
-           
+            ReadingStatus = false;
+            check_Theta = false;
+   	    check_Phi   = false;
+   	    check_R     = false;
+	    checkVis = false;
+		     
             AddModule(R, Theta, Phi, beta_u, beta_v, beta_w);
          }
       }
@@ -563,8 +563,9 @@ void ParisPhoswich::ReadSensitive(const G4Event* event)
 
       momentum = event->GetPrimaryVertex()->GetPrimary()->GetMomentum(); 
       G4double EGamma = momentum.getR(); // for photon E=p
-      G4double EGammaMin = EGamma-4*ResoFirstStage; 
-      G4double EGammaMax = EGamma+4*ResoFirstStage;
+      EGamma *= 1;
+      //G4double EGammaMin = EGamma-4*ResoFirstStage; 
+      //G4double EGammaMax = EGamma+4*ResoFirstStage;
  
 
    // First Stage (LaBr3)
@@ -595,8 +596,10 @@ void ParisPhoswich::ReadSensitive(const G4Event* event)
    // NULL pointer are given to avoid warning at compilation
    // Second Stage (CsI)
    std::map<G4int, G4int*>::iterator    CsIDetectorNumber_itr;
+   std::map<G4int, G4int*>::iterator    CsICrystalNumber_itr; // added by Marc
    std::map<G4int, G4double*>::iterator CsIStageEnergy_itr ;
    G4THitsMap<G4int>* CsIDetectorNumberHitMap = NULL      ;
+   G4THitsMap<G4int>* CsICrystalNumberHitMap = NULL      ;    // added by Marc
    G4THitsMap<G4double>* CsIStageEnergyHitMap = NULL      ;
   
 
@@ -665,6 +668,12 @@ void ParisPhoswich::ReadSensitive(const G4Event* event)
    G4int CsIDetCollectionID = G4SDManager::GetSDMpointer()->GetCollectionID("CsIStageScorerParisPhoswich/CsIDetectorNumber")    ;
    CsIDetectorNumberHitMap = (G4THitsMap<G4int>*)(event->GetHCofThisEvent()->GetHC(CsIDetCollectionID))         ;
    CsIDetectorNumber_itr =  CsIDetectorNumberHitMap->GetMap()->begin()                                               ;
+
+   //CsI Crystal Number  // added by Marc
+   G4int CsICryCollectionID = G4SDManager::GetSDMpointer()->GetCollectionID("CsIStageScorerParisPhoswich/CsICrystalNumber")    ; // added by Marc
+   CsICrystalNumberHitMap = (G4THitsMap<G4int>*)(event->GetHCofThisEvent()->GetHC(CsICryCollectionID))         ;  // added by Anna
+   CsICrystalNumber_itr =  CsICrystalNumberHitMap->GetMap()->begin()                                               ; // added by Anna
+
    //CsI Energy
    G4int CsIStageEnergyCollectionID = G4SDManager::GetSDMpointer()->GetCollectionID("CsIStageScorerParisPhoswich/CsIStageEnergy")   ;
    CsIStageEnergyHitMap = (G4THitsMap<G4double>*)(event->GetHCofThisEvent()->GetHC(CsIStageEnergyCollectionID))                 ;
@@ -682,17 +691,19 @@ void ParisPhoswich::ReadSensitive(const G4Event* event)
    //G4int sizeY = YHitMap->entries();
 
    G4int sizeNCsI= CsIDetectorNumberHitMap->entries();
+   G4int sizeCCsI= CsICrystalNumberHitMap->entries();
    G4int sizeECsI= CsIStageEnergyHitMap->entries();
 
-   sizeC *= 1;      // remove warning at compilation
-   sizeECsI *= 1;   // remove warning at compilation
+   sizeC    *= 1;      // remove warning at compilation  added by Marc
+   sizeCCsI *= 1;      // remove warning at compilation  added by Marc
+   sizeECsI *= 1;   // remove warning at compilation  added by Marc
    //G4cout <<"SizeN=" << sizeN << endl;
    //G4cout <<"SizeC=" << sizeC << endl;
    //G4cout <<"SizeN CsI =" << sizeNCsI << endl;
    //G4cout <<"SizeE CsI =" << sizeECsI << endl;
 
    //DetectorNumberHitMap->PrintAllHits();
-             
+		       
 
     if (sizeE != sizeT) {
       G4cout << "No match size PARIS Event Map: sE:"
@@ -708,213 +719,327 @@ void ParisPhoswich::ReadSensitive(const G4Event* event)
     //G4cout <<"SizeN=" << sizeN << G4endl;
 
 
-   if(sizeN>0)
-     {
-
-       // Deal with trackID=1:
-       G4int N_first= *(DetectorNumber_itr->second);                  // ID of first det hit
-       G4int NTrackID =   DetectorNumber_itr->first - N_first;           // first trackID dealt with (not always =1)
-       G4double E = *(Energy_itr->second);
-       G4double T = *(Time_itr->second);
-       G4int NCryst= *(CrystalNumber_itr->second);
-       NCryst *= 1;   // remove warning at compilation
-
-
-       //G4cout <<"NTrackID=" << NTrackID << G4endl;
-       //G4cout <<"N_first=" << N_first << G4endl;
-       //G4cout <<"CrystalNumber_first=" << NCryst << G4endl;
-       //G4cout <<"Energy first=" << E << G4endl;
-       //G4cout <<"Time first =" << T << G4endl;
+    //if at least 1 phoswich is hit:
+    if(sizeN>0)
+      {
 
+	// Deal with trackID=1:
+	G4int N_first= *(DetectorNumber_itr->second);                  // ID of first det hit
+	G4int NTrackID =   DetectorNumber_itr->first - N_first;           // first trackID dealt with (not always =1)
+	G4double E = *(Energy_itr->second);
+	G4double T = *(Time_itr->second);
+	G4int NCryst= *(CrystalNumber_itr->second);
+
+       NCryst *= 1;    //remove warning at compilation  // added by Marc
+      /*
+       G4cout <<"NTrackID=" << NTrackID << G4endl;
+       G4cout <<"N_first=" << N_first << G4endl;
+       G4cout <<"CrystalNumber_first=" << NCryst << G4endl;
+       G4cout <<"Energy first=" << E << G4endl;
+       G4cout <<"Time first =" << T << G4endl;
+       cout<<"*******"<<endl;
+
+	//added by Nicolas on the model of gaspard scorers 8/7/11
+         CrystalNumber_itr = CrystalNumberHitMap->GetMap()->begin();
+	 
+         for (G4int l = 0 ; l < sizeC ; l++) {
+	   G4double NCryst = *(CrystalNumber_itr->second);         
+	    G4int CTrackID  =   CrystalNumber_itr->first - N_first - NCryst;
+	    G4cout << N_first << "  " << NTrackID << "  " << CTrackID << "  " << NCryst << G4endl;
+            if (CTrackID == NTrackID) {
+	       G4cout << "****************** NCryst " <<  NCryst << G4endl;
+               //ms_Event->SetGPDTrkFirstStageFrontEEnergy(RandGauss::shoot(E, ResoFirstStage));
+               //ms_Event->SetGPDTrkFirstStageBackEEnergy(RandGauss::shoot(E, ResoFirstStage));
+            }
+            CrystalNumber_itr++;
+         }
+	 //rewind:
+         for (G4int l = 0 ; l < sizeC ; l++) {
+            CrystalNumber_itr--;
+	 }
+       */
 
+       //if there is more than 1 interaction in crystals (1 interaction = 1 hit)
        if(sizeN>1)
-    {
-      Energy_itr++;
-      Time_itr++;
-      CrystalNumber_itr++;
-      DetectorNumber_itr++;
-
-      for (G4int l = 1; l < sizeN ; l++) {                    // loop on all the other tracks
-
- 
-        G4int N= *(DetectorNumber_itr->second);            // ID of det hit
-        NTrackID =   DetectorNumber_itr->first - N;           // ID of the track
-
-        //G4cout <<"l=" << l << G4endl;
-        //G4cout <<"N=" << N << G4endl;
-        //G4cout <<"DetectorNumber_itr->first =" << DetectorNumber_itr->first << G4endl;
-        //G4cout <<"NTrackID=" << NTrackID << G4endl;
-
-        if(N==N_first)
-          {
-       E += *(Energy_itr->second);
-
-          }else  // we fill the tree for the first detector hit and move to the next detector hit
-       {
-         if(E!=0)
-           {
-             // Fill detector number
-             ms_Event->SetPARISLaBr3StageEDetectorNbr(m_index["Phoswich"] + N_first);
-             ms_Event->SetPARISLaBr3StageTDetectorNbr(m_index["Phoswich"] + N_first);
-             // Fill Energy
-                  // ms_Event->SetPARISLaBr3StageEEnergy(RandGauss::shoot(E, ResoFirstStage));
-                 E=RandGauss::shoot(E, ResoFirstStage);
-                 ms_Event->SetPARISLaBr3StageEEnergy(E); // Fill the tree
-                 if(E>EGammaMin && E<EGammaMax)ms_Event->SetPARISLaBr3StageEffphpeak(EGamma);
-
-             // Fill Time
-             ms_Event->SetPARISLaBr3StageTTime(RandGauss::shoot(T, ResoTimeGpd));
-
-           }
-
-         N_first=N;
-         E=*(Energy_itr->second);
-
-       }
-
-
-        //G4cout <<"Energy=" << E << G4endl;
-        //G4cout <<"Time =" << T << G4endl;
+	 {
+
+	   //At clusters'level
+	   for (G4int l = 1; l < sizeN ; l++) {                    // loop on all the other tracks
+
+ 	     Energy_itr++;
+	     Time_itr++;
+	     DetectorNumber_itr++;
+	     CrystalNumber_itr++;
+
+	     G4int N= *(DetectorNumber_itr->second);            // ID of Phoswich hit
+	     G4int Nc= *(CrystalNumber_itr->second);                // ID of hit crystal (always =0 for Phoswich)
+
+	     NTrackID =   DetectorNumber_itr->first - N;           // ID of the track
+
+	     //G4cout <<"l=" << l << G4endl;
+	     //G4cout <<"N=" << N << G4endl;
+	     //G4cout <<"DetectorNumber_itr->first =" << DetectorNumber_itr->first << G4endl;
+	     //G4cout <<"NTrackID=" << NTrackID << G4endl;
+
+	     if(N==N_first)
+	       {
+		 // At crystals'level:
+		 if(Nc==NCryst)  // if we are still in the same crystal than the first hit crystal
+		   {
+		     E += *(Energy_itr->second);
+
+		   }else  // we fill the tree for the first detector hit and move to the next detector hit
+		     {
+		       if(E!=0)
+			 {
+			   G4cout <<" -1- filling tree with energy=" << E << G4endl;
+			   // Fill detector number
+			   ms_Event->SetPARISLaBr3StageEDetectorNbr(m_index["Phoswich"] + N_first);
+			   ms_Event->SetPARISLaBr3StageTDetectorNbr(m_index["Phoswich"] + N_first);
+			   ms_Event->SetPARISLaBr3StageECrystalNbr(NCryst); // added by Marc
+			   // Fill Energy
+			   // ms_Event->SetPARISLaBr3StageEEnergy(RandGauss::shoot(E, ResoFirstStage));
+		           E=RandGauss::shoot(E, ResoFirstStage);
+		           ms_Event->SetPARISLaBr3StageEEnergy(E); // Fill the tree
+		           //if(E>EGammaMin && E<EGammaMax)ms_Event->SetPARISLaBr3StageEffphpeak(EGamma);
+
+			   // Fill Time
+			   ms_Event->SetPARISLaBr3StageTTime(RandGauss::shoot(T, ResoTimeGpd));
+
+			 }
+
+		       NCryst=Nc;   // continue with the next hit crystal		   
+		       E=*(Energy_itr->second);
+		     }
+
+
+	       }else  // if it's a new phoswich, one fills the tree with first hit and inspect this new cluster 
+		 {
+	     
+		   if(E!=0)
+		     {
+		       G4cout <<" -2- filling tree with energy=" << E << G4endl;
+		       // Fill detector number
+		       ms_Event->SetPARISLaBr3StageEDetectorNbr(m_index["Phoswich"] + N_first );
+		       ms_Event->SetPARISLaBr3StageTDetectorNbr(m_index["Phoswich"] + N_first );
+		       ms_Event->SetPARISLaBr3StageECrystalNbr(NCryst); // added by Anna
+		       // Fill Energy
+		       //ms_Event->SetPARISLaBr3StageEEnergy(RandGauss::shoot(E, ResoFirstStage));
+		       E=RandGauss::shoot(E, ResoFirstStage);
+		       ms_Event->SetPARISLaBr3StageEEnergy(E); // Fill the tree with energy deposited in first detector
+		       //if(E>EGammaMin && E<EGammaMax)ms_Event->SetPARISLaBr3StageEffphpeak(EGamma);
+		       
+		       // Fill Time
+		       ms_Event->SetPARISLaBr3StageTTime(RandGauss::shoot(T, ResoTimeGpd));
+		       
+		     }
+
+		   N_first=N;
+		   NCryst=Nc;   // and continue with the new hit crystal in this new cluster		   
+		   E=*(Energy_itr->second);
+
+		 }
+
+
+	     //G4cout <<"Energy=" << E << G4endl;
+	     //G4cout <<"Time =" << T << G4endl;
        
-        // Always fill the tree at the end of the loop:
-      if(l==(sizeN-1) && E!=0)
-        {
-          // Fill detector number
-          ms_Event->SetPARISLaBr3StageEDetectorNbr(m_index["Phoswich"] + N_first);
-          ms_Event->SetPARISLaBr3StageTDetectorNbr(m_index["Phoswich"] + N_first);
-          // Fill Energy
-          // ms_Event->SetPARISLaBr3StageEEnergy(RandGauss::shoot(E, ResoFirstStage));
-             E=RandGauss::shoot(E, ResoFirstStage);
-             ms_Event->SetPARISLaBr3StageEEnergy(E); // Fill the tree
-             if(E>EGammaMin && E<EGammaMax)ms_Event->SetPARISLaBr3StageEffphpeak(EGamma);
-
-          // Fill Time
-          ms_Event->SetPARISLaBr3StageTTime(RandGauss::shoot(T, ResoTimeGpd));          
-        }
-
-        Energy_itr++;
-        DetectorNumber_itr++;
-      }
-    }else
-      {
-        // Fill the tree if sizeN=1:
-        if(E!=0)
-          {
-          // Fill detector number
-          ms_Event->SetPARISLaBr3StageEDetectorNbr(m_index["Phoswich"] + N_first);
-          ms_Event->SetPARISLaBr3StageTDetectorNbr(m_index["Phoswich"] + N_first);
-          // Fill Energy
-          // ms_Event->SetPARISLaBr3StageEEnergy(RandGauss::shoot(E, ResoFirstStage));
-             E=RandGauss::shoot(E, ResoFirstStage);
-             ms_Event->SetPARISLaBr3StageEEnergy(E); // Fill the tree
-             if(E>EGammaMin && E<EGammaMax)ms_Event->SetPARISLaBr3StageEffphpeak(EGamma);
-
-          // Fill Time
-          ms_Event->SetPARISLaBr3StageTTime(RandGauss::shoot(T, ResoTimeGpd));
-          }
-      }
-   
+	     // Always fill the tree at the end of the loop:
+	   if(l==(sizeN-1) && E!=0)
+	     {
+	       G4cout <<"-3- filling tree with energy=" << E << G4endl;
+	       // Fill detector number
+	       ms_Event->SetPARISLaBr3StageEDetectorNbr(m_index["Phoswich"] + N_first);
+	       ms_Event->SetPARISLaBr3StageTDetectorNbr(m_index["Phoswich"] + N_first);
+	       ms_Event->SetPARISLaBr3StageECrystalNbr(NCryst); // added by Anna
+	       cout<<NTrackID<<" filled at the end "<<NCryst<<endl;
+	       // Fill Energy
+	       // ms_Event->SetPARISLaBr3StageEEnergy(RandGauss::shoot(E, ResoFirstStage));
+	       E=RandGauss::shoot(E, ResoFirstStage);
+	       ms_Event->SetPARISLaBr3StageEEnergy(E); // Fill the tree
+		       //if(E>EGammaMin && E<EGammaMax)ms_Event->SetPARISLaBr3StageEffphpeak(EGamma);
+
+	       // Fill Time
+	       ms_Event->SetPARISLaBr3StageTTime(RandGauss::shoot(T, ResoTimeGpd));	       
+	     }
+
+	   }
+
+	 }else
+	   {
+	     // Fill the tree if sizeN=1:
+	     if(E!=0)
+	       {
+		 G4cout <<" -4- filling tree with energy=" << E << G4endl;
+	       // Fill detector number
+	       ms_Event->SetPARISLaBr3StageEDetectorNbr(m_index["Phoswich"] + N_first);
+	       ms_Event->SetPARISLaBr3StageTDetectorNbr(m_index["Phoswich"] + N_first);
+	       ms_Event->SetPARISLaBr3StageECrystalNbr(NCryst);
+	       cout<<NTrackID<<" filled with sizeN=1 "<<NCryst<<endl;
+	       // Fill Energy
+	       // ms_Event->SetPARISLaBr3StageEEnergy(RandGauss::shoot(E, ResoFirstStage));
+		       E=RandGauss::shoot(E, ResoFirstStage);
+		       ms_Event->SetPARISLaBr3StageEEnergy(E); // Fill the tree
+		       //if(E>EGammaMin && E<EGammaMax)ms_Event->SetPARISLaBr3StageEffphpeak(EGamma);
+
+	       // Fill Time
+	       ms_Event->SetPARISLaBr3StageTTime(RandGauss::shoot(T, ResoTimeGpd));
+	       }
+	   }
+	
  
 
      }
   
 
    ///////// For CsI stage:
-   EGammaMin = EGamma-4*ResoSecondStage; 
-   EGammaMax = EGamma+4*ResoSecondStage;
+   //EGammaMin = EGamma-4*ResoSecondStage; 
+   //EGammaMax = EGamma+4*ResoSecondStage;
    if(sizeNCsI>0)
      {
        // Deal with trackID=1:
        G4int NCsI_first= *(CsIDetectorNumber_itr->second);                  // ID of first det hit
        G4int NCsITrackID =   CsIDetectorNumber_itr->first - NCsI_first;           // first trackID dealt with (not always =1)
+       NCsITrackID *= 1;
        G4double E_CsI=*(CsIStageEnergy_itr->second);                   // Energy second stage
-
+       G4int NCsICryst= *(CsICrystalNumber_itr->second); // added by Marc
 
        //G4cout <<"NCsITrackID=" << NCsITrackID << G4endl;
        //G4cout <<"NCsI_first=" << NCsI_first << G4endl;
        //G4cout <<"CsI Energy first=" << E_CsI << G4endl;
 
+         CsICrystalNumber_itr = CsICrystalNumberHitMap->GetMap()->begin(); // added by Marc
+	 /*	
+         for (G4int l = 0 ; l < sizeCCsI ; l++) {
+            G4double NCsICryst = *(CsICrystalNumber_itr->second);
+	    G4int CCsITrackID  =   CsICrystalNumber_itr->first - NCsI_first - NCsICryst;
+	    G4cout << NCsI_first << "  " << NCsITrackID << "  " << CCsITrackID << "  " << NCsICryst << G4endl;
+            if (CCsITrackID == NCsITrackID) {
+	       G4cout << "****************** NCsICryst " <<  NCsICryst << G4endl;
+            }
+            CsICrystalNumber_itr++;
+         }
+	 //rewind:
+         for (G4int l = 0 ; l < sizeCCsI ; l++) {
+            CsICrystalNumber_itr--;
+	 }
+	 */
+
        if(sizeNCsI>1)
-    {
-      CsIDetectorNumber_itr++;
-      CsIStageEnergy_itr++;
+	 {
+	   for (G4int l = 1; l < sizeNCsI ; l++) {                    // loop on all the other tracks
 
-      for (G4int l = 1; l < sizeNCsI ; l++) {                    // loop on all the other tracks
+	     CsIStageEnergy_itr++;
+	     CsIDetectorNumber_itr++;
+	     CsICrystalNumber_itr++;
 
  
-        G4int NCsI= *(CsIDetectorNumber_itr->second);            // ID of det hit
-        NCsITrackID =   CsIDetectorNumber_itr->first - NCsI;           // ID of the track
-
-        //G4cout <<"l=" << l << G4endl;
-        //G4cout <<"NCsI=" << NCsI << G4endl;
-        //G4cout <<"DetectorNumber_itr->first =" << CsIDetectorNumber_itr->first << G4endl;
-        //G4cout <<"NCsITrackID=" << NCsITrackID << G4endl;
-
-        if(NCsI==NCsI_first)
-          {
-      
-       E_CsI += *(CsIStageEnergy_itr->second);
-
-          }else  // we fill the tree for the first detector hit and move to the next detector hit
-       {
-         if(E_CsI!=0)
-           {
-             // Fill detector number
-             ms_Event->SetPARISCsIStageEDetectorNbr(m_index["Phoswich"] + NCsI_first);
-             ms_Event->SetPARISCsIStageTDetectorNbr(m_index["Phoswich"] + NCsI_first);
-             // Fill Energy
-             //ms_Event->SetPARISCsIStageEEnergy(RandGauss::shoot(E_CsI, ResoSecondStage));
-                 E_CsI=RandGauss::shoot(E_CsI, ResoSecondStage);
-                 ms_Event->SetPARISCsIStageEEnergy(E_CsI); // Fill the tree
-                 if(E_CsI>EGammaMin && E_CsI<EGammaMax)ms_Event->SetPARISCsIStageEffphpeak(EGamma);
-             // Fill Time
-             //ms_Event->SetPARISCsIStageTTime(RandGauss::shoot(T_CsI, ResoTimeGpd));
-           }
-         
-          NCsI_first=NCsI;
-          E_CsI=*(CsIStageEnergy_itr->second);
-       }
-
-        //G4cout <<"Energy_CsI=" << E_CsI << G4endl;
+	     G4int NCsI= *(CsIDetectorNumber_itr->second);            // ID of Phoswich hit
+	     G4int NcCsI= *(CsICrystalNumber_itr->second);            // ID of crystal hit (always =0 for phoswich)
+	     NCsITrackID =   CsIDetectorNumber_itr->first - NCsI;           // ID of the track
+
+	     //G4cout <<"l=" << l << G4endl;
+	     //G4cout <<"NCsI=" << NCsI << G4endl;
+	     //G4cout <<"DetectorNumber_itr->first =" << CsIDetectorNumber_itr->first << G4endl;
+	     //G4cout <<"NCsITrackID=" << NCsITrackID << G4endl;
+
+	     // At phoswichs'level:
+	     if(NCsI==NCsI_first)
+	       {
+		 // At crystals'level:
+		 if(NcCsI==NCsICryst)  // if we are still in the same crystal than the first hit CsI crystal
+		   {
+		
+		     E_CsI += *(CsIStageEnergy_itr->second);
+
+		   }else  // we fill the tree for the first detector hit and move to the next detector hit
+		     {
+		       if(E_CsI!=0)
+			 {
+			   // Fill detector number
+			   ms_Event->SetPARISCsIStageEDetectorNbr(m_index["Phoswich"] + NCsI_first);
+			   ms_Event->SetPARISCsIStageTDetectorNbr(m_index["Phoswich"] + NCsI_first);
+			   ms_Event->SetPARISCsIStageECrystalNbr(NCsICryst);
+			   // Fill Energy
+			   //ms_Event->SetPARISCsIStageEEnergy(RandGauss::shoot(E_CsI, ResoSecondStage));
+		           E_CsI=RandGauss::shoot(E_CsI, ResoSecondStage);
+		           ms_Event->SetPARISCsIStageEEnergy(E_CsI); // Fill the tree
+		           //if(E_CsI>EGammaMin && E_CsI<EGammaMax)ms_Event->SetPARISCsIStageEffphpeak(EGamma);
+
+			   // Fill Time
+			   //ms_Event->SetPARISCsIStageTTime(RandGauss::shoot(T_CsI, ResoTimeGpd));
+			 }
+		   
+		       NCsICryst=NcCsI;
+		       E_CsI=*(CsIStageEnergy_itr->second);
+		     }
+
+	       }else           // if it's a new cluster, one fills the tree with first hit and inspect the new cluster 
+		 {
+		   if(E_CsI!=0)
+		     {
+		       G4cout <<" -2- filling tree with energy in CsI =" << E_CsI << G4endl;
+		       // Fill detector number
+		       ms_Event->SetPARISCsIStageEDetectorNbr(m_index["Phoswich"] + NCsI_first );
+		       ms_Event->SetPARISCsIStageTDetectorNbr(m_index["Phoswich"] + NCsI_first );
+		       ms_Event->SetPARISCsIStageECrystalNbr(NCsICryst); // added by Marc
+		       // Fill Energy
+		       //ms_Event->SetPARISLaBr3StageEEnergy(RandGauss::shoot(E, ResoFirstStage));
+		       E_CsI=RandGauss::shoot(E_CsI, ResoFirstStage);
+		       ms_Event->SetPARISCsIStageEEnergy(E_CsI); // Fill the tree with energy deposited in first detector
+		       //if(E_CsI>EGammaMin && E_CsI<EGammaMax)ms_Event->SetPARISCsIStageEffphpeak(EGamma);
+		       
+		       // Fill Time
+		       //ms_Event->SetPARISCsIStageTTime(RandGauss::shoot(T_CsI, ResoTimeGpd));
+
+		     }
+	    
+		   NCsI_first=NCsI;  // continue with the new hit cluster
+		   NCsICryst=NcCsI;   // and continue with the new hit CsI crystal in this new cluster
+		   E_CsI=*(CsIStageEnergy_itr->second); 
+   
+		 }
 
-        // Always fill the tree at the end of the loop:
+	   // Always fill the tree at the end of the loop:
        
-      if(l==(sizeNCsI-1) && E_CsI!=0)
-        {
-          // Fill detector number
-          ms_Event->SetPARISCsIStageEDetectorNbr(m_index["Phoswich"] + NCsI_first);
-          ms_Event->SetPARISCsIStageTDetectorNbr(m_index["Phoswich"] + NCsI_first);
-          // Fill Energy
-          // ms_Event->SetPARISCsIStageEEnergy(RandGauss::shoot(E_CsI, ResoSecondStage));
-                 E_CsI=RandGauss::shoot(E_CsI, ResoSecondStage);
-                 ms_Event->SetPARISCsIStageEEnergy(E_CsI); // Fill the tree
-                 if(E_CsI>EGammaMin && E_CsI<EGammaMax)ms_Event->SetPARISCsIStageEffphpeak(EGamma);
-          // Fill Time
-          //ms_Event->SetPARISCsIStageTTime(RandGauss::shoot(T_CsI, ResoTimeGpd));
-          
-          }
-
-        CsIStageEnergy_itr++;
-        CsIDetectorNumber_itr++;
-      }
-
-    }else
-      {
-        // Fill the tree if sizeN=1:
-        if(E_CsI!=0)
-          {
-          // Fill detector number
-          ms_Event->SetPARISCsIStageEDetectorNbr(m_index["Phoswich"] + NCsI_first);
-          ms_Event->SetPARISCsIStageTDetectorNbr(m_index["Phoswich"] + NCsI_first);
-          // Fill Energy
-          //ms_Event->SetPARISCsIStageEEnergy(RandGauss::shoot(E_CsI, ResoSecondStage));
-                 E_CsI=RandGauss::shoot(E_CsI, ResoSecondStage);
-                 ms_Event->SetPARISCsIStageEEnergy(E_CsI); // Fill the tree
-                 if(E_CsI>EGammaMin && E_CsI<EGammaMax)ms_Event->SetPARISCsIStageEffphpeak(EGamma);
-          // Fill Time
-          //ms_Event->SetPARISCsIStageTTime(RandGauss::shoot(T_CsI, ResoTimeGpd));
-          }
-      }
+	     if(l==(sizeNCsI-1) && E_CsI!=0)
+	       {
+		 G4cout <<" -3- filling tree with energy in CsI =" << E_CsI << G4endl;
+		 // Fill detector number
+		 ms_Event->SetPARISCsIStageEDetectorNbr(m_index["Phoswich"] + NCsI_first);
+		 ms_Event->SetPARISCsIStageTDetectorNbr(m_index["Phoswich"] + NCsI_first);
+		 ms_Event->SetPARISCsIStageECrystalNbr(NCsICryst);
+		 // Fill Energy
+		 // ms_Event->SetPARISCsIStageEEnergy(RandGauss::shoot(E_CsI, ResoSecondStage));
+		 E_CsI=RandGauss::shoot(E_CsI, ResoSecondStage);
+		 ms_Event->SetPARISCsIStageEEnergy(E_CsI); // Fill the tree
+		 //if(E_CsI>EGammaMin && E_CsI<EGammaMax)ms_Event->SetPARISCsIStageEffphpeak(EGamma);
+		 // Fill Time
+		 //ms_Event->SetPARISCsIStageTTime(RandGauss::shoot(T_CsI, ResoTimeGpd));
+	       
+	       }
+
+	   }
+
+	 }else
+	   {
+	     // Fill the tree if sizeN=1:
+	     if(E_CsI!=0)
+	       {
+		 G4cout <<" -4- filling tree with energy in CsI =" << E_CsI << G4endl;
+		 // Fill detector number
+		 ms_Event->SetPARISCsIStageEDetectorNbr(m_index["Phoswich"] + NCsI_first);
+		 ms_Event->SetPARISCsIStageTDetectorNbr(m_index["Phoswich"] + NCsI_first);
+		 ms_Event->SetPARISCsIStageECrystalNbr(NCsICryst);
+		 // Fill Energy
+		 //ms_Event->SetPARISCsIStageEEnergy(RandGauss::shoot(E_CsI, ResoSecondStage));
+		 E_CsI=RandGauss::shoot(E_CsI, ResoSecondStage);
+		 ms_Event->SetPARISCsIStageEEnergy(E_CsI); // Fill the tree
+		 //if(E_CsI>EGammaMin && E_CsI<EGammaMax)ms_Event->SetPARISCsIStageEffphpeak(EGamma);
+		 // Fill Time
+		 //ms_Event->SetPARISCsIStageTTime(RandGauss::shoot(T_CsI, ResoTimeGpd));
+	       }
+	   }
  
      }
   
@@ -923,6 +1048,7 @@ void ParisPhoswich::ReadSensitive(const G4Event* event)
 
       // clear map for next event
       DetectorNumberHitMap    -> clear();
+      CrystalNumberHitMap     -> clear();  // added by Marc
       EnergyHitMap            -> clear();
       TimeHitMap              -> clear();
       //XHitMap                 -> clear();
@@ -934,6 +1060,7 @@ void ParisPhoswich::ReadSensitive(const G4Event* event)
       //AngPhiHitMap            -> clear();
 
       CsIDetectorNumberHitMap    -> clear();
+      CsICrystalNumberHitMap    -> clear();   // added by Marc
       CsIStageEnergyHitMap -> clear();
 
 
@@ -984,9 +1111,11 @@ void ParisPhoswich::InitializeScorers()
    m_CsIStageScorer = new G4MultiFunctionalDetector("CsIStageScorerParisPhoswich");
    /**/
    G4VPrimitiveScorer* CsIDetNbr                        = new PARISScorerCsIStageDetectorNumber("CsIDetectorNumber", "ParisPhoswich", 0);
+   G4VPrimitiveScorer* CsICryNbr                        = new PARISScorerCsIStageCrystalNumber("CsICrystalNumber", "ParisPhoswich", 0); // added by Marc
    G4VPrimitiveScorer* CsIStageEnergy                   = new PARISScorerCsIStageEnergy("CsIStageEnergy", "ParisPhoswich", 0);
 
    m_CsIStageScorer->RegisterPrimitive(CsIDetNbr);
+   m_CsIStageScorer->RegisterPrimitive(CsICryNbr); // Added by Marc
    m_CsIStageScorer->RegisterPrimitive(CsIStageEnergy);
    /**/
 
diff --git a/NPSimulation/src/ParisScorers.cc b/NPSimulation/src/ParisScorers.cc
index ce481189c71dc0e1ad6ed7dab12603ae74787c0f..b21790a5b75acc272398211afcb6861306c172f0 100644
--- a/NPSimulation/src/ParisScorers.cc
+++ b/NPSimulation/src/ParisScorers.cc
@@ -58,12 +58,14 @@ G4bool PARISScorerLaBr3StageDetectorNumber::ProcessHits(G4Step* aStep, G4Touchab
 {
    // get detector number
    int DetNbr = GENERALSCORERS::PickUpDetectorNumber(aStep, m_VolumeName);
+   // int DetNbr  = aStep->GetPreStepPoint()->GetTouchableHandle()->GetCopyNumber(0); // this line does exactly the same than the line above
+   int CrystalNbr  = aStep->GetPreStepPoint()->GetTouchableHandle()->GetCopyNumber(1);
 
    // get energy
    G4double edep = aStep->GetTotalEnergyDeposit();
    if (edep < 0*keV) return FALSE;                   // = HERE IS THE DIFFERENCE WITH GENERALSCORER 
    G4int  index = aStep->GetTrack()->GetTrackID();
-   EvtMap->set(DetNbr + index, DetNbr);
+   EvtMap->set(CrystalNbr + DetNbr + index, DetNbr);
    return TRUE;
 }
 void PARISScorerLaBr3StageDetectorNumber::Initialize(G4HCofThisEvent* HCE)
@@ -119,6 +121,7 @@ G4bool PARISScorerLaBr3StageEnergy::ProcessHits(G4Step* aStep, G4TouchableHistor
 {
    // get detector number
    int DetNbr = GENERALSCORERS::PickUpDetectorNumber(aStep, m_VolumeName);
+   int CrystalNbr  = aStep->GetPreStepPoint()->GetTouchableHandle()->GetCopyNumber(1);
 
    // get energy
    G4ThreeVector POS  = aStep->GetPreStepPoint()->GetPosition();
@@ -128,7 +131,7 @@ G4bool PARISScorerLaBr3StageEnergy::ProcessHits(G4Step* aStep, G4TouchableHistor
    //   if (edep < 100*keV) return FALSE;
    if (edep < 0*keV) return FALSE;                  // = HERE IS THE DIFFERENCE WITH GENERALSCORER 
    G4int  index = aStep->GetTrack()->GetTrackID();
-   EvtMap->add(DetNbr + index, edep);
+   EvtMap->add(CrystalNbr + DetNbr + index, edep);
    return TRUE;
 }
 
@@ -185,14 +188,26 @@ G4bool PARISScorerLaBr3StageCrystal::ProcessHits(G4Step* aStep, G4TouchableHisto
    // get detector number
    int DetNbr = GENERALSCORERS::PickUpDetectorNumber(aStep, m_VolumeName);
 
-   // get energy
-   G4int CrystalNbr  = aStep->GetPreStepPoint()->GetTouchableHandle()->GetReplicaNumber(1);
+   //G4int CrystalNbr  = aStep->GetPreStepPoint()->GetTouchableHandle()->GetReplicaNumber(1);
+   //Adde by Anna:
+  G4int CrystalNbr  = aStep->GetPreStepPoint()->GetTouchableHandle()->GetCopyNumber(1); // daughter crystal volume
+   //depth:0 is the world, 1 is the mother...
+   //AC instead of GetReplicaNumber(1)
+   //cout<<"****replica****"<<endl;
+   //cout<<"copy nbr"<<aStep->GetPreStepPoint()->GetTouchableHandle()->GetCopyNumber(1)<<endl;
+   //cout<<"replica nbr"<<aStep->GetPreStepPoint()->GetTouchableHandle()->GetReplicaNumber(1)<<endl;
+   //cout<<aStep->GetPreStepPoint()->GetTouchableHandle()->GetCopyNumber(2)<<endl;
+   //cout<<aStep->GetPreStepPoint()->GetTouchableHandle()->GetCopyNumber(0)<<endl;
  
+   // get energy
    G4double edep = aStep->GetTotalEnergyDeposit();
    //   if (edep < 100*keV) return FALSE;
    if (edep < 0*keV) return FALSE;                   // = HERE IS THE DIFFERENCE WITH GENERALSCORER 
    G4int  index = aStep->GetTrack()->GetTrackID();
-   EvtMap->add(DetNbr + index, CrystalNbr);
+   //EvtMap->add(DetNbr + index, CrystalNbr);  // Marc
+   //cout<<"index "<<index<<endl;
+   //cout<<"DetNbr + index "<<DetNbr + index<<endl;   
+   EvtMap->set(CrystalNbr + DetNbr + index, CrystalNbr);// modified by Anna
    return TRUE;
 
 }
@@ -251,6 +266,7 @@ G4bool PARISScorerLaBr3StageTOF::ProcessHits(G4Step* aStep, G4TouchableHistory*)
 {
    // get detector number
    int DetNbr = GENERALSCORERS::PickUpDetectorNumber(aStep, m_VolumeName);
+   int CrystalNbr  = aStep->GetPreStepPoint()->GetTouchableHandle()->GetCopyNumber(1);
 
    // get TOF
    G4double TOF  = aStep->GetPreStepPoint()->GetGlobalTime();
@@ -259,7 +275,7 @@ G4bool PARISScorerLaBr3StageTOF::ProcessHits(G4Step* aStep, G4TouchableHistory*)
    //   if (edep < 100*keV) return FALSE;
    if (edep < 0*keV) return FALSE;                   // = HERE IS THE DIFFERENCE WITH GENERALSCORER 
    G4int  index = aStep->GetTrack()->GetTrackID();
-   EvtMap->add(DetNbr + index, TOF);
+   EvtMap->add(CrystalNbr + DetNbr + index, TOF);
    return TRUE;
 }
 
@@ -312,12 +328,14 @@ G4bool PARISScorerCsIStageDetectorNumber::ProcessHits(G4Step* aStep, G4Touchable
 {
    // get detector number
    int DetNbr = GENERALSCORERS::PickUpDetectorNumber(aStep, m_VolumeName);
+   // int DetNbr  = aStep->GetPreStepPoint()->GetTouchableHandle()->GetCopyNumber(0); // this line does exactly the same than the line above
+   int CrystalNbr  = aStep->GetPreStepPoint()->GetTouchableHandle()->GetCopyNumber(1);
 
    // get energy
    G4double edep = aStep->GetTotalEnergyDeposit();
    if (edep < 0*keV) return FALSE;                   // = HERE IS THE DIFFERENCE WITH GENERALSCORER 
    G4int  index = aStep->GetTrack()->GetTrackID();
-   EvtMap->set(DetNbr + index, DetNbr);
+   EvtMap->set(CrystalNbr + DetNbr + index, DetNbr);
    return TRUE;
 }
 void PARISScorerCsIStageDetectorNumber::Initialize(G4HCofThisEvent* HCE)
@@ -372,6 +390,7 @@ G4bool PARISScorerCsIStageEnergy::ProcessHits(G4Step* aStep, G4TouchableHistory*
 {
    // get detector number
    int DetNbr = GENERALSCORERS::PickUpDetectorNumber(aStep, m_VolumeName);
+   int CrystalNbr  = aStep->GetPreStepPoint()->GetTouchableHandle()->GetCopyNumber(1);
 
    // get energy
    G4ThreeVector POS  = aStep->GetPreStepPoint()->GetPosition();
@@ -381,7 +400,7 @@ G4bool PARISScorerCsIStageEnergy::ProcessHits(G4Step* aStep, G4TouchableHistory*
    //if (edep < 100*keV) return FALSE;      
    if (edep < 0*keV) return FALSE;      // = HERE IS THE DIFFERENCE WITH GENERALSCORER 
    G4int  index = aStep->GetTrack()->GetTrackID();
-   EvtMap->add(DetNbr + index, edep);
+   EvtMap->add(CrystalNbr + DetNbr + index, edep);
    return TRUE;
 }
 
@@ -421,3 +440,77 @@ void PARISScorerCsIStageEnergy::PrintAll()
 }
 
 
+//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
+// all added by Anna:
+
+// FirstStage CrystalNbr Scorer (deal with multiple particle hit)
+PARISScorerCsIStageCrystalNumber::PARISScorerCsIStageCrystalNumber(G4String name, G4String volumeName, G4int depth)
+      : G4VPrimitiveScorer(name, depth), HCID(-1)
+{
+   m_VolumeName = volumeName;
+}
+
+PARISScorerCsIStageCrystalNumber::~PARISScorerCsIStageCrystalNumber()
+{
+}
+
+G4bool PARISScorerCsIStageCrystalNumber::ProcessHits(G4Step* aStep, G4TouchableHistory*)
+{
+   // get detector number
+   int DetNbr = GENERALSCORERS::PickUpDetectorNumber(aStep, m_VolumeName);
+
+   // get energy
+   G4int CrystalNbr  = aStep->GetPreStepPoint()->GetTouchableHandle()->GetCopyNumber(1);
+   //depth:0 is the world, 1 is the mother...
+   //AC instead of GetReplicaNumber(1)
+   //cout<<"****replica****"<<endl;
+   //cout<<"copy nbr"<<aStep->GetPreStepPoint()->GetTouchableHandle()->GetCopyNumber(1)<<endl;
+   //cout<<"replica nbr"<<aStep->GetPreStepPoint()->GetTouchableHandle()->GetReplicaNumber(1)<<endl;
+   //cout<<aStep->GetPreStepPoint()->GetTouchableHandle()->GetCopyNumber(2)<<endl;
+   //cout<<aStep->GetPreStepPoint()->GetTouchableHandle()->GetCopyNumber(0)<<endl;
+ 
+   G4double edep = aStep->GetTotalEnergyDeposit();
+   //   if (edep < 100*keV) return FALSE;
+   if (edep < 0*keV) return FALSE;                   // = HERE IS THE DIFFERENCE WITH GENERALSCORER 
+   G4int  index = aStep->GetTrack()->GetTrackID();
+   //cout<<"index "<<index<<endl;
+   //cout<<"DetNbr + index "<<DetNbr + index<<endl;
+   EvtMap->set(CrystalNbr + DetNbr + index, CrystalNbr);
+   return TRUE;
+
+}
+
+void PARISScorerCsIStageCrystalNumber::Initialize(G4HCofThisEvent* HCE)
+{
+   EvtMap = new G4THitsMap<G4int>(GetMultiFunctionalDetector()->GetName(), GetName());
+   if (HCID < 0) {
+      HCID = GetCollectionID(0);
+   }
+   HCE->AddHitsCollection(HCID, (G4VHitsCollection*)EvtMap);
+}
+
+void PARISScorerCsIStageCrystalNumber::EndOfEvent(G4HCofThisEvent*)
+{
+}
+
+void PARISScorerCsIStageCrystalNumber::Clear()
+{
+   EvtMap->clear();
+}
+
+void PARISScorerCsIStageCrystalNumber::DrawAll()
+{
+}
+
+void PARISScorerCsIStageCrystalNumber::PrintAll()
+{
+   G4cout << " MultiFunctionalDet  " << detector->GetName() << G4endl;
+   G4cout << " PrimitiveScorer " << GetName() << G4endl;
+   G4cout << " Number of entries " << EvtMap->entries() << G4endl;
+      std::map<G4int, G4int*>::iterator itr = EvtMap->GetMap()->begin();
+      for (; itr != EvtMap->GetMap()->end(); itr++) {
+         G4cout << "  copy no.: " << itr->first
+         << "  crystal nbr: " << G4BestUnit(*(itr->second), "Crystal")
+       << G4endl;
+   }
+}
diff --git a/NPSimulation/src/ShieldClParis.cc b/NPSimulation/src/ShieldClParis.cc
index 17d2af2c9bb59cb4853ae2921fd079430faf0d2c..87f673adfe7fa24774bfd4629421e23d8b784644 100644
--- a/NPSimulation/src/ShieldClParis.cc
+++ b/NPSimulation/src/ShieldClParis.cc
@@ -201,9 +201,6 @@ void ShieldClParis::VolumeMaker(G4int             DetecNumber,
    ////////////////////////////////////////////////////////////////
    ////////////// Starting Volume Definition //////////////////////
    ////////////////////////////////////////////////////////////////
-   // Little trick to avoid warning in compilation: Use a PVPlacement "buffer".
-   // If don't you will have a Warning unused variable 'myPVP'
-   G4PVPlacement* PVPBuffer;
    G4String Name = "ShieldClParis" + DetectorNumber ;
 
    // Mother Volume
@@ -212,12 +209,12 @@ void ShieldClParis::VolumeMaker(G4int             DetecNumber,
                        43.125*mm, 133.5*mm, 133.5*mm,0.*deg);
    G4LogicalVolume* logicShieldClParis = new G4LogicalVolume(solidShieldClParis, Vacuum, Name, 0, 0, 0);
 
-   PVPBuffer     = new G4PVPlacement(G4Transform3D(*MMrot, MMpos) ,
-                                     logicShieldClParis           ,
-                                     Name                         ,
-                                     world                        ,
-                                     false                        ,
-                                     0);
+   new G4PVPlacement(G4Transform3D(*MMrot, MMpos) ,
+                     logicShieldClParis           ,
+                     Name                         ,
+                     world                        ,
+                     false                        ,
+                     0);
 
    logicShieldClParis->SetVisAttributes(G4VisAttributes::Invisible);
    if (m_non_sensitive_part_visiualisation) logicShieldClParis->SetVisAttributes(G4VisAttributes(G4Colour(0.90, 0.90, 0.90)));
@@ -232,14 +229,14 @@ void ShieldClParis::VolumeMaker(G4int             DetecNumber,
    //G4LogicalVolume* logicShieldCsI = new G4LogicalVolume(solidShieldCsI, CsI, "logicShieldCsI", 0, 0, 0);
    G4LogicalVolume* logicShieldCsI = new G4LogicalVolume(solidShieldCsI, NaI, "logicShieldCsI", 0, 0, 0);
 
-   PVPBuffer     = new G4PVPlacement(0,
-                 positionCsI              ,
-                                     logicShieldCsI           ,
-                                     Name + "_ShieldCsI"      ,
-                                     logicShieldClParis       ,
-                                     false                    ,
-                                     0);
-  
+   new G4PVPlacement(0,
+                     positionCsI              ,
+                     logicShieldCsI           ,
+                     Name + "_ShieldCsI"      ,
+                     logicShieldClParis       ,
+                     false                    ,
+                     0);
+
    // Set CsI sensible
    logicShieldCsI->SetSensitiveDetector(m_CsIShieldScorer);
 
@@ -282,7 +279,6 @@ void ShieldClParis::ReadConfiguration(string Path)
    bool check_Theta = false;
    bool check_Phi   = false;
    bool check_R     = false;
-   bool check_beta  = false;
    
    bool checkVis = false;
 
@@ -384,7 +380,6 @@ void ShieldClParis::ReadConfiguration(string Path)
             cout << "R:  " << R / mm << endl;
          }
          else if (DataBuffer.compare(0, 5, "BETA=") == 0) {
-            check_beta = true;
             ConfigFile >> DataBuffer ;
             beta_u = atof(DataBuffer.c_str()) ;
             beta_u = beta_u * deg   ;
@@ -426,7 +421,6 @@ void ShieldClParis::ReadConfiguration(string Path)
             check_Theta = false;
           check_Phi   = false;
           check_R     = false;
-          check_beta  = false;
        checkVis = false;
            
             AddModule(R, Theta, Phi, beta_u, beta_v, beta_w);
@@ -635,6 +629,7 @@ void ShieldClParis::ReadSensitive(const G4Event* event)
        // Deal with trackID=1:
        G4int N_first= *(CsIShieldDetectorNumber_itr->second);                  // ID of first det hit
        G4int NTrackID =   CsIShieldDetectorNumber_itr->first - N_first;           // first trackID dealt with (not always =1)
+       NTrackID *= 1;
        G4double E = *(CsIShieldEnergy_itr->second);
        G4double T = *(CsIShieldTime_itr->second);
       
diff --git a/NPSimulation/src/ShieldPhParis.cc b/NPSimulation/src/ShieldPhParis.cc
index 87feef2850813951651b70fcd56f7dafc58dceca..69beed88c2da1c0b7f67d57d6b962ed98cd10f05 100644
--- a/NPSimulation/src/ShieldPhParis.cc
+++ b/NPSimulation/src/ShieldPhParis.cc
@@ -202,9 +202,6 @@ void ShieldPhParis::VolumeMaker(G4int             DetecNumber,
    ////////////////////////////////////////////////////////////////
    ////////////// Starting Volume Definition //////////////////////
    ////////////////////////////////////////////////////////////////
-   // Little trick to avoid warning in compilation: Use a PVPlacement "buffer".
-   // If don't you will have a Warning unused variable 'myPVP'
-   G4PVPlacement* PVPBuffer;
    G4String Name = "ShieldPhParis" + DetectorNumber ;
 
    // Mother VolumeShieldPhParis.cc
@@ -221,12 +218,12 @@ void ShieldPhParis::VolumeMaker(G4int             DetecNumber,
 
    G4LogicalVolume* logicShieldPhParis = new G4LogicalVolume(solidShieldPhParis, Vacuum, Name, 0, 0, 0);
 
-   PVPBuffer = new G4PVPlacement( G4Transform3D(*MMrot, MMpos),
-                                  logicShieldPhParis,
-                                  Name,
-                                  world,
-                                  false,
-                                  0);
+   G4PVPlacement(G4Transform3D(*MMrot, MMpos),
+                 logicShieldPhParis,
+                 Name,
+                 world,
+                 false,
+                 0);
 
    logicShieldPhParis->SetVisAttributes(G4VisAttributes::Invisible);
    //if (m_non_sensitive_part_visiualisation) logicShieldPhParis->SetVisAttributes(G4VisAttributes(G4Colour(0.90, 0.90, 0.90)));
@@ -242,13 +239,13 @@ void ShieldPhParis::VolumeMaker(G4int             DetecNumber,
    //G4LogicalVolume* logicShieldCsI = new G4LogicalVolume(solidShieldCsI, CsI, "logicShieldCsI", 0, 0, 0);
    G4LogicalVolume* logicShieldCsI = new G4LogicalVolume(solidShieldCsI, NaI, "logicShieldCsI", 0, 0, 0);
 
-   PVPBuffer = new G4PVPlacement( 0,
-                                  positionCsI,
-                                  logicShieldCsI,
-                                  Name + "_ShieldCsI",
-                                  logicShieldPhParis,
-                                  false,
-                                  0);
+   new G4PVPlacement(0,
+                     positionCsI,
+                     logicShieldCsI,
+                     Name + "_ShieldCsI",
+                     logicShieldPhParis,
+                     false,
+                     0);
   
    // Set CsI sensible
    logicShieldCsI->SetSensitiveDetector(m_CsIShieldScorer);
@@ -292,7 +289,6 @@ void ShieldPhParis::ReadConfiguration(string Path)
    bool check_Theta = false;
    bool check_Phi   = false;
    bool check_R     = false;
-   bool check_beta  = false;
    
    bool checkVis = false;
 
@@ -394,7 +390,6 @@ void ShieldPhParis::ReadConfiguration(string Path)
             cout << "R:  " << R / mm << endl;
          }
          else if (DataBuffer.compare(0, 5, "BETA=") == 0) {
-            check_beta = true;
             ConfigFile >> DataBuffer ;
             beta_u = atof(DataBuffer.c_str()) ;
             beta_u = beta_u * deg   ;
@@ -436,7 +431,6 @@ void ShieldPhParis::ReadConfiguration(string Path)
             check_Theta = false;
           check_Phi   = false;
           check_R     = false;
-          check_beta  = false;
        checkVis = false;
            
             AddModule(R, Theta, Phi, beta_u, beta_v, beta_w);
@@ -645,6 +639,7 @@ void ShieldPhParis::ReadSensitive(const G4Event* event)
        // Deal with trackID=1:
        G4int N_first= *(CsIShieldDetectorNumber_itr->second);                  // ID of first det hit
        G4int NTrackID =   CsIShieldDetectorNumber_itr->first - N_first;           // first trackID dealt with (not always =1)
+       NTrackID *= 1;
        G4double E = *(CsIShieldEnergy_itr->second);
        G4double T = *(CsIShieldTime_itr->second);
       
diff --git a/NPSimulation/src/W1.cc b/NPSimulation/src/W1.cc
index 7e772c0064cce53550aa6bee6afec3e0e0a44246..ffde31819ae670e60d9f0d3d1e15f6d63e9bc49a 100644
--- a/NPSimulation/src/W1.cc
+++ b/NPSimulation/src/W1.cc
@@ -135,16 +135,13 @@ void W1::VolumeMaker(G4int             DetecNumber,
    ////////////////////////////////////////////////////////////////
    ////////////// Starting Volume Definition //////////////////////
    ////////////////////////////////////////////////////////////////
-   // Little trick to avoid warning in compilation: Use a PVPlacement "buffer".
-   // If don't you will have a Warning unused variable 'myPVP'
-   G4PVPlacement* PVPBuffer ;
    G4String Name = "W1Square" + DetectorNumber;
 
    // Definition of the volume containing the sensitive detector
    G4Box*           solidW1 = new G4Box(Name, 0.5*FaceFront, 0.5*FaceFront, 0.5*Length);
    G4LogicalVolume* logicW1 = new G4LogicalVolume(solidW1, m_MaterialVacuum, Name, 0, 0, 0);
 
-   PVPBuffer = new G4PVPlacement(G4Transform3D(*rotation, position), logicW1, Name, world, false, 0);
+   new G4PVPlacement(G4Transform3D(*rotation, position), logicW1, Name, world, false, 0);
 
    logicW1->SetVisAttributes(G4VisAttributes::Invisible);
    if (m_non_sensitive_part_visiualisation) logicW1->SetVisAttributes(G4VisAttributes(G4Colour(0.90, 0.90, 0.90)));
@@ -157,8 +154,8 @@ void W1::VolumeMaker(G4int             DetecNumber,
 //   G4LogicalVolume* logicAluStrip = new G4LogicalVolume(solidAluStrip, m_MaterialAluminium, "logicAluStrip", 0, 0, 0);
    G4LogicalVolume* logicAluStrip = new G4LogicalVolume(solidAluStrip, m_MaterialVacuum, "logicAluStrip", 0, 0, 0);
 
-   PVPBuffer = new G4PVPlacement(0, positionAluStripFront, logicAluStrip, Name + "_AluStripFront", logicW1, false, 0);
-   PVPBuffer = new G4PVPlacement(0, positionAluStripBack,  logicAluStrip, Name + "_AluStripBack",  logicW1, false, 0);
+   new G4PVPlacement(0, positionAluStripFront, logicAluStrip, Name + "_AluStripFront", logicW1, false, 0);
+   new G4PVPlacement(0, positionAluStripBack,  logicAluStrip, Name + "_AluStripBack",  logicW1, false, 0);
 
    logicAluStrip->SetVisAttributes(G4VisAttributes::Invisible);
 
@@ -168,7 +165,7 @@ void W1::VolumeMaker(G4int             DetecNumber,
    G4Box*           solidSilicon = new G4Box("solidSilicon", 0.5*SiliconFace, 0.5*SiliconFace, 0.5*SiliconThickness);
    G4LogicalVolume* logicSilicon = new G4LogicalVolume(solidSilicon, m_MaterialSilicon, "logicSilicon", 0, 0, 0);
 
-   PVPBuffer = new G4PVPlacement(0, positionSilicon, logicSilicon, Name + "_Silicon", logicW1, false, 0);
+   new G4PVPlacement(0, positionSilicon, logicSilicon, Name + "_Silicon", logicW1, false, 0);
 
    // Set Silicon strip sensible
    logicSilicon->SetSensitiveDetector(m_Scorer);
@@ -206,7 +203,6 @@ void W1::ReadConfiguration(string Path)
    bool check_R     = false;
    bool check_Theta = false;
    bool check_Phi   = false;
-   bool check_beta  = false;
    bool checkVis = false ;
 
    while (!ConfigFile.eof()) {
@@ -319,7 +315,6 @@ void W1::ReadConfiguration(string Path)
          }
 
          else if (DataBuffer.compare(0, 5, "BETA=") == 0) {
-            check_beta = true;
             ConfigFile >> DataBuffer;
             beta_u = atof(DataBuffer.c_str());
             beta_u = beta_u * deg;
@@ -364,7 +359,6 @@ void W1::ReadConfiguration(string Path)
             check_R     = false;
             check_Theta = false;
             check_Phi   = false;
-            check_beta  = false;
             checkVis    = false;
 
             AddDetector(R, Theta, Phi, beta_u, beta_v, beta_w);
diff --git a/NPSimulation/src/W1Scorers.cc b/NPSimulation/src/W1Scorers.cc
index 6dffec56882a055351e2f0ab0d4abc00baeff266..c6b38ee9ed238a66c9dfcc97b1d639221b294e27 100644
Binary files a/NPSimulation/src/W1Scorers.cc and b/NPSimulation/src/W1Scorers.cc differ