From 8e8e181bbc309009698f7f242533ad6c90a3be04 Mon Sep 17 00:00:00 2001
From: deserevi <deserevi@nptool>
Date: Sat, 12 Mar 2011 19:54:45 +0000
Subject: [PATCH] * Fix segementation fault in Gaspard when gamma-rays are
 fired    + Clear for map scorers was misplaced at the end of all
 ReadSensitive()      methods in GaspardTracker* shapes.    + The same applied
 for the DetectorNumber_itr++ statement    + The line Energy_itr =
 EnergyHitMap->GetMap()->begin(); was missing      when looping on the energy
 map.

* Strip numbers are now integer instead of double
---
 NPSimulation/include/GaspardScorers.hh       |  38 +--
 NPSimulation/src/GaspardScorers.cc           |  54 ++--
 NPSimulation/src/GaspardTrackerAnnular.cc    | 269 +++++++++---------
 NPSimulation/src/GaspardTrackerDummyShape.cc |  47 ++--
 NPSimulation/src/GaspardTrackerSquare.cc     | 255 ++++++++---------
 NPSimulation/src/GaspardTrackerTrapezoid.cc  | 275 +++++++++----------
 6 files changed, 469 insertions(+), 469 deletions(-)

diff --git a/NPSimulation/include/GaspardScorers.hh b/NPSimulation/include/GaspardScorers.hh
index a21157605..aa9c60d22 100644
--- a/NPSimulation/include/GaspardScorers.hh
+++ b/NPSimulation/include/GaspardScorers.hh
@@ -43,7 +43,7 @@ protected: // with description
 public:
    virtual void Initialize(G4HCofThisEvent*);
    virtual void EndOfEvent(G4HCofThisEvent*);
-   virtual void Clear();
+   virtual void clear();
    virtual void DrawAll();
    virtual void PrintAll();
 
@@ -67,7 +67,7 @@ protected: // with description
 public:
    virtual void Initialize(G4HCofThisEvent*);
    virtual void EndOfEvent(G4HCofThisEvent*);
-   virtual void Clear();
+   virtual void clear();
    virtual void DrawAll();
    virtual void PrintAll();
 
@@ -91,7 +91,7 @@ protected: // with description
 public:
    virtual void Initialize(G4HCofThisEvent*);
    virtual void EndOfEvent(G4HCofThisEvent*);
-   virtual void Clear();
+   virtual void clear();
    virtual void DrawAll();
    virtual void PrintAll();
 
@@ -116,14 +116,14 @@ protected: // with description
 public:
    virtual void Initialize(G4HCofThisEvent*);
    virtual void EndOfEvent(G4HCofThisEvent*);
-   virtual void Clear();
+   virtual void clear();
    virtual void DrawAll();
    virtual void PrintAll();
 
 private:
    G4int     m_NumberOfStrip ;
    G4int HCID;
-   G4THitsMap<G4double>* EvtMap;
+   G4THitsMap<G4int>* EvtMap;
 };
 
 
@@ -140,14 +140,14 @@ protected: // with description
 public:
    virtual void Initialize(G4HCofThisEvent*);
    virtual void EndOfEvent(G4HCofThisEvent*);
-   virtual void Clear();
+   virtual void clear();
    virtual void DrawAll();
    virtual void PrintAll();
 
 private:
    G4int     m_NumberOfStrip ;
    G4int HCID;
-   G4THitsMap<G4double>* EvtMap;
+   G4THitsMap<G4int>* EvtMap;
 };
 
 
@@ -164,14 +164,14 @@ protected: // with description
 public:
    virtual void Initialize(G4HCofThisEvent*);
    virtual void EndOfEvent(G4HCofThisEvent*);
-   virtual void Clear();
+   virtual void clear();
    virtual void DrawAll();
    virtual void PrintAll();
 
 private:
    G4int     m_NumberOfStrip ;
    G4int HCID;
-   G4THitsMap<G4double>* EvtMap;
+   G4THitsMap<G4int>* EvtMap;
 };
 
 
@@ -188,14 +188,14 @@ protected: // with description
 public:
    virtual void Initialize(G4HCofThisEvent*);
    virtual void EndOfEvent(G4HCofThisEvent*);
-   virtual void Clear();
+   virtual void clear();
    virtual void DrawAll();
    virtual void PrintAll();
 
 private:
    G4int     m_NumberOfStrip ;
    G4int HCID;
-   G4THitsMap<G4double>* EvtMap;
+   G4THitsMap<G4int>* EvtMap;
 };
 
 
@@ -212,14 +212,14 @@ protected: // with description
 public:
    virtual void Initialize(G4HCofThisEvent*);
    virtual void EndOfEvent(G4HCofThisEvent*);
-   virtual void Clear();
+   virtual void clear();
    virtual void DrawAll();
    virtual void PrintAll();
 
 private:
    G4int     m_NumberOfStrip ;
    G4int HCID;
-   G4THitsMap<G4double>* EvtMap;
+   G4THitsMap<G4int>* EvtMap;
 };
 
 
@@ -236,14 +236,14 @@ protected: // with description
 public:
    virtual void Initialize(G4HCofThisEvent*);
    virtual void EndOfEvent(G4HCofThisEvent*);
-   virtual void Clear();
+   virtual void clear();
    virtual void DrawAll();
    virtual void PrintAll();
 
 private:
    G4int     m_NumberOfStrip ;
    G4int HCID;
-   G4THitsMap<G4double>* EvtMap;
+   G4THitsMap<G4int>* EvtMap;
 };
 
 
@@ -260,7 +260,7 @@ protected: // with description
 public:
    virtual void Initialize(G4HCofThisEvent*);
    virtual void EndOfEvent(G4HCofThisEvent*);
-   virtual void Clear();
+   virtual void clear();
    virtual void DrawAll();
    virtual void PrintAll();
 
@@ -268,7 +268,7 @@ private:
    G4double  m_StripPlaneSize;
    G4int     m_NumberOfStrip ;
    G4int HCID;
-   G4THitsMap<G4double>* EvtMap;
+   G4THitsMap<G4int>* EvtMap;
 };
 
 
@@ -285,7 +285,7 @@ protected: // with description
 public:
    virtual void Initialize(G4HCofThisEvent*);
    virtual void EndOfEvent(G4HCofThisEvent*);
-   virtual void Clear();
+   virtual void clear();
    virtual void DrawAll();
    virtual void PrintAll();
 
@@ -293,7 +293,7 @@ private:
    G4double  m_StripPlaneSize;
    G4int     m_NumberOfStrip ;
    G4int HCID;
-   G4THitsMap<G4double>* EvtMap;
+   G4THitsMap<G4int>* EvtMap;
 };
 
 }
diff --git a/NPSimulation/src/GaspardScorers.cc b/NPSimulation/src/GaspardScorers.cc
index 4c999f0be..16a2b5287 100644
--- a/NPSimulation/src/GaspardScorers.cc
+++ b/NPSimulation/src/GaspardScorers.cc
@@ -86,7 +86,7 @@ void GPDScorerFirstStageEnergy::EndOfEvent(G4HCofThisEvent*)
 {
 }
 
-void GPDScorerFirstStageEnergy::Clear()
+void GPDScorerFirstStageEnergy::clear()
 {
    EvtMap->clear();
 }
@@ -151,7 +151,7 @@ void GPDScorerSecondStageEnergy::EndOfEvent(G4HCofThisEvent*)
 {
 }
 
-void GPDScorerSecondStageEnergy::Clear()
+void GPDScorerSecondStageEnergy::clear()
 {
    EvtMap->clear();
 }
@@ -216,7 +216,7 @@ void GPDScorerThirdStageEnergy::EndOfEvent(G4HCofThisEvent*)
 {
 }
 
-void GPDScorerThirdStageEnergy::Clear()
+void GPDScorerThirdStageEnergy::clear()
 {
    EvtMap->clear();
 }
@@ -267,7 +267,7 @@ G4bool GPDScorerFirstStageFrontStripDummyShape::ProcessHits(G4Step* aStep, G4Tou
    G4double StripPitch = GPDDUMMYSHAPE::FirstStageFace / m_NumberOfStrip;
 
    G4double temp = (POS(0) + GPDDUMMYSHAPE::FirstStageFace / 2.) / StripPitch   ;
-   G4double X = int(temp) + 1 ;
+   G4int X = int(temp) + 1 ;
 //   G4cout << "strip X: " << X << G4endl;
 
    //Rare case where particle is close to edge of silicon plan
@@ -281,7 +281,7 @@ G4bool GPDScorerFirstStageFrontStripDummyShape::ProcessHits(G4Step* aStep, G4Tou
 
 void GPDScorerFirstStageFrontStripDummyShape::Initialize(G4HCofThisEvent* HCE)
 {
-   EvtMap = new G4THitsMap<G4double>(GetMultiFunctionalDetector()->GetName(), GetName());
+   EvtMap = new G4THitsMap<G4int>(GetMultiFunctionalDetector()->GetName(), GetName());
    if (HCID < 0) {
       HCID = GetCollectionID(0);
    }
@@ -292,7 +292,7 @@ void GPDScorerFirstStageFrontStripDummyShape::EndOfEvent(G4HCofThisEvent*)
 {
 }
 
-void GPDScorerFirstStageFrontStripDummyShape::Clear()
+void GPDScorerFirstStageFrontStripDummyShape::clear()
 {
    EvtMap->clear();
 }
@@ -334,7 +334,7 @@ G4bool GPDScorerFirstStageBackStripDummyShape::ProcessHits(G4Step* aStep, G4Touc
    G4double StripPitch = GPDDUMMYSHAPE::FirstStageFace / m_NumberOfStrip;
 
    G4double temp = (POS(1) + GPDDUMMYSHAPE::FirstStageFace / 2.) / StripPitch   ;
-   G4double X = int(temp) + 1 ;
+   G4int X = int(temp) + 1 ;
 //   G4cout << "strip Y: " << X << G4endl;
 
    //Rare case where particle is close to edge of silicon plan
@@ -348,7 +348,7 @@ G4bool GPDScorerFirstStageBackStripDummyShape::ProcessHits(G4Step* aStep, G4Touc
 
 void GPDScorerFirstStageBackStripDummyShape::Initialize(G4HCofThisEvent* HCE)
 {
-   EvtMap = new G4THitsMap<G4double>(GetMultiFunctionalDetector()->GetName(), GetName());
+   EvtMap = new G4THitsMap<G4int>(GetMultiFunctionalDetector()->GetName(), GetName());
    if (HCID < 0) {
       HCID = GetCollectionID(0);
    }
@@ -359,7 +359,7 @@ void GPDScorerFirstStageBackStripDummyShape::EndOfEvent(G4HCofThisEvent*)
 {
 }
 
-void GPDScorerFirstStageBackStripDummyShape::Clear()
+void GPDScorerFirstStageBackStripDummyShape::clear()
 {
    EvtMap->clear();
 }
@@ -401,7 +401,7 @@ G4bool GPDScorerFirstStageFrontStripSquare::ProcessHits(G4Step* aStep, G4Touchab
    G4double StripPitch = GPDSQUARE::FirstStageFace / m_NumberOfStrip;
 
    G4double temp = (POS(0) + GPDSQUARE::FirstStageFace / 2.) / StripPitch   ;
-   G4double X = int(temp) + 1 ;
+   G4int X = int(temp) + 1 ;
    //Rare case where particle is close to edge of silicon plan
    if (X == 129) X = 128;
    G4double edep = aStep->GetTotalEnergyDeposit();
@@ -413,7 +413,7 @@ G4bool GPDScorerFirstStageFrontStripSquare::ProcessHits(G4Step* aStep, G4Touchab
 
 void GPDScorerFirstStageFrontStripSquare::Initialize(G4HCofThisEvent* HCE)
 {
-   EvtMap = new G4THitsMap<G4double>(GetMultiFunctionalDetector()->GetName(), GetName());
+   EvtMap = new G4THitsMap<G4int>(GetMultiFunctionalDetector()->GetName(), GetName());
    if (HCID < 0) {
       HCID = GetCollectionID(0);
    }
@@ -424,7 +424,7 @@ void GPDScorerFirstStageFrontStripSquare::EndOfEvent(G4HCofThisEvent*)
 {
 }
 
-void GPDScorerFirstStageFrontStripSquare::Clear()
+void GPDScorerFirstStageFrontStripSquare::clear()
 {
    EvtMap->clear();
 }
@@ -466,7 +466,7 @@ G4bool GPDScorerFirstStageBackStripSquare::ProcessHits(G4Step* aStep, G4Touchabl
 
    G4double temp = (POS(1) + GPDSQUARE::FirstStageFace / 2.) / StripPitch   ;
    G4int temp2 = temp ;
-   G4double Y = temp2 + 1                    ;
+   G4int Y = temp2 + 1                    ;
    //Rare case where particle is close to edge of silicon plan
    if (Y == 129) Y = 128;
 
@@ -479,7 +479,7 @@ G4bool GPDScorerFirstStageBackStripSquare::ProcessHits(G4Step* aStep, G4Touchabl
 
 void GPDScorerFirstStageBackStripSquare::Initialize(G4HCofThisEvent* HCE)
 {
-   EvtMap = new G4THitsMap<G4double>(GetMultiFunctionalDetector()->GetName(), GetName());
+   EvtMap = new G4THitsMap<G4int>(GetMultiFunctionalDetector()->GetName(), GetName());
    if (HCID < 0) {
       HCID = GetCollectionID(0);
    }
@@ -490,7 +490,7 @@ void GPDScorerFirstStageBackStripSquare::EndOfEvent(G4HCofThisEvent*)
 {
 }
 
-void GPDScorerFirstStageBackStripSquare::Clear()
+void GPDScorerFirstStageBackStripSquare::clear()
 {
    EvtMap->clear();
 }
@@ -531,7 +531,7 @@ G4bool GPDScorerFirstStageFrontStripTrapezoid::ProcessHits(G4Step* aStep, G4Touc
    G4double StripPitch = GPDTRAP::FirstStageBaseLarge / m_NumberOfStrip;
 
    G4double temp = (POS(0) + GPDTRAP::FirstStageBaseLarge / 2.) / StripPitch   ;
-   G4double X = int(temp) + 1;
+   G4int X = int(temp) + 1;
    //Rare case where particle is close to edge of silicon plan
    if (X == 129) X = 128;
    G4double edep = aStep->GetTotalEnergyDeposit();
@@ -543,7 +543,7 @@ G4bool GPDScorerFirstStageFrontStripTrapezoid::ProcessHits(G4Step* aStep, G4Touc
 
 void GPDScorerFirstStageFrontStripTrapezoid::Initialize(G4HCofThisEvent* HCE)
 {
-   EvtMap = new G4THitsMap<G4double>(GetMultiFunctionalDetector()->GetName(), GetName());
+   EvtMap = new G4THitsMap<G4int>(GetMultiFunctionalDetector()->GetName(), GetName());
    if (HCID < 0) {
       HCID = GetCollectionID(0);
    }
@@ -554,7 +554,7 @@ void GPDScorerFirstStageFrontStripTrapezoid::EndOfEvent(G4HCofThisEvent*)
 {
 }
 
-void GPDScorerFirstStageFrontStripTrapezoid::Clear()
+void GPDScorerFirstStageFrontStripTrapezoid::clear()
 {
    EvtMap->clear();
 }
@@ -596,7 +596,7 @@ G4bool GPDScorerFirstStageBackStripTrapezoid::ProcessHits(G4Step* aStep, G4Touch
 
    G4double temp = (POS(1) + GPDTRAP::FirstStageHeight / 2.) / StripPitch   ;
    G4int temp2 = temp ;
-   G4double Y = temp2 + 1                    ;
+   G4int Y = temp2 + 1                    ;
    //Rare case where particle is close to edge of silicon plan
    if (Y == 129) Y = 128;
 
@@ -609,7 +609,7 @@ G4bool GPDScorerFirstStageBackStripTrapezoid::ProcessHits(G4Step* aStep, G4Touch
 
 void GPDScorerFirstStageBackStripTrapezoid::Initialize(G4HCofThisEvent* HCE)
 {
-   EvtMap = new G4THitsMap<G4double>(GetMultiFunctionalDetector()->GetName(), GetName());
+   EvtMap = new G4THitsMap<G4int>(GetMultiFunctionalDetector()->GetName(), GetName());
    if (HCID < 0) {
       HCID = GetCollectionID(0);
    }
@@ -620,7 +620,7 @@ void GPDScorerFirstStageBackStripTrapezoid::EndOfEvent(G4HCofThisEvent*)
 {
 }
 
-void GPDScorerFirstStageBackStripTrapezoid::Clear()
+void GPDScorerFirstStageBackStripTrapezoid::clear()
 {
    EvtMap->clear();
 }
@@ -679,7 +679,7 @@ G4bool GPDScorerFirstStageFrontStripAnnular::ProcessHits(G4Step* aStep, G4Toucha
    G4double ThetaStripPitch = (GPDANNULAR::FirstStageRmax - GPDANNULAR::FirstStageRmin) / GPDANNULAR::NbThetaStrips;
    G4double dummy = (r - GPDANNULAR::FirstStageRmin);
    if (dummy < 0 && fabs(dummy) < 1e-6) dummy *= -1;
-   G4double ThetaStripNumber = floor(dummy / ThetaStripPitch);
+   G4int ThetaStripNumber = floor(dummy / ThetaStripPitch);
    ThetaStripNumber += PhiQuadrantNumber * GPDANNULAR::NbThetaStrips;
    ThetaStripNumber++;
 /*
@@ -705,7 +705,7 @@ G4bool GPDScorerFirstStageFrontStripAnnular::ProcessHits(G4Step* aStep, G4Toucha
 
 void GPDScorerFirstStageFrontStripAnnular::Initialize(G4HCofThisEvent* HCE)
 {
-   EvtMap = new G4THitsMap<G4double>(GetMultiFunctionalDetector()->GetName(), GetName());
+   EvtMap = new G4THitsMap<G4int>(GetMultiFunctionalDetector()->GetName(), GetName());
    if (HCID < 0) {
       HCID = GetCollectionID(0);
    }
@@ -716,7 +716,7 @@ void GPDScorerFirstStageFrontStripAnnular::EndOfEvent(G4HCofThisEvent*)
 {
 }
 
-void GPDScorerFirstStageFrontStripAnnular::Clear()
+void GPDScorerFirstStageFrontStripAnnular::clear()
 {
    EvtMap->clear();
 }
@@ -764,7 +764,7 @@ G4bool GPDScorerFirstStageBackStripAnnular::ProcessHits(G4Step* aStep, G4Touchab
    // Phi strip number
    // Interstrip should be taken into account here. To be done
    G4double PhiWidth = 360. / (GPDANNULAR::NbPhiStrips * GPDANNULAR::NbThetaQuadrant);
-   G4double PhiStripNumber = floor(phi / PhiWidth);
+   G4int PhiStripNumber = floor(phi / PhiWidth);
    PhiStripNumber++;
 
 //   G4cout << POS << G4endl;
@@ -780,7 +780,7 @@ G4bool GPDScorerFirstStageBackStripAnnular::ProcessHits(G4Step* aStep, G4Touchab
 
 void GPDScorerFirstStageBackStripAnnular::Initialize(G4HCofThisEvent* HCE)
 {
-   EvtMap = new G4THitsMap<G4double>(GetMultiFunctionalDetector()->GetName(), GetName());
+   EvtMap = new G4THitsMap<G4int>(GetMultiFunctionalDetector()->GetName(), GetName());
    if (HCID < 0) {
       HCID = GetCollectionID(0);
    }
@@ -791,7 +791,7 @@ void GPDScorerFirstStageBackStripAnnular::EndOfEvent(G4HCofThisEvent*)
 {
 }
 
-void GPDScorerFirstStageBackStripAnnular::Clear()
+void GPDScorerFirstStageBackStripAnnular::clear()
 {
    EvtMap->clear();
 }
diff --git a/NPSimulation/src/GaspardTrackerAnnular.cc b/NPSimulation/src/GaspardTrackerAnnular.cc
index bfb9d1fd0..af0e3c8b3 100644
--- a/NPSimulation/src/GaspardTrackerAnnular.cc
+++ b/NPSimulation/src/GaspardTrackerAnnular.cc
@@ -497,15 +497,15 @@ void GaspardTrackerAnnular::SetInterCoordPointer(TInteractionCoordinates* interC
 // Called at in the EventAction::EndOfEventAvtion
 void GaspardTrackerAnnular::ReadSensitive(const G4Event* event)
 {
-//////////////////////////////////////////////////////////////////////////////////////
-//////////////////////// Used to Read Event Map of detector //////////////////////////
-//////////////////////////////////////////////////////////////////////////////////////
+   //////////////////////////////////////////////////////////////////////////////////////
+   //////////////////////// Used to Read Event Map of detector //////////////////////////
+   //////////////////////////////////////////////////////////////////////////////////////
    // First Stage
    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 X_itr;
-   std::map<G4int, G4double*>::iterator Y_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;
@@ -515,8 +515,8 @@ void GaspardTrackerAnnular::ReadSensitive(const G4Event* event)
    G4THitsMap<G4int>*    DetectorNumberHitMap;
    G4THitsMap<G4double>* EnergyHitMap;
    G4THitsMap<G4double>* TimeHitMap;
-   G4THitsMap<G4double>* XHitMap;
-   G4THitsMap<G4double>* YHitMap;
+   G4THitsMap<G4int>*    XHitMap;
+   G4THitsMap<G4int>*    YHitMap;
    G4THitsMap<G4double>* PosXHitMap;
    G4THitsMap<G4double>* PosYHitMap;
    G4THitsMap<G4double>* PosZHitMap;
@@ -551,12 +551,12 @@ void GaspardTrackerAnnular::ReadSensitive(const G4Event* event)
 
    //Strip Number X
    G4int StripXCollectionID = G4SDManager::GetSDMpointer()->GetCollectionID("FirstStageScorerGPDAnnular/StripNumberX")    ;
-   XHitMap = (G4THitsMap<G4double>*)(event->GetHCofThisEvent()->GetHC(StripXCollectionID))                              ;
+   XHitMap = (G4THitsMap<G4int>*)(event->GetHCofThisEvent()->GetHC(StripXCollectionID))                              ;
    X_itr = XHitMap->GetMap()->begin()                                                                    ;
 
    //Strip Number Y
    G4int StripYCollectionID = G4SDManager::GetSDMpointer()->GetCollectionID("FirstStageScorerGPDAnnular/StripNumberY")    ;
-   YHitMap = (G4THitsMap<G4double>*)(event->GetHCofThisEvent()->GetHC(StripYCollectionID))                              ;
+   YHitMap = (G4THitsMap<G4int>*)(event->GetHCofThisEvent()->GetHC(StripYCollectionID))                              ;
    Y_itr = YHitMap->GetMap()->begin()                                                                    ;
 
    //Interaction Coordinate X
@@ -603,7 +603,7 @@ void GaspardTrackerAnnular::ReadSensitive(const G4Event* event)
 
    if (sizeE != sizeT || sizeT != sizeX || sizeX != sizeY) {
       G4cout << "No match size Si Event Map: sE:"
-      << sizeE << " sT:" << sizeT << " sX:" << sizeX << " sY:" << sizeY << endl ;
+         << sizeE << " sT:" << sizeT << " sX:" << sizeX << " sY:" << sizeY << endl ;
       return;
    }
 
@@ -620,6 +620,7 @@ void GaspardTrackerAnnular::ReadSensitive(const G4Event* event)
          ms_Event->SetGPDTrkFirstStageBackTDetectorNbr(m_index["Annular"] + 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);
@@ -630,153 +631,153 @@ void GaspardTrackerAnnular::ReadSensitive(const G4Event* event)
             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) {
-                  T = RandGauss::shoot(T, ResoTimePPAC)   ;
-                  ms_Event->SetGPDTrkFirstStageFrontTTime(RandGauss::shoot(T, ResoTimeGpd)) ;
-                  ms_Event->SetGPDTrkFirstStageBackTTime(RandGauss::shoot(T, ResoTimeGpd)) ;
-               }
-               Time_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) {
+               T = RandGauss::shoot(T, ResoTimePPAC)   ;
+               ms_Event->SetGPDTrkFirstStageFrontTTime(RandGauss::shoot(T, ResoTimeGpd)) ;
+               ms_Event->SetGPDTrkFirstStageBackTTime(RandGauss::shoot(T, ResoTimeGpd)) ;
             }
+            Time_itr++;
+         }
 
-            // X
-            X_itr = XHitMap->GetMap()->begin();
-            for (G4int h = 0 ; h < sizeX ; h++) {
-               G4int XTrackID  =   X_itr->first - N;
-               G4double X     = *(X_itr->second);
-               if (XTrackID == NTrackID) {
-                  ms_Event->SetGPDTrkFirstStageFrontEStripNbr(X)   ;
-                  ms_Event->SetGPDTrkFirstStageFrontTStripNbr(X)   ;
-               }
-
-               X_itr++;
+         // X
+         X_itr = XHitMap->GetMap()->begin();
+         for (G4int h = 0 ; h < sizeX ; h++) {
+            G4int XTrackID  =   X_itr->first - N;
+            G4int X         = *(X_itr->second);
+            if (XTrackID == NTrackID) {
+               ms_Event->SetGPDTrkFirstStageFrontEStripNbr(X)   ;
+               ms_Event->SetGPDTrkFirstStageFrontTStripNbr(X)   ;
             }
 
-            // Y
-            Y_itr = YHitMap->GetMap()->begin()  ;
-            for (G4int h = 0 ; h < sizeY ; h++) {
-               G4int YTrackID  =   Y_itr->first  - N  ;
-               G4double Y     = *(Y_itr->second)      ;
-               if (YTrackID == NTrackID) {
-                  ms_Event->SetGPDTrkFirstStageBackEStripNbr(Y)   ;
-                  ms_Event->SetGPDTrkFirstStageBackTStripNbr(Y)   ;
-               }
-
-               Y_itr++;
+            X_itr++;
+         }
+
+         // Y
+         Y_itr = YHitMap->GetMap()->begin()  ;
+         for (G4int h = 0 ; h < sizeY ; h++) {
+            G4int YTrackID  =   Y_itr->first  - N  ;
+            G4int Y         = *(Y_itr->second)      ;
+            if (YTrackID == NTrackID) {
+               ms_Event->SetGPDTrkFirstStageBackEStripNbr(Y)   ;
+               ms_Event->SetGPDTrkFirstStageBackTStripNbr(Y)   ;
             }
 
-            // 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++;
+            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 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++;
+         // 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 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++;
+         // 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++;
+         }
 
-            // Second Stage
-            SecondStageEnergy_itr = SecondStageEnergyHitMap->GetMap()->begin()  ;
-            for (G4int h = 0 ; h < SecondStageEnergyHitMap->entries() ; h++) {
-               G4int SecondStageEnergyTrackID  =   SecondStageEnergy_itr->first - N;
-               G4double SecondStageEnergy      = *(SecondStageEnergy_itr->second);
-
-               if (SecondStageEnergyTrackID == NTrackID) {
-                  ms_Event->SetGPDTrkSecondStageEEnergy(RandGauss::shoot(SecondStageEnergy, ResoSecondStage));
-                  ms_Event->SetGPDTrkSecondStageEPadNbr(1);
-                  ms_Event->SetGPDTrkSecondStageTPadNbr(1);
-                  ms_Event->SetGPDTrkSecondStageTTime(1);
-                  ms_Event->SetGPDTrkSecondStageTDetectorNbr(m_index["Annular"] + N);
-                  ms_Event->SetGPDTrkSecondStageEDetectorNbr(m_index["Annular"] + N);
-               }
-
-               SecondStageEnergy_itr++;
+         // Second Stage
+         SecondStageEnergy_itr = SecondStageEnergyHitMap->GetMap()->begin()  ;
+         for (G4int h = 0 ; h < SecondStageEnergyHitMap->entries() ; h++) {
+            G4int SecondStageEnergyTrackID  =   SecondStageEnergy_itr->first - N;
+            G4double SecondStageEnergy      = *(SecondStageEnergy_itr->second);
+
+            if (SecondStageEnergyTrackID == NTrackID) {
+               ms_Event->SetGPDTrkSecondStageEEnergy(RandGauss::shoot(SecondStageEnergy, ResoSecondStage));
+               ms_Event->SetGPDTrkSecondStageEPadNbr(1);
+               ms_Event->SetGPDTrkSecondStageTPadNbr(1);
+               ms_Event->SetGPDTrkSecondStageTTime(1);
+               ms_Event->SetGPDTrkSecondStageTDetectorNbr(m_index["Annular"] + N);
+               ms_Event->SetGPDTrkSecondStageEDetectorNbr(m_index["Annular"] + N);
             }
 
-            // 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) {
-                  ms_Event->SetGPDTrkThirdStageEEnergy(RandGauss::shoot(ThirdStageEnergy, ResoThirdStage));
-                  ms_Event->SetGPDTrkThirdStageEPadNbr(1);
-                  ms_Event->SetGPDTrkThirdStageTPadNbr(1);
-                  ms_Event->SetGPDTrkThirdStageTTime(1);
-                  ms_Event->SetGPDTrkThirdStageTDetectorNbr(m_index["Annular"] + N);
-                  ms_Event->SetGPDTrkThirdStageEDetectorNbr(m_index["Annular"] + N);
-               }
-
-               ThirdStageEnergy_itr++;
+            SecondStageEnergy_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) {
+               ms_Event->SetGPDTrkThirdStageEEnergy(RandGauss::shoot(ThirdStageEnergy, ResoThirdStage));
+               ms_Event->SetGPDTrkThirdStageEPadNbr(1);
+               ms_Event->SetGPDTrkThirdStageTPadNbr(1);
+               ms_Event->SetGPDTrkThirdStageTTime(1);
+               ms_Event->SetGPDTrkThirdStageTDetectorNbr(m_index["Annular"] + N);
+               ms_Event->SetGPDTrkThirdStageEDetectorNbr(m_index["Annular"] + N);
             }
 
-         DetectorNumber_itr++;
+            ThirdStageEnergy_itr++;
+         }
+
       }
+      DetectorNumber_itr++;
 
-      // clear map for next event
-      DetectorNumberHitMap    -> clear();
-      EnergyHitMap            -> clear();
-      TimeHitMap              -> clear();
-      XHitMap                 -> clear();
-      YHitMap                 -> clear();
-      PosXHitMap              -> clear();
-      PosYHitMap              -> clear();
-      PosZHitMap              -> clear();
-      AngThetaHitMap          -> clear();
-      AngPhiHitMap            -> clear();
-      SecondStageEnergyHitMap -> clear();
-      ThirdStageEnergyHitMap  -> clear();
    }
+   // clear map for next event
+   DetectorNumberHitMap    -> clear();
+   EnergyHitMap            -> clear();
+   TimeHitMap              -> clear();
+   XHitMap                 -> clear();
+   YHitMap                 -> clear();
+   PosXHitMap              -> clear();
+   PosYHitMap              -> clear();
+   PosZHitMap              -> clear();
+   AngThetaHitMap          -> clear();
+   AngPhiHitMap            -> clear();
+   SecondStageEnergyHitMap -> clear();
+   ThirdStageEnergyHitMap  -> clear();
 }
 
 
diff --git a/NPSimulation/src/GaspardTrackerDummyShape.cc b/NPSimulation/src/GaspardTrackerDummyShape.cc
index 0d23de36a..96872ce59 100644
--- a/NPSimulation/src/GaspardTrackerDummyShape.cc
+++ b/NPSimulation/src/GaspardTrackerDummyShape.cc
@@ -647,8 +647,8 @@ void GaspardTrackerDummyShape::ReadSensitive(const G4Event* event)
    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 X_itr;
-   std::map<G4int, G4double*>::iterator Y_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;
@@ -658,8 +658,8 @@ void GaspardTrackerDummyShape::ReadSensitive(const G4Event* event)
    G4THitsMap<G4int>*    DetectorNumberHitMap;
    G4THitsMap<G4double>* EnergyHitMap;
    G4THitsMap<G4double>* TimeHitMap;
-   G4THitsMap<G4double>* XHitMap;
-   G4THitsMap<G4double>* YHitMap;
+   G4THitsMap<G4int>*    XHitMap;
+   G4THitsMap<G4int>*    YHitMap;
    G4THitsMap<G4double>* PosXHitMap;
    G4THitsMap<G4double>* PosYHitMap;
    G4THitsMap<G4double>* PosZHitMap;
@@ -693,12 +693,12 @@ void GaspardTrackerDummyShape::ReadSensitive(const G4Event* event)
 
    //Strip Number X
    G4int StripXCollectionID = G4SDManager::GetSDMpointer()->GetCollectionID("FirstStageScorerGPDDummyShape/StripIDFront")    ;
-   XHitMap = (G4THitsMap<G4double>*)(event->GetHCofThisEvent()->GetHC(StripXCollectionID))                              ;
+   XHitMap = (G4THitsMap<G4int>*)(event->GetHCofThisEvent()->GetHC(StripXCollectionID))                              ;
    X_itr = XHitMap->GetMap()->begin()                                                                    ;
 
    //Strip Number Y
    G4int StripYCollectionID = G4SDManager::GetSDMpointer()->GetCollectionID("FirstStageScorerGPDDummyShape/StripIDBack");
-   YHitMap = (G4THitsMap<G4double>*)(event->GetHCofThisEvent()->GetHC(StripYCollectionID))                              ;
+   YHitMap = (G4THitsMap<G4int>*)(event->GetHCofThisEvent()->GetHC(StripYCollectionID))                              ;
    Y_itr = YHitMap->GetMap()->begin()                                                                    ;
 
    //Interaction Coordinate X
@@ -753,7 +753,7 @@ void GaspardTrackerDummyShape::ReadSensitive(const G4Event* event)
 
    if (sizeE != sizeT || sizeT != sizeX || sizeX != sizeY) {
       G4cout << "No match size Si Event Map: sE:"
-      << sizeE << " sT:" << sizeT << " sX:" << sizeX << " sY:" << sizeY << endl ;
+         << sizeE << " sT:" << sizeT << " sX:" << sizeX << " sY:" << sizeY << endl ;
       return;
    }
 
@@ -770,6 +770,7 @@ void GaspardTrackerDummyShape::ReadSensitive(const G4Event* event)
          ms_Event->SetGPDTrkFirstStageBackTDetectorNbr(m_index["DummyShape"] + 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);
@@ -797,7 +798,7 @@ void GaspardTrackerDummyShape::ReadSensitive(const G4Event* event)
          X_itr = XHitMap->GetMap()->begin();
          for (G4int h = 0 ; h < sizeX ; h++) {
             G4int XTrackID  =   X_itr->first - N;
-            G4double X     = *(X_itr->second);
+            G4int X         = *(X_itr->second);
             if (XTrackID == NTrackID) {
                ms_Event->SetGPDTrkFirstStageFrontEStripNbr(X);
                ms_Event->SetGPDTrkFirstStageFrontTStripNbr(X);
@@ -809,7 +810,7 @@ void GaspardTrackerDummyShape::ReadSensitive(const G4Event* event)
          Y_itr = YHitMap->GetMap()->begin()  ;
          for (G4int h = 0 ; h < sizeY ; h++) {
             G4int YTrackID  =   Y_itr->first - N;
-            G4double Y     = *(Y_itr->second);
+            G4int Y         = *(Y_itr->second);
             if (YTrackID == NTrackID) {
                ms_Event->SetGPDTrkFirstStageBackEStripNbr(Y);
                ms_Event->SetGPDTrkFirstStageBackTStripNbr(Y);
@@ -906,24 +907,24 @@ void GaspardTrackerDummyShape::ReadSensitive(const G4Event* event)
             ThirdStageEnergy_itr++;
          }
 
-         DetectorNumber_itr++;
       }
+      DetectorNumber_itr++;
 
 
-      // clear map for next event
-      DetectorNumberHitMap    -> clear();
-      EnergyHitMap            -> clear();
-      TimeHitMap              -> clear();
-      XHitMap                 -> clear();
-      YHitMap                 -> clear();
-      PosXHitMap              -> clear();
-      PosYHitMap              -> clear();
-      PosZHitMap              -> clear();
-      AngThetaHitMap          -> clear();
-      AngPhiHitMap            -> clear();
-      SecondStageEnergyHitMap -> clear();
-      ThirdStageEnergyHitMap  -> clear();
    }
+   // clear map for next event
+   DetectorNumberHitMap    -> clear();
+   EnergyHitMap            -> clear();
+   TimeHitMap              -> clear();
+   XHitMap                 -> clear();
+   YHitMap                 -> clear();
+   PosXHitMap              -> clear();
+   PosYHitMap              -> clear();
+   PosZHitMap              -> clear();
+   AngThetaHitMap          -> clear();
+   AngPhiHitMap            -> clear();
+   SecondStageEnergyHitMap -> clear();
+   ThirdStageEnergyHitMap  -> clear();
 }
 
 
diff --git a/NPSimulation/src/GaspardTrackerSquare.cc b/NPSimulation/src/GaspardTrackerSquare.cc
index 9c2dce6f1..25319d582 100644
--- a/NPSimulation/src/GaspardTrackerSquare.cc
+++ b/NPSimulation/src/GaspardTrackerSquare.cc
@@ -692,15 +692,15 @@ void GaspardTrackerSquare::SetInterCoordPointer(TInteractionCoordinates* interCo
 // Called at in the EventAction::EndOfEventAvtion
 void GaspardTrackerSquare::ReadSensitive(const G4Event* event)
 {
-//////////////////////////////////////////////////////////////////////////////////////
-//////////////////////// Used to Read Event Map of detector //////////////////////////
-//////////////////////////////////////////////////////////////////////////////////////
+   //////////////////////////////////////////////////////////////////////////////////////
+   //////////////////////// Used to Read Event Map of detector //////////////////////////
+   //////////////////////////////////////////////////////////////////////////////////////
    // First Stage
    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 X_itr;
-   std::map<G4int, G4double*>::iterator Y_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;
@@ -710,8 +710,8 @@ void GaspardTrackerSquare::ReadSensitive(const G4Event* event)
    G4THitsMap<G4int>*    DetectorNumberHitMap;
    G4THitsMap<G4double>* EnergyHitMap;
    G4THitsMap<G4double>* TimeHitMap;
-   G4THitsMap<G4double>* XHitMap;
-   G4THitsMap<G4double>* YHitMap;
+   G4THitsMap<G4int>*    XHitMap;
+   G4THitsMap<G4int>*    YHitMap;
    G4THitsMap<G4double>* PosXHitMap;
    G4THitsMap<G4double>* PosYHitMap;
    G4THitsMap<G4double>* PosZHitMap;
@@ -745,12 +745,12 @@ void GaspardTrackerSquare::ReadSensitive(const G4Event* event)
 
    //Strip Number X
    G4int StripXCollectionID = G4SDManager::GetSDMpointer()->GetCollectionID("FirstStageScorerGPDSquare/StripNumberX")    ;
-   XHitMap = (G4THitsMap<G4double>*)(event->GetHCofThisEvent()->GetHC(StripXCollectionID))                              ;
+   XHitMap = (G4THitsMap<G4int>*)(event->GetHCofThisEvent()->GetHC(StripXCollectionID))                              ;
    X_itr = XHitMap->GetMap()->begin()                                                                    ;
 
    //Strip Number Y
    G4int StripYCollectionID = G4SDManager::GetSDMpointer()->GetCollectionID("FirstStageScorerGPDSquare/StripNumberY")    ;
-   YHitMap = (G4THitsMap<G4double>*)(event->GetHCofThisEvent()->GetHC(StripYCollectionID))                              ;
+   YHitMap = (G4THitsMap<G4int>*)(event->GetHCofThisEvent()->GetHC(StripYCollectionID))                              ;
    Y_itr = YHitMap->GetMap()->begin()                                                                    ;
 
    //Interaction Coordinate X
@@ -801,7 +801,7 @@ void GaspardTrackerSquare::ReadSensitive(const G4Event* event)
 
    if (sizeE != sizeT || sizeT != sizeX || sizeX != sizeY) {
       G4cout << "No match size Si Event Map: sE:"
-      << sizeE << " sT:" << sizeT << " sX:" << sizeX << " sY:" << sizeY << endl ;
+         << sizeE << " sT:" << sizeT << " sX:" << sizeX << " sY:" << sizeY << endl ;
       return;
    }
 
@@ -818,6 +818,7 @@ void GaspardTrackerSquare::ReadSensitive(const G4Event* event)
          ms_Event->SetGPDTrkFirstStageBackTDetectorNbr(m_index["Square"] + 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);
@@ -841,140 +842,140 @@ void GaspardTrackerSquare::ReadSensitive(const G4Event* event)
             Time_itr++;
          }
 
-            // X
-            X_itr = XHitMap->GetMap()->begin();
-            for (G4int h = 0 ; h < sizeX ; h++) {
-               G4int XTrackID  =   X_itr->first - N;
-               G4double X     = *(X_itr->second);
-               if (XTrackID == NTrackID) {
-                  ms_Event->SetGPDTrkFirstStageFrontEStripNbr(X);
-                  ms_Event->SetGPDTrkFirstStageFrontTStripNbr(X);
-               }
-
-               X_itr++;
+         // X
+         X_itr = XHitMap->GetMap()->begin();
+         for (G4int h = 0 ; h < sizeX ; h++) {
+            G4int XTrackID  =   X_itr->first - N;
+            G4int X         = *(X_itr->second);
+            if (XTrackID == NTrackID) {
+               ms_Event->SetGPDTrkFirstStageFrontEStripNbr(X);
+               ms_Event->SetGPDTrkFirstStageFrontTStripNbr(X);
             }
 
-            // Y
-            Y_itr = YHitMap->GetMap()->begin()  ;
-            for (G4int h = 0 ; h < sizeY ; h++) {
-               G4int YTrackID  =   Y_itr->first - N;
-               G4double Y     = *(Y_itr->second);
-               if (YTrackID == NTrackID) {
-                  ms_Event->SetGPDTrkFirstStageBackEStripNbr(Y);
-                  ms_Event->SetGPDTrkFirstStageBackTStripNbr(Y);
-               }
-
-               Y_itr++;
+            X_itr++;
+         }
+
+         // Y
+         Y_itr = YHitMap->GetMap()->begin()  ;
+         for (G4int h = 0 ; h < sizeY ; h++) {
+            G4int YTrackID  =   Y_itr->first - N;
+            G4int Y         = *(Y_itr->second);
+            if (YTrackID == NTrackID) {
+               ms_Event->SetGPDTrkFirstStageBackEStripNbr(Y);
+               ms_Event->SetGPDTrkFirstStageBackTStripNbr(Y);
             }
 
-            // 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++;
+            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 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++;
+         // 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 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++;
+         // 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++;
+         }
+
+         // Second Stage
+         SecondStageEnergy_itr = SecondStageEnergyHitMap->GetMap()->begin() ;
+         for (G4int h = 0 ; h < SecondStageEnergyHitMap->entries() ; h++) {
+            G4int SecondStageEnergyTrackID =   SecondStageEnergy_itr->first - N;
+            G4double SecondStageEnergy     = *(SecondStageEnergy_itr->second);
+
+            if (SecondStageEnergyTrackID == NTrackID) {
+               ms_Event->SetGPDTrkSecondStageEEnergy(RandGauss::shoot(SecondStageEnergy, ResoSecondStage)) ;
+               ms_Event->SetGPDTrkSecondStageEPadNbr(1);
+               ms_Event->SetGPDTrkSecondStageTPadNbr(1);
+               ms_Event->SetGPDTrkSecondStageTTime(1);
+               ms_Event->SetGPDTrkSecondStageTDetectorNbr(m_index["Square"] + N);
+               ms_Event->SetGPDTrkSecondStageEDetectorNbr(m_index["Square"] + N);
+            }
+
+            SecondStageEnergy_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) {
+               ms_Event->SetGPDTrkThirdStageEEnergy(RandGauss::shoot(ThirdStageEnergy, ResoThirdStage));
+               ms_Event->SetGPDTrkThirdStageEPadNbr(1);
+               ms_Event->SetGPDTrkThirdStageTPadNbr(1);
+               ms_Event->SetGPDTrkThirdStageTTime(1);
+               ms_Event->SetGPDTrkThirdStageTDetectorNbr(m_index["Square"] + N);
+               ms_Event->SetGPDTrkThirdStageEDetectorNbr(m_index["Square"] + N);
+            }
+
+            ThirdStageEnergy_itr++;
+         }
 
-            // Second Stage
-               SecondStageEnergy_itr = SecondStageEnergyHitMap->GetMap()->begin() ;
-               for (G4int h = 0 ; h < SecondStageEnergyHitMap->entries() ; h++) {
-                  G4int SecondStageEnergyTrackID =   SecondStageEnergy_itr->first - N;
-                  G4double SecondStageEnergy     = *(SecondStageEnergy_itr->second);
-
-                  if (SecondStageEnergyTrackID == NTrackID) {
-                     ms_Event->SetGPDTrkSecondStageEEnergy(RandGauss::shoot(SecondStageEnergy, ResoSecondStage)) ;
-                     ms_Event->SetGPDTrkSecondStageEPadNbr(1);
-                     ms_Event->SetGPDTrkSecondStageTPadNbr(1);
-                     ms_Event->SetGPDTrkSecondStageTTime(1);
-                     ms_Event->SetGPDTrkSecondStageTDetectorNbr(m_index["Square"] + N);
-                     ms_Event->SetGPDTrkSecondStageEDetectorNbr(m_index["Square"] + N);
-                  }
-
-                  SecondStageEnergy_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) {
-                     ms_Event->SetGPDTrkThirdStageEEnergy(RandGauss::shoot(ThirdStageEnergy, ResoThirdStage));
-                     ms_Event->SetGPDTrkThirdStageEPadNbr(1);
-                     ms_Event->SetGPDTrkThirdStageTPadNbr(1);
-                     ms_Event->SetGPDTrkThirdStageTTime(1);
-                     ms_Event->SetGPDTrkThirdStageTDetectorNbr(m_index["Square"] + N);
-                     ms_Event->SetGPDTrkThirdStageEDetectorNbr(m_index["Square"] + N);
-                  }
-
-                  ThirdStageEnergy_itr++;
-               }
-
-         DetectorNumber_itr++;
       }
+      DetectorNumber_itr++;
 
-      // clear map for next event
-      DetectorNumberHitMap ->clear();
-      EnergyHitMap   ->clear()   ;
-      TimeHitMap     ->clear()   ;
-      XHitMap        ->clear()   ;
-      YHitMap        ->clear()   ;
-      PosXHitMap     ->clear();
-      PosYHitMap     ->clear();
-      PosZHitMap     ->clear();
-      AngThetaHitMap ->clear();
-      AngPhiHitMap   ->clear();
-      SecondStageEnergyHitMap ->clear()  ;
-      ThirdStageEnergyHitMap ->clear() ;
    }
+   // clear map for next event
+   DetectorNumberHitMap ->clear();
+   EnergyHitMap   ->clear()   ;
+   TimeHitMap     ->clear()   ;
+   XHitMap        ->clear()   ;
+   YHitMap        ->clear()   ;
+   PosXHitMap     ->clear();
+   PosYHitMap     ->clear();
+   PosZHitMap     ->clear();
+   AngThetaHitMap ->clear();
+   AngPhiHitMap   ->clear();
+   SecondStageEnergyHitMap ->clear()  ;
+   ThirdStageEnergyHitMap ->clear() ;
 }
 
 
diff --git a/NPSimulation/src/GaspardTrackerTrapezoid.cc b/NPSimulation/src/GaspardTrackerTrapezoid.cc
index 5381eb2ab..9658c41e4 100644
--- a/NPSimulation/src/GaspardTrackerTrapezoid.cc
+++ b/NPSimulation/src/GaspardTrackerTrapezoid.cc
@@ -724,15 +724,15 @@ void GaspardTrackerTrapezoid::SetInterCoordPointer(TInteractionCoordinates* inte
 // Called at in the EventAction::EndOfEventAvtion
 void GaspardTrackerTrapezoid::ReadSensitive(const G4Event* event)
 {
-//////////////////////////////////////////////////////////////////////////////////////
-//////////////////////// Used to Read Event Map of detector //////////////////////////
-//////////////////////////////////////////////////////////////////////////////////////
+   //////////////////////////////////////////////////////////////////////////////////////
+   //////////////////////// Used to Read Event Map of detector //////////////////////////
+   //////////////////////////////////////////////////////////////////////////////////////
    // First Stage
    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 X_itr;
-   std::map<G4int, G4double*>::iterator Y_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;
@@ -742,8 +742,8 @@ void GaspardTrackerTrapezoid::ReadSensitive(const G4Event* event)
    G4THitsMap<G4int>*    DetectorNumberHitMap;
    G4THitsMap<G4double>* EnergyHitMap;
    G4THitsMap<G4double>* TimeHitMap;
-   G4THitsMap<G4double>* XHitMap;
-   G4THitsMap<G4double>* YHitMap;
+   G4THitsMap<G4int>*    XHitMap;
+   G4THitsMap<G4int>*    YHitMap;
    G4THitsMap<G4double>* PosXHitMap;
    G4THitsMap<G4double>* PosYHitMap;
    G4THitsMap<G4double>* PosZHitMap;
@@ -776,12 +776,12 @@ void GaspardTrackerTrapezoid::ReadSensitive(const G4Event* event)
 
    //Strip Number X
    G4int StripXCollectionID = G4SDManager::GetSDMpointer()->GetCollectionID("FirstStageScorerGPDTrapezoid/StripNumberX")    ;
-   XHitMap = (G4THitsMap<G4double>*)(event->GetHCofThisEvent()->GetHC(StripXCollectionID))                              ;
+   XHitMap = (G4THitsMap<G4int>*)(event->GetHCofThisEvent()->GetHC(StripXCollectionID))                              ;
    X_itr = XHitMap->GetMap()->begin()                                                                    ;
 
    //Strip Number Y
    G4int StripYCollectionID = G4SDManager::GetSDMpointer()->GetCollectionID("FirstStageScorerGPDTrapezoid/StripNumberY")    ;
-   YHitMap = (G4THitsMap<G4double>*)(event->GetHCofThisEvent()->GetHC(StripYCollectionID))                              ;
+   YHitMap = (G4THitsMap<G4int>*)(event->GetHCofThisEvent()->GetHC(StripYCollectionID))                              ;
    Y_itr = YHitMap->GetMap()->begin()                                                                    ;
 
    //Interaction Coordinate X
@@ -826,11 +826,11 @@ void GaspardTrackerTrapezoid::ReadSensitive(const G4Event* event)
    G4int sizeX = XHitMap->entries();
    G4int sizeY = YHitMap->entries();
 
-      if (sizeE != sizeT || sizeT != sizeX || sizeX != sizeY) {
-         G4cout << "No match size Si Event Map: sE:"
+   if (sizeE != sizeT || sizeT != sizeX || sizeX != sizeY) {
+      G4cout << "No match size Si Event Map: sE:"
          << sizeE << " sT:" << sizeT << " sX:" << sizeX << " sY:" << sizeY << endl ;
-         return;
-      }
+      return;
+   }
 
    // Loop on FirstStage number
    for (G4int l = 0; l < sizeN; l++) {
@@ -845,6 +845,7 @@ void GaspardTrackerTrapezoid::ReadSensitive(const G4Event* event)
          ms_Event->SetGPDTrkFirstStageBackTDetectorNbr(m_index["Trapezoid"] + 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);
@@ -855,154 +856,150 @@ void GaspardTrackerTrapezoid::ReadSensitive(const G4Event* event)
             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) {
-                  T = RandGauss::shoot(T, ResoTimePPAC)   ;
-                  ms_Event->SetGPDTrkFirstStageFrontTTime(RandGauss::shoot(T, ResoTimeGpd)) ;
-                  ms_Event->SetGPDTrkFirstStageBackTTime(RandGauss::shoot(T, ResoTimeGpd)) ;
-               }
-               Time_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) {
+               T = RandGauss::shoot(T, ResoTimePPAC)   ;
+               ms_Event->SetGPDTrkFirstStageFrontTTime(RandGauss::shoot(T, ResoTimeGpd)) ;
+               ms_Event->SetGPDTrkFirstStageBackTTime(RandGauss::shoot(T, ResoTimeGpd)) ;
             }
+            Time_itr++;
+         }
 
-            // X
-            X_itr = XHitMap->GetMap()->begin();
-            for (G4int h = 0 ; h < sizeX ; h++) {
-               G4int XTrackID  =   X_itr->first - N;
-               G4double X     = *(X_itr->second);
-               if (XTrackID == NTrackID) {
-                  ms_Event->SetGPDTrkFirstStageFrontEStripNbr(X);
-                  ms_Event->SetGPDTrkFirstStageFrontTStripNbr(X);
-               }
-
-               X_itr++;
+         // X
+         X_itr = XHitMap->GetMap()->begin();
+         for (G4int h = 0 ; h < sizeX ; h++) {
+            G4int XTrackID  =   X_itr->first - N;
+            G4int X         = *(X_itr->second);
+            if (XTrackID == NTrackID) {
+               ms_Event->SetGPDTrkFirstStageFrontEStripNbr(X);
+               ms_Event->SetGPDTrkFirstStageFrontTStripNbr(X);
             }
+            X_itr++;
+         }
 
-            // Y
-            Y_itr = YHitMap->GetMap()->begin()  ;
-            for (G4int h = 0 ; h < sizeY ; h++) {
-               G4int YTrackID  =   Y_itr->first - N;
-               G4double Y     = *(Y_itr->second);
-               if (YTrackID == NTrackID) {
-                  ms_Event->SetGPDTrkFirstStageBackEStripNbr(Y);
-                  ms_Event->SetGPDTrkFirstStageBackTStripNbr(Y);
-               }
-
-               Y_itr++;
+         // Y
+         Y_itr = YHitMap->GetMap()->begin()  ;
+         for (G4int h = 0 ; h < sizeY ; h++) {
+            G4int YTrackID  =   Y_itr->first - N;
+            G4int     Y     = *(Y_itr->second);
+            if (YTrackID == NTrackID) {
+               ms_Event->SetGPDTrkFirstStageBackEStripNbr(Y);
+               ms_Event->SetGPDTrkFirstStageBackTStripNbr(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 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 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++;
+         // 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 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++;
+         // 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++;
+         }
 
-            // Second Stage
-            SecondStageEnergy_itr = SecondStageEnergyHitMap->GetMap()->begin()  ;
-            for (G4int h = 0 ; h < SecondStageEnergyHitMap->entries() ; h++) {
-               G4int SecondStageEnergyTrackID  =   SecondStageEnergy_itr->first - N;
-               G4double SecondStageEnergy      = *(SecondStageEnergy_itr->second);
-
-               if (SecondStageEnergyTrackID == NTrackID) {
-                  ms_Event->SetGPDTrkSecondStageEEnergy(RandGauss::shoot(SecondStageEnergy, ResoSecondStage));
-                  ms_Event->SetGPDTrkSecondStageEPadNbr(1);
-                  ms_Event->SetGPDTrkSecondStageTPadNbr(1);
-                  ms_Event->SetGPDTrkSecondStageTTime(1);
-                  ms_Event->SetGPDTrkSecondStageTDetectorNbr(m_index["Trapezoid"] + N);
-                  ms_Event->SetGPDTrkSecondStageEDetectorNbr(m_index["Trapezoid"] + N);
-               }
-
-               SecondStageEnergy_itr++;
+         // Second Stage
+         SecondStageEnergy_itr = SecondStageEnergyHitMap->GetMap()->begin()  ;
+         for (G4int h = 0 ; h < SecondStageEnergyHitMap->entries() ; h++) {
+            G4int SecondStageEnergyTrackID  =   SecondStageEnergy_itr->first - N;
+            G4double SecondStageEnergy      = *(SecondStageEnergy_itr->second);
+
+            if (SecondStageEnergyTrackID == NTrackID) {
+               ms_Event->SetGPDTrkSecondStageEEnergy(RandGauss::shoot(SecondStageEnergy, ResoSecondStage));
+               ms_Event->SetGPDTrkSecondStageEPadNbr(1);
+               ms_Event->SetGPDTrkSecondStageTPadNbr(1);
+               ms_Event->SetGPDTrkSecondStageTTime(1);
+               ms_Event->SetGPDTrkSecondStageTDetectorNbr(m_index["Trapezoid"] + N);
+               ms_Event->SetGPDTrkSecondStageEDetectorNbr(m_index["Trapezoid"] + N);
             }
+            SecondStageEnergy_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) {
-                  ms_Event->SetGPDTrkThirdStageEEnergy(RandGauss::shoot(ThirdStageEnergy, ResoThirdStage));
-                  ms_Event->SetGPDTrkThirdStageEPadNbr(1);
-                  ms_Event->SetGPDTrkThirdStageTPadNbr(1);
-                  ms_Event->SetGPDTrkThirdStageTTime(1);
-                  ms_Event->SetGPDTrkThirdStageTDetectorNbr(m_index["Trapezoid"] + N);
-                  ms_Event->SetGPDTrkThirdStageEDetectorNbr(m_index["Trapezoid"] + N);
-               }
-
-               ThirdStageEnergy_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) {
+               ms_Event->SetGPDTrkThirdStageEEnergy(RandGauss::shoot(ThirdStageEnergy, ResoThirdStage));
+               ms_Event->SetGPDTrkThirdStageEPadNbr(1);
+               ms_Event->SetGPDTrkThirdStageTPadNbr(1);
+               ms_Event->SetGPDTrkThirdStageTTime(1);
+               ms_Event->SetGPDTrkThirdStageTDetectorNbr(m_index["Trapezoid"] + N);
+               ms_Event->SetGPDTrkThirdStageEDetectorNbr(m_index["Trapezoid"] + N);
             }
+            ThirdStageEnergy_itr++;
+         }
 
-         DetectorNumber_itr++;
       }
-
-      // clear map for next event
-      DetectorNumberHitMap ->clear();
-      EnergyHitMap   ->clear();
-      TimeHitMap     ->clear();
-      XHitMap        ->clear();
-      YHitMap        ->clear();
-      PosXHitMap     ->clear();
-      PosYHitMap     ->clear();
-      PosZHitMap     ->clear();
-      AngThetaHitMap ->clear();
-      AngPhiHitMap   ->clear();
-      SecondStageEnergyHitMap ->clear();
-      ThirdStageEnergyHitMap ->clear();
+      DetectorNumber_itr++;
    }
+
+   // clear map for next event
+   DetectorNumberHitMap ->clear();
+   EnergyHitMap   ->clear();
+   TimeHitMap     ->clear();
+   XHitMap        ->clear();
+   YHitMap        ->clear();
+   PosXHitMap     ->clear();
+   PosYHitMap     ->clear();
+   PosZHitMap     ->clear();
+   AngThetaHitMap ->clear();
+   AngPhiHitMap   ->clear();
+   SecondStageEnergyHitMap ->clear();
+   ThirdStageEnergyHitMap ->clear();
 }
 
 
-- 
GitLab