Message: Angular Distribution Not Logged In (login)
 Next-in-Thread Next-in-Thread
 Next-in-Forum Next-in-Forum

Question Angular Distribution 

Forum: Event and Track Management
Date: 20 Mar, 2014
From: A. Hod <A. Hod>

Dear G4 Users;

I am a little bit confused about the angular distribution.

My simulation setup is the following:

a carbon layer (x=1mm y=1mm z= 50 um) is irradiated with an electron beam of 300 keV.

Carbon layer is positioned in the center of coordinate system (0, 0, 0) and the electron source is located at -Z and emits electrons in the Z-direction and hit the carbon layer at the center (Fig. 1).

To calculate the angular distribution of primary (e.g. e-) and secondary particles (e.g. e- and photons) I followed the example TestEm 14. I calculated angular distribution in X- Y- and Z-direction by just changing:

G4double costeta = direction.z();

But I think the result which I obtained is strange. For example, the angular distribution of the scattered electrons in the Z-direction (Fig. 2) is not centered at 0 degree. I think the peak should correspond to 0 degree. Am I right?

According to this angular distribution I think in this case only the forward scattering is taken into account and back scattering in not included. Is it true?

I donít know how the angle Theta is defined. Is it the angle between the direction of the incoming particles and the scattered particles, ..? refering the this angular distribution (in Z-direction) I labeled it in the figure 1 but I am not sure!

Here is my

================================================================================ .. .. ..

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

// collect energy deposited in this step

G4double EdepStep = aStep->GetTotalEnergyDeposit();

if (EdepStep > 0.) eventAction->addEdep(EdepStep);


const G4StepPoint* endPoint = aStep->GetPostStepPoint(); G4String procName = endPoint->GetProcessDefinedStep()->GetProcessName(); G4bool transmit = (endPoint->GetStepStatus() <= fGeomBoundary);

//plot final state (only if continuous energy loss is small enough) // ////////////////scattered primary particle///////////////////////// //

  G4int id = 1;
  if (aStep->GetTrack()->GetTrackStatus() == fAlive) {
    G4double energy = endPoint->GetKineticEnergy();  

   // histoManager->FillHisto(id,energy);

    id = 2;
    G4ThreeVector direction = endPoint->GetMomentumDirection();
    G4double costeta = direction.z();
    //G4double costeta = direction.y();
    //G4double costeta = direction.x();



///////////// secondaries /////////////////////////

  const G4TrackVector* secondary = fpSteppingManager->GetSecondary();
  for (size_t lp=0; lp<(*secondary).size(); lp++) {
    G4double charge = (*secondary)[lp]->GetDefinition()->GetPDGCharge();
    if (charge != 0.) { id = 3; } else { id = 5; }
    G4double energy = (*secondary)[lp]->GetKineticEnergy();


    G4ThreeVector direction = (*secondary)[lp]->GetMomentumDirection();      
    G4double costeta = direction.z();
    //G4double costeta = direction.y();
    //G4double costeta = direction.x();


    //energy tranferred to charged secondaries
   //// if (charge != 0.) { runAction->SumeTransf(energy); }         

  // kill event after first interaction


I highly appreciate your help




 Add Message Add Message
to: "Angular Distribution"

 Subscribe Subscribe

This site runs SLAC HyperNews version 1.11-slac-98, derived from the original HyperNews

[ Geant 4 Home | Geant 4 HyperNews | Search | Request New Forum | Feedback ]