diff --git a/NPSimulation/include/GaspardTrackerAnnular.hh b/NPSimulation/include/GaspardTrackerAnnular.hh
index a43a7bf45b0ebc331931a509f5d5449b8b31a833..0437e4bad965c6ca04d1738e511046f5594fa643 100644
--- a/NPSimulation/include/GaspardTrackerAnnular.hh
+++ b/NPSimulation/include/GaspardTrackerAnnular.hh
@@ -31,7 +31,6 @@
 
 using namespace std;
 
-#define INDEX	200
 
 
 class GaspardTrackerAnnular : public GaspardTrackerModule
diff --git a/NPSimulation/include/GaspardTrackerDummyShape.hh b/NPSimulation/include/GaspardTrackerDummyShape.hh
index db4cdec8c74c89abb692feedb2e68d3019e56480..256be83a4903d272169d805098b559baee68c4c9 100644
--- a/NPSimulation/include/GaspardTrackerDummyShape.hh
+++ b/NPSimulation/include/GaspardTrackerDummyShape.hh
@@ -33,7 +33,6 @@
 
 using namespace std;
 
-#define	INDEX	1000
 
 
 class GaspardTrackerDummyShape : public GaspardTrackerModule
diff --git a/NPSimulation/include/GaspardTrackerModule.hh b/NPSimulation/include/GaspardTrackerModule.hh
index 92ee9483fbecec4a5c07e21eab4874bb07d636c1..0281068851aaeece058d182987dbb7edebf66a97 100644
--- a/NPSimulation/include/GaspardTrackerModule.hh
+++ b/NPSimulation/include/GaspardTrackerModule.hh
@@ -24,6 +24,7 @@
 
 // C++ headers
 #include <string>
+#include <vector>
 
 // G4 headers
 #include "G4LogicalVolume.hh"
@@ -66,6 +67,9 @@ public:
    virtual void SetInterCoordPointer(TInteractionCoordinates* interCoord) = 0;
    virtual TInteractionCoordinates* GetInterCoordPointer() = 0;
 
+   // Initialize the Index map for the different modules of Gaspard
+   void InitializeIndex();
+
 public:
    TGaspardTrackerData*		GetEventPointer() 	{return ms_Event;};
 
@@ -90,6 +94,9 @@ protected:
 
    // Third stage Associate Scorer 
    G4MultiFunctionalDetector* m_ThirdStageScorer;
+
+protected:
+   map<string, int> m_index;
 };
 
 #endif
diff --git a/NPSimulation/include/GaspardTrackerSquare.hh b/NPSimulation/include/GaspardTrackerSquare.hh
index 841a605c9aeaddbe94ba5a8a49e9fcc27f7c1c28..180b0d1b125923308a2a618e0db785290f8ca763 100644
--- a/NPSimulation/include/GaspardTrackerSquare.hh
+++ b/NPSimulation/include/GaspardTrackerSquare.hh
@@ -31,7 +31,6 @@
 
 using namespace std;
 
-#define	INDEX	0
 
 
 class GaspardTrackerSquare : public GaspardTrackerModule
diff --git a/NPSimulation/include/GaspardTrackerTrapezoid.hh b/NPSimulation/include/GaspardTrackerTrapezoid.hh
index 2b86902e39d58c4166cdee2a3f0579fecd79b82d..c7224df3b91d120b7e23ea7bfbcb0c737b080bff 100644
--- a/NPSimulation/include/GaspardTrackerTrapezoid.hh
+++ b/NPSimulation/include/GaspardTrackerTrapezoid.hh
@@ -31,7 +31,6 @@
 
 using namespace std;
 
-#define	INDEX	100
 
 
 class GaspardTrackerTrapezoid : public GaspardTrackerModule
diff --git a/NPSimulation/src/GaspardTrackerAnnular.cc b/NPSimulation/src/GaspardTrackerAnnular.cc
index ba566a4c2acd398beca6705f92daeed1bb61daa7..d317818cc54d8cc83d93de32b9bbe04929050e89 100644
--- a/NPSimulation/src/GaspardTrackerAnnular.cc
+++ b/NPSimulation/src/GaspardTrackerAnnular.cc
@@ -631,10 +631,10 @@ void GaspardTrackerAnnular::ReadSensitive(const G4Event* event)
 
                 if (NTrackID == ETrackID) {
                    N = Nl ;
-                   ms_Event->SetGPDTrkFirstStageFrontEDetectorNbr(INDEX + N);
-                   ms_Event->SetGPDTrkFirstStageFrontTDetectorNbr(INDEX + N);
-                   ms_Event->SetGPDTrkFirstStageBackEDetectorNbr(INDEX + N);
-                   ms_Event->SetGPDTrkFirstStageBackTDetectorNbr(INDEX + N);
+                   ms_Event->SetGPDTrkFirstStageFrontEDetectorNbr(m_index["Annular"] + N);
+                   ms_Event->SetGPDTrkFirstStageFrontTDetectorNbr(m_index["Annular"] + N);
+                   ms_Event->SetGPDTrkFirstStageBackEDetectorNbr(m_index["Annular"] + N);
+                   ms_Event->SetGPDTrkFirstStageBackTDetectorNbr(m_index["Annular"] + N);
                 }
                 DetectorNumber_itr++;
             }
@@ -747,8 +747,8 @@ void GaspardTrackerAnnular::ReadSensitive(const G4Event* event)
                      ms_Event->SetGPDTrkThirdStageEPadNbr(1);
                      ms_Event->SetGPDTrkThirdStageTPadNbr(1);
                      ms_Event->SetGPDTrkThirdStageTTime(1);
-                     ms_Event->SetGPDTrkThirdStageTDetectorNbr(INDEX + N);
-                     ms_Event->SetGPDTrkThirdStageEDetectorNbr(INDEX + N);
+                     ms_Event->SetGPDTrkThirdStageTDetectorNbr(m_index["Annular"] + N);
+                     ms_Event->SetGPDTrkThirdStageEDetectorNbr(m_index["Annular"] + N);
                   }
 
                   ThirdStageEnergy_itr++;
diff --git a/NPSimulation/src/GaspardTrackerDummyShape.cc b/NPSimulation/src/GaspardTrackerDummyShape.cc
index f8ab37d186e71ba1b3abf02d1239541b962a80a0..4fdfd5ae983e8259a8fed34d493314028e4ee038 100644
--- a/NPSimulation/src/GaspardTrackerDummyShape.cc
+++ b/NPSimulation/src/GaspardTrackerDummyShape.cc
@@ -53,7 +53,6 @@
 #include "GeneralScorers.hh"
 #include "GaspardScorers.hh"
 #include "RootOutput.h"
-#include "MUST2Array.hh"
 
 // CLHEP
 #include "CLHEP/Random/RandGauss.h"
@@ -776,10 +775,10 @@ void GaspardTrackerDummyShape::ReadSensitive(const G4Event* event)
 
              if (NTrackID == ETrackID) {
                 N = Nl ;
-                ms_Event->SetGPDTrkFirstStageFrontEDetectorNbr(INDEX + N);
-                ms_Event->SetGPDTrkFirstStageFrontTDetectorNbr(INDEX + N);
-                ms_Event->SetGPDTrkFirstStageBackEDetectorNbr(INDEX + N);
-                ms_Event->SetGPDTrkFirstStageBackTDetectorNbr(INDEX + N);
+                ms_Event->SetGPDTrkFirstStageFrontEDetectorNbr(m_index["DummyShape"] + N);
+                ms_Event->SetGPDTrkFirstStageFrontTDetectorNbr(m_index["DummyShape"] + N);
+                ms_Event->SetGPDTrkFirstStageBackEDetectorNbr(m_index["DummyShape"] + N);
+                ms_Event->SetGPDTrkFirstStageBackTDetectorNbr(m_index["DummyShape"] + N);
              }
              DetectorNumber_itr++;
          }
@@ -888,8 +887,8 @@ void GaspardTrackerDummyShape::ReadSensitive(const G4Event* event)
                ms_Event->SetGPDTrkSecondStageEPadNbr(1);
                ms_Event->SetGPDTrkSecondStageTPadNbr(1);
                ms_Event->SetGPDTrkSecondStageTTime(1);
-               ms_Event->SetGPDTrkSecondStageTDetectorNbr(INDEX + N);
-               ms_Event->SetGPDTrkSecondStageEDetectorNbr(INDEX + N);
+               ms_Event->SetGPDTrkSecondStageTDetectorNbr(m_index["DummyShape"] + N);
+               ms_Event->SetGPDTrkSecondStageEDetectorNbr(m_index["DummyShape"] + N);
             }
             SecondStageEnergy_itr++;
          }
@@ -905,8 +904,8 @@ void GaspardTrackerDummyShape::ReadSensitive(const G4Event* event)
                ms_Event->SetGPDTrkThirdStageEPadNbr(1);
                ms_Event->SetGPDTrkThirdStageTPadNbr(1);
                ms_Event->SetGPDTrkThirdStageTTime(1);
-               ms_Event->SetGPDTrkThirdStageTDetectorNbr(INDEX + N);
-               ms_Event->SetGPDTrkThirdStageEDetectorNbr(INDEX + N);
+               ms_Event->SetGPDTrkThirdStageTDetectorNbr(m_index["DummyShape"] + N);
+               ms_Event->SetGPDTrkThirdStageEDetectorNbr(m_index["DummyShape"] + N);
             }
             ThirdStageEnergy_itr++;
          }
diff --git a/NPSimulation/src/GaspardTrackerModule.cc b/NPSimulation/src/GaspardTrackerModule.cc
index 73637464cdced2664b80f9eb6de813c0d8abb271..890cd77702c06e4720d4ca5b54e55f513e67a61e 100644
--- a/NPSimulation/src/GaspardTrackerModule.cc
+++ b/NPSimulation/src/GaspardTrackerModule.cc
@@ -32,6 +32,7 @@ GaspardTrackerModule::GaspardTrackerModule()
    if (ms_Event == 0) ms_Event = new TGaspardTrackerData();
 
    InitializeRootOutput();
+   InitializeIndex();
 }
 
 
@@ -50,3 +51,13 @@ void GaspardTrackerModule::InitializeRootOutput()
    if (!pTree->GetBranch("GASPARD"))
       pTree->Branch("GASPARD", "TGaspardTrackerData", &ms_Event);
 }
+
+
+
+void GaspardTrackerModule::InitializeIndex()
+{
+   m_index["Square"]     =    0;
+   m_index["Trapezoid"]  =  100;
+   m_index["Annular"]    =  200;
+   m_index["DummyShape"] = 1000;
+}
diff --git a/NPSimulation/src/GaspardTrackerSquare.cc b/NPSimulation/src/GaspardTrackerSquare.cc
index 39c2f6bde8186e7a9eefaa4e6c3c68fec6b90935..a38205a98740eaea90348ca9bcc1efda40945720 100644
--- a/NPSimulation/src/GaspardTrackerSquare.cc
+++ b/NPSimulation/src/GaspardTrackerSquare.cc
@@ -968,10 +968,10 @@ void GaspardTrackerSquare::ReadSensitive(const G4Event* event)
 
                 if (NTrackID == ETrackID) {
                    N = Nl ;
-                   ms_Event->SetGPDTrkFirstStageFrontEDetectorNbr(INDEX + N);
-                   ms_Event->SetGPDTrkFirstStageFrontTDetectorNbr(INDEX + N);
-                   ms_Event->SetGPDTrkFirstStageBackEDetectorNbr(INDEX + N);
-                   ms_Event->SetGPDTrkFirstStageBackTDetectorNbr(INDEX + N);
+                   ms_Event->SetGPDTrkFirstStageFrontEDetectorNbr(m_index["Square"] + N);
+                   ms_Event->SetGPDTrkFirstStageFrontTDetectorNbr(m_index["Square"] + N);
+                   ms_Event->SetGPDTrkFirstStageBackEDetectorNbr(m_index["Square"] + N);
+                   ms_Event->SetGPDTrkFirstStageBackTDetectorNbr(m_index["Square"] + N);
                 }
                 DetectorNumber_itr++;
             }
@@ -1082,8 +1082,8 @@ void GaspardTrackerSquare::ReadSensitive(const G4Event* event)
                      ms_Event->SetGPDTrkSecondStageEPadNbr(1);
                      ms_Event->SetGPDTrkSecondStageTPadNbr(1);
                      ms_Event->SetGPDTrkSecondStageTTime(1);
-                     ms_Event->SetGPDTrkSecondStageTDetectorNbr(INDEX + N);
-                     ms_Event->SetGPDTrkSecondStageEDetectorNbr(INDEX + N);
+                     ms_Event->SetGPDTrkSecondStageTDetectorNbr(m_index["Square"] + N);
+                     ms_Event->SetGPDTrkSecondStageEDetectorNbr(m_index["Square"] + N);
                   }
 
                   SiLiEnergy_itr++;
@@ -1100,8 +1100,8 @@ void GaspardTrackerSquare::ReadSensitive(const G4Event* event)
                      ms_Event->SetGPDTrkThirdStageEPadNbr(1);
                      ms_Event->SetGPDTrkThirdStageTPadNbr(1);
                      ms_Event->SetGPDTrkThirdStageTTime(1);
-                     ms_Event->SetGPDTrkThirdStageTDetectorNbr(INDEX + N);
-                     ms_Event->SetGPDTrkThirdStageEDetectorNbr(INDEX + N);
+                     ms_Event->SetGPDTrkThirdStageTDetectorNbr(m_index["Square"] + N);
+                     ms_Event->SetGPDTrkThirdStageEDetectorNbr(m_index["Square"] + N);
                   }
 
                   ThirdStageEnergy_itr++;
diff --git a/NPSimulation/src/GaspardTrackerTrapezoid.cc b/NPSimulation/src/GaspardTrackerTrapezoid.cc
index b5f91d1f6e0c3b10dfe6db1c6c8b738f73147974..f3911bff1028db207592834ee3d6bf95c5f296aa 100644
--- a/NPSimulation/src/GaspardTrackerTrapezoid.cc
+++ b/NPSimulation/src/GaspardTrackerTrapezoid.cc
@@ -852,10 +852,10 @@ void GaspardTrackerTrapezoid::ReadSensitive(const G4Event* event)
 
                 if (NTrackID == ETrackID) {
                    N = Nl ;
-                   ms_Event->SetGPDTrkFirstStageFrontEDetectorNbr(INDEX + N);
-                   ms_Event->SetGPDTrkFirstStageFrontTDetectorNbr(INDEX + N);
-                   ms_Event->SetGPDTrkFirstStageBackEDetectorNbr(INDEX + N);
-                   ms_Event->SetGPDTrkFirstStageBackTDetectorNbr(INDEX + N);
+                   ms_Event->SetGPDTrkFirstStageFrontEDetectorNbr(m_index["Trapezoid"] + N);
+                   ms_Event->SetGPDTrkFirstStageFrontTDetectorNbr(m_index["Trapezoid"] + N);
+                   ms_Event->SetGPDTrkFirstStageBackEDetectorNbr(m_index["Trapezoid"] + N);
+                   ms_Event->SetGPDTrkFirstStageBackTDetectorNbr(m_index["Trapezoid"] + N);
                 }
                 DetectorNumber_itr++;
             }
@@ -968,8 +968,8 @@ void GaspardTrackerTrapezoid::ReadSensitive(const G4Event* event)
                      ms_Event->SetGPDTrkThirdStageEPadNbr(1);
                      ms_Event->SetGPDTrkThirdStageTPadNbr(1);
                      ms_Event->SetGPDTrkThirdStageTTime(1);
-                     ms_Event->SetGPDTrkThirdStageTDetectorNbr(INDEX + N);
-                     ms_Event->SetGPDTrkThirdStageEDetectorNbr(INDEX + N);
+                     ms_Event->SetGPDTrkThirdStageTDetectorNbr(m_index["Trapezoid"] + N);
+                     ms_Event->SetGPDTrkThirdStageEDetectorNbr(m_index["Trapezoid"] + N);
                   }
 
                   ThirdStageEnergy_itr++;