Prompt Gamma Spectrum from proton beam

Hi,

I am trying to get the prompt gamma spectrum from 200 MeV proton beam interacting with the water phantom. I have two detectors (both are made of CsI, and the front detector is 5 mm thickness and back detector is 5 mm cylinder) detecting prompt gamma arriving at those two scoring volume.

I have obtained Kinetic energy of gamma arriving at my two detectors respectively however there are no gamma energy deposited on my detector.

Can some one help find out where my model went wrong.

Physics list (.cc):

MyPhysicsList::MyPhysicsList()
{

    G4int verb = 0;  
    SetVerboseLevel(verb);

    RegisterPhysics( new G4HadronPhysicsQGSP_BIC_HP(verb));
   RegisterPhysics( new GammaNuclearPhysics("gamma"));

     RegisterPhysics(new G4DecayPhysics());
   RegisterPhysics(new G4RadioactiveDecayPhysics());    
   RegisterPhysics(new G4EmStandardPhysics_option4());

}

MyPhysicsList::~MyPhysicsList()
{}

SteppingAction (.cc):

#include "stepping.hh"
#include "G4SystemOfUnits.hh"
#include "g4root.hh"

MySteppingAction::MySteppingAction(MyEventAction *eventAction)
{
    fEventAction = eventAction;
    fEventAction2 = eventAction;
    fEventActionKE1 = eventAction;
    fEventActionKE2 = eventAction;
    fEventActionKE_INCIDENT = eventAction;
    fScoringVolume = 0;
    fScoringVolume2 = 0;
    fScoringVolume3 = 0;
}

MySteppingAction::~MySteppingAction()
{}

void MySteppingAction::UserSteppingAction(const G4Step *step)
{

    G4AnalysisManager *man = G4AnalysisManager::Instance();

    const MyDetectorConstruction* detectorConstruction
      = static_cast<const MyDetectorConstruction*>
        (G4RunManager::GetRunManager()->GetUserDetectorConstruction());

    fScoringVolume = detectorConstruction->GetScoringVolume();   
    fScoringVolume2 = detectorConstruction->GetScoringVolume2();
    fScoringVolume3 = detectorConstruction->GetScoringVolume3();

    G4LogicalVolume *volume = step->GetPreStepPoint()->GetTouchableHandle()->GetVolume()->GetLogicalVolume();

    G4Track *track = step->GetTrack();

    G4String Primaryname = step->GetTrack()->GetParticleDefinition()->GetParticleName();
    G4int parent_ID = track->GetParentID();

	if (volume == fScoringVolume) 
    {
            if (Primaryname == "gamma" && track->GetParentID() == 0)
            {
                 G4double ecin = step->GetTotalEnergyDeposit();
                 G4double ekin1 = step->GetPreStepPoint()->GetKineticEnergy();  
                 fEventAction->AddEdep(ecin);
                 fEventActionKE1->AddKE1(ekin1);
                G4String Primaryname = step->GetTrack()->GetParticleDefinition()->GetParticleName();
                   G4int parent_ID = track->GetParentID();
                 G4cout << "Name_1: " << Primaryname << G4endl;
                 G4cout << "parent_ID: " << parent_ID << G4endl;

            }

	}
	if (volume == fScoringVolume2) 
    {

            if (Primaryname == "gamma" && track->GetParentID() == 0)
            {
                 G4double ecin2 = step->GetTotalEnergyDeposit();
                 G4double ekin2 = step->GetPreStepPoint()->GetKineticEnergy();  
                 fEventActionKE2->AddKE2(ekin2);
                 fEventAction2->AddEdep2(ecin2);
                G4String Primaryname2 = step->GetTrack()->GetParticleDefinition()->GetParticleName();
                 G4cout << "Name_2: " << Primaryname2 << G4endl;
                 G4int parent_ID2 = track->GetParentID();
                 G4cout << "parent_ID2: " << parent_ID2 << G4endl;
             }
          
	}

  else if (volume != fScoringVolume || volume != fScoringVolume2) return;

}

Set-up:

Do i have to change anything on my physics list or stepping action?

Thanks