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