Hello @guatelli thank you… I followed your example so I wrote:
// Retrieve the secondary particles
G4SteppingManager* steppingManager = fpSteppingManager;
fSecondary = steppingManager -> GetfSecondary();
G4String secondaryParticleName;
for(size_t lp1=0;lp1<(*fSecondary).size(); lp1++)
{
secondaryParticleName = (*fSecondary)[lp1]->GetDefinition() -> GetParticleName(); // name of the secondary
}
if (fRegeneratedPositronFlag){
if(secondaryParticleName == "gamma" ) {
if(NextVol && ThisVol->GetName()=="World" && NextVol->GetName()=="Regenerator" && step->GetTrack()->GetParentID()!=00 && step->GetTrack()->GetDynamicParticle()->GetPDGcode()==22 ) {
int pdg = step->GetTrack()->GetParticleDefinition()->GetPDGEncoding();
analysisManager->FillNtupleDColumn(3,0, pdg);
double kinEnergy = step->GetTrack()->GetDynamicParticle()->GetKineticEnergy();
analysisManager->FillNtupleDColumn(3,1, kinEnergy);
double MomDirx = step->GetTrack()->GetMomentumDirection().x();
analysisManager->FillNtupleDColumn(3,2, MomDirx);
double MomDiry = step->GetTrack()->GetMomentumDirection().y();
analysisManager->FillNtupleDColumn(3,3, MomDiry);
double MomDirz = step->GetTrack()->GetMomentumDirection().z();
analysisManager->FillNtupleDColumn(3,4, MomDirz);
double Vertx = step->GetTrack()->GetVertexPosition().x();
analysisManager->FillNtupleDColumn(3,5, Vertx);
double Verty = step->GetTrack()->GetVertexPosition().y();
analysisManager->FillNtupleDColumn(3,6, Verty);
double Vertz = step->GetTrack()->GetVertexPosition().z();
analysisManager->FillNtupleDColumn(3,7, Vertz);
double Mom = step->GetTrack()->GetDynamicParticle()->GetTotalMomentum();
analysisManager->FillNtupleDColumn(3,8, Mom);
double Dirxsp = step->GetTrack()->GetPosition().x();
analysisManager->FillNtupleDColumn(3,9, Dirxsp);
double Dirysp = step->GetTrack()->GetPosition().y();
analysisManager->FillNtupleDColumn(3,10, Dirysp);
double Dirzsp = step->GetTrack()->GetPosition().z();
analysisManager->FillNtupleDColumn(3,11, Dirzsp);
double Momx = step->GetTrack()->GetDynamicParticle()->GetMomentum().x();
analysisManager->FillNtupleDColumn(3,12, Momx);
double Momy = step->GetTrack()->GetDynamicParticle()->GetMomentum().y();
analysisManager->FillNtupleDColumn(3,13, Momy);
double Momz = step->GetTrack()->GetDynamicParticle()->GetMomentum().z();
analysisManager->FillNtupleDColumn(3,14, Momz);
double xprime=atan((step->GetTrack()->GetDynamicParticle()->GetMomentum().x())/(step->GetTrack()->GetDynamicParticle()->GetMomentum().z()));
analysisManager->FillNtupleDColumn(3,15, xprime);
double yprime=atan((step->GetTrack()->GetDynamicParticle()->GetMomentum().y())/(step->GetTrack()->GetDynamicParticle()->GetMomentum().z()));
analysisManager->FillNtupleDColumn(3,16, yprime);
double ParID=step->GetTrack()->GetParentID();
analysisManager->FillNtupleDColumn(3,17, ParID);
analysisManager->AddNtupleRow(3);
}
if(NextVol && ThisVol->GetName()=="Regenerator" && NextVol->GetName()=="World" && step->GetTrack()->GetParentID()!=00 && step->GetTrack()->GetDynamicParticle()->GetPDGcode()==-11 ) {
int pdg = step->GetTrack()->GetParticleDefinition()->GetPDGEncoding();
analysisManager->FillNtupleDColumn(4,0, pdg);
double kinEnergy = step->GetTrack()->GetDynamicParticle()->GetKineticEnergy();
analysisManager->FillNtupleDColumn(4,1, kinEnergy);
double MomDirx = step->GetTrack()->GetMomentumDirection().x();
analysisManager->FillNtupleDColumn(4,2, MomDirx);
double MomDiry = step->GetTrack()->GetMomentumDirection().y();
analysisManager->FillNtupleDColumn(4,3, MomDiry);
double MomDirz = step->GetTrack()->GetMomentumDirection().z();
analysisManager->FillNtupleDColumn(4,4, MomDirz);
double Vertx = step->GetTrack()->GetVertexPosition().x();
analysisManager->FillNtupleDColumn(4,5, Vertx);
double Verty = step->GetTrack()->GetVertexPosition().y();
analysisManager->FillNtupleDColumn(4,6, Verty);
double Vertz = step->GetTrack()->GetVertexPosition().z();
analysisManager->FillNtupleDColumn(4,7, Vertz);
double Mom = step->GetTrack()->GetDynamicParticle()->GetTotalMomentum();
analysisManager->FillNtupleDColumn(4,8, Mom);
double Dirxsp = step->GetTrack()->GetPosition().x();
analysisManager->FillNtupleDColumn(4,9, Dirxsp);
double Dirysp = step->GetTrack()->GetPosition().y();
analysisManager->FillNtupleDColumn(4,10, Dirysp);
double Dirzsp = step->GetTrack()->GetPosition().z();
analysisManager->FillNtupleDColumn(4,11, Dirzsp);
double Momx = step->GetTrack()->GetDynamicParticle()->GetMomentum().x();
analysisManager->FillNtupleDColumn(4,12, Momx);
double Momy = step->GetTrack()->GetDynamicParticle()->GetMomentum().y();
analysisManager->FillNtupleDColumn(4,13, Momy);
double Momz = step->GetTrack()->GetDynamicParticle()->GetMomentum().z();
analysisManager->FillNtupleDColumn(4,14, Momz);
double xprime=atan((step->GetTrack()->GetDynamicParticle()->GetMomentum().x())/(step->GetTrack()->GetDynamicParticle()->GetMomentum().z()));
analysisManager->FillNtupleDColumn(4,15, xprime);
double yprime=atan((step->GetTrack()->GetDynamicParticle()->GetMomentum().y())/(step->GetTrack()->GetDynamicParticle()->GetMomentum().z()));
analysisManager->FillNtupleDColumn(4,16, yprime);
double ParID=step->GetTrack()->GetParentID();
analysisManager->FillNtupleDColumn(4,17, ParID);
analysisManager->AddNtupleRow(4);
}
}
}
It runs but in the ntupla 4 I get the positrons outgoing the regenerator, instead the ntupla 3 is empty (i.e. I don't get photons entering the regeneator)...so I don't think that I'm getting positrons produce by by gamma ->e+ e?
Here the stepping action
[B1SteppingAction.cc|attachment](upload://s0qPmLZrBtoyQI8NSBXDn7cstBp.cc) (24.0 KB)