Skip to content

Commit

Permalink
[pre-commit.ci] Automatic python and c++ formatting
Browse files Browse the repository at this point in the history
  • Loading branch information
pre-commit-ci[bot] committed Apr 9, 2024
1 parent 16d4da5 commit 60b75a8
Show file tree
Hide file tree
Showing 11 changed files with 269 additions and 226 deletions.
49 changes: 22 additions & 27 deletions core/opengate_core/opengate_lib/GateOptnPairProdSplitting.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -49,54 +49,49 @@

//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......

GateOptnPairProdSplitting::
GateOptnPairProdSplitting(G4String name)
GateOptnPairProdSplitting::GateOptnPairProdSplitting(G4String name)
: GateOptnVGenericSplitting(name), fParticleChange() {}

//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......

GateOptnPairProdSplitting::
~GateOptnPairProdSplitting() {}
GateOptnPairProdSplitting::~GateOptnPairProdSplitting() {}

G4VParticleChange *
GateOptnPairProdSplitting::ApplyFinalStateBiasing( const G4BiasingProcessInterface *callingProcess, const G4Track *track, const G4Step *step, G4bool &) {
G4VParticleChange *GateOptnPairProdSplitting::ApplyFinalStateBiasing(
const G4BiasingProcessInterface *callingProcess, const G4Track *track,
const G4Step *step, G4bool &) {


G4int splittingFactor = ceil(fSplittingFactor);
G4double survivalProbabilitySplitting = 1 - (splittingFactor - fSplittingFactor) / splittingFactor;
G4double survivalProbabilitySplitting =
1 - (splittingFactor - fSplittingFactor) / splittingFactor;
G4double particleWeight = 0;

G4VParticleChange* processFinalState = callingProcess->GetWrappedProcess()->PostStepDoIt(*track, *step);
G4VParticleChange *processFinalState =
callingProcess->GetWrappedProcess()->PostStepDoIt(*track, *step);

if (fSplittingFactor == 1 && fRussianRouletteForAngle == false) return processFinalState;
TrackInitializationGamma(&fParticleChange,processFinalState,track,fSplittingFactor);
if (fSplittingFactor == 1 && fRussianRouletteForAngle == false)
return processFinalState;
TrackInitializationGamma(&fParticleChange, processFinalState, track,
fSplittingFactor);

processFinalState->Clear();

G4int nCalls = 1;
while (nCalls <= splittingFactor) {
G4double splittingProbability = G4UniformRand();
if (splittingProbability <= survivalProbabilitySplitting || survivalProbabilitySplitting == 1) {
if (splittingProbability <= survivalProbabilitySplitting ||
survivalProbabilitySplitting == 1) {
particleWeight = track->GetWeight() / fSplittingFactor;
G4VParticleChange *processFinalState = callingProcess->GetWrappedProcess()->PostStepDoIt(*track, *step);
if (processFinalState->GetNumberOfSecondaries() >= 1 ) {
for(int i =0; i < processFinalState->GetNumberOfSecondaries();i++){
G4Track *SecondaryTrack =processFinalState->GetSecondary(i);
G4VParticleChange *processFinalState =
callingProcess->GetWrappedProcess()->PostStepDoIt(*track, *step);
if (processFinalState->GetNumberOfSecondaries() >= 1) {
for (int i = 0; i < processFinalState->GetNumberOfSecondaries(); i++) {
G4Track *SecondaryTrack = processFinalState->GetSecondary(i);
SecondaryTrack->SetWeight(particleWeight);
fParticleChange.AddSecondary(SecondaryTrack);
}
}
}
}
}
nCalls++;
}
return &fParticleChange;
}









7 changes: 3 additions & 4 deletions core/opengate_core/opengate_lib/GateOptnPairProdSplitting.h
Original file line number Diff line number Diff line change
Expand Up @@ -31,8 +31,8 @@
#ifndef GateOptnPairProdSplitting_h
#define GateOptnPairProdSplitting_h 1

#include "GateOptnVGenericSplitting.h"
#include "G4ParticleChange.hh"
#include "GateOptnVGenericSplitting.h"

class GateOptnPairProdSplitting : public GateOptnVGenericSplitting {
public:
Expand All @@ -42,12 +42,11 @@ class GateOptnPairProdSplitting : public GateOptnVGenericSplitting {
// -- destructor:
virtual ~GateOptnPairProdSplitting();

virtual G4VParticleChange *
virtual G4VParticleChange *
ApplyFinalStateBiasing(const G4BiasingProcessInterface *, const G4Track *,
const G4Step *, G4bool &);

G4ParticleChange fParticleChange;

G4ParticleChange fParticleChange;
};

#endif
63 changes: 34 additions & 29 deletions core/opengate_core/opengate_lib/GateOptnScatteredGammaSplitting.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -37,29 +37,26 @@
#include "G4GammaConversion.hh"
#include "G4ParticleChange.hh"
#include "G4ParticleChangeForGamma.hh"
#include "GateOptnVGenericSplitting.h"
#include "G4PhotoElectricEffect.hh"
#include "G4ProcessType.hh"
#include "G4RayleighScattering.hh"
#include "G4SystemOfUnits.hh"
#include "G4TrackStatus.hh"
#include "G4TrackingManager.hh"
#include "G4VEmProcess.hh"
#include "GateOptnVGenericSplitting.h"
#include <memory>

//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......

GateOptnScatteredGammaSplitting::
GateOptnScatteredGammaSplitting(G4String name)
: GateOptnVGenericSplitting(name),fParticleChange() {}
GateOptnScatteredGammaSplitting::GateOptnScatteredGammaSplitting(G4String name)
: GateOptnVGenericSplitting(name), fParticleChange() {}

//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......

GateOptnScatteredGammaSplitting::
~GateOptnScatteredGammaSplitting() {}
GateOptnScatteredGammaSplitting::~GateOptnScatteredGammaSplitting() {}

G4VParticleChange *
GateOptnScatteredGammaSplitting::ApplyFinalStateBiasing(
G4VParticleChange *GateOptnScatteredGammaSplitting::ApplyFinalStateBiasing(
const G4BiasingProcessInterface *callingProcess, const G4Track *track,
const G4Step *step, G4bool &) {

Expand All @@ -70,21 +67,22 @@ GateOptnScatteredGammaSplitting::ApplyFinalStateBiasing(

const G4ThreeVector position = step->GetPostStepPoint()->GetPosition();
G4int splittingFactor = ceil(fSplittingFactor);
G4double survivalProbabilitySplitting = 1 - (splittingFactor - fSplittingFactor) / splittingFactor;
G4double survivalProbabilitySplitting =
1 - (splittingFactor - fSplittingFactor) / splittingFactor;
G4double gammaWeight = 0;



G4VParticleChange* processFinalState = callingProcess->GetWrappedProcess()->PostStepDoIt(*track, *step);
G4VParticleChange *processFinalState =
callingProcess->GetWrappedProcess()->PostStepDoIt(*track, *step);
// In case we don't want to split (a bit faster) i.e no biaising or no
// splitting low weights particles.

if (fSplittingFactor == 1 && fRussianRouletteForAngle == false) return processFinalState;
if (fSplittingFactor == 1 && fRussianRouletteForAngle == false)
return processFinalState;

TrackInitializationGamma(&fParticleChange,processFinalState,track,fSplittingFactor);
TrackInitializationGamma(&fParticleChange, processFinalState, track,
fSplittingFactor);
processFinalState->Clear();


// There is here the biasing process :
// Since G4VParticleChange class does not allow to retrieve scattered gamma
// information, we need to cast the type G4ParticleChangeForGamma to the
Expand All @@ -105,20 +103,27 @@ GateOptnScatteredGammaSplitting::ApplyFinalStateBiasing(
// gamma) must be considered as secondary particles, even though generated
// gamma will not be cut here by the applied cut.


G4int nCalls = 1;
while (nCalls <= splittingFactor) {
gammaWeight = track->GetWeight() / fSplittingFactor;
G4VParticleChange *processGammaSplittedFinalState = callingProcess->GetWrappedProcess()->PostStepDoIt(*track, *step);
G4ParticleChangeForGamma *castedProcessGammaSplittedFinalState = (G4ParticleChangeForGamma *)processGammaSplittedFinalState;
const G4ThreeVector momentum = castedProcessGammaSplittedFinalState->GetProposedMomentumDirection();
G4double energy = castedProcessGammaSplittedFinalState->GetProposedKineticEnergy();
G4VParticleChange *processGammaSplittedFinalState =
callingProcess->GetWrappedProcess()->PostStepDoIt(*track, *step);
G4ParticleChangeForGamma *castedProcessGammaSplittedFinalState =
(G4ParticleChangeForGamma *)processGammaSplittedFinalState;
const G4ThreeVector momentum =
castedProcessGammaSplittedFinalState->GetProposedMomentumDirection();
G4double energy =
castedProcessGammaSplittedFinalState->GetProposedKineticEnergy();
G4double splittingProbability = G4UniformRand();

if (splittingProbability <= survivalProbabilitySplitting || survivalProbabilitySplitting == 1) {
if (fRussianRouletteForAngle == true){
G4double weightToApply = RussianRouletteForAngleSurvival(castedProcessGammaSplittedFinalState->GetProposedMomentumDirection(),fVectorDirector,fMaxTheta,fSplittingFactor);
if (weightToApply != 0){
if (splittingProbability <= survivalProbabilitySplitting ||
survivalProbabilitySplitting == 1) {
if (fRussianRouletteForAngle == true) {
G4double weightToApply = RussianRouletteForAngleSurvival(
castedProcessGammaSplittedFinalState
->GetProposedMomentumDirection(),
fVectorDirector, fMaxTheta, fSplittingFactor);
if (weightToApply != 0) {
gammaWeight = gammaWeight * weightToApply;
G4Track *gammaTrack = new G4Track(*track);
gammaTrack->SetWeight(gammaWeight);
Expand All @@ -127,26 +132,26 @@ GateOptnScatteredGammaSplitting::ApplyFinalStateBiasing(
gammaTrack->SetPosition(position);
fParticleChange.AddSecondary(gammaTrack);
if (processGammaSplittedFinalState->GetNumberOfSecondaries() == 1) {
G4Track *electronTrack = processGammaSplittedFinalState->GetSecondary(0);
G4Track *electronTrack =
processGammaSplittedFinalState->GetSecondary(0);
electronTrack->SetWeight(gammaWeight);
fParticleChange.AddSecondary(electronTrack);
}
}
}


else{
else {
G4Track *gammaTrack = new G4Track(*track);
gammaTrack->SetWeight(gammaWeight);
gammaTrack->SetKineticEnergy(energy);
gammaTrack->SetMomentumDirection(momentum);
gammaTrack->SetPosition(position);
fParticleChange.AddSecondary(gammaTrack);
if (processGammaSplittedFinalState->GetNumberOfSecondaries() == 1) {
G4Track *electronTrack = processGammaSplittedFinalState->GetSecondary(0);
G4Track *electronTrack =
processGammaSplittedFinalState->GetSecondary(0);
electronTrack->SetWeight(gammaWeight);
fParticleChange.AddSecondary(electronTrack);

}
}
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -43,14 +43,11 @@ class GateOptnScatteredGammaSplitting : public GateOptnVGenericSplitting {
// -- destructor:
virtual ~GateOptnScatteredGammaSplitting();


virtual G4VParticleChange *
ApplyFinalStateBiasing(const G4BiasingProcessInterface *, const G4Track *,
const G4Step *, G4bool &);

G4ParticleChange fParticleChange;


};

#endif
70 changes: 38 additions & 32 deletions core/opengate_core/opengate_lib/GateOptnVGenericSplitting.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -49,57 +49,63 @@

//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......

GateOptnVGenericSplitting::
GateOptnVGenericSplitting(G4String name)
GateOptnVGenericSplitting::GateOptnVGenericSplitting(G4String name)
: G4VBiasingOperation(name), fParticleChange() {}

//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......

GateOptnVGenericSplitting::
~GateOptnVGenericSplitting() {}
GateOptnVGenericSplitting::~GateOptnVGenericSplitting() {}

void GateOptnVGenericSplitting::TrackInitializationChargedParticle(
G4ParticleChange *particleChange, G4VParticleChange *processFinalState,
const G4Track *track, G4double split) {

void GateOptnVGenericSplitting::TrackInitializationChargedParticle(G4ParticleChange* particleChange,G4VParticleChange* processFinalState, const G4Track* track,G4double split) {

G4ParticleChangeForLoss* processFinalStateForLoss =( G4ParticleChangeForLoss* ) processFinalState ;
G4ParticleChangeForLoss *processFinalStateForLoss =
(G4ParticleChangeForLoss *)processFinalState;
particleChange->Initialize(*track);
particleChange->ProposeTrackStatus(processFinalStateForLoss->GetTrackStatus() );
particleChange->ProposeEnergy(processFinalStateForLoss->GetProposedKineticEnergy() );
particleChange->ProposeMomentumDirection(processFinalStateForLoss->GetProposedMomentumDirection());
particleChange->ProposeTrackStatus(
processFinalStateForLoss->GetTrackStatus());
particleChange->ProposeEnergy(
processFinalStateForLoss->GetProposedKineticEnergy());
particleChange->ProposeMomentumDirection(
processFinalStateForLoss->GetProposedMomentumDirection());
particleChange->SetNumberOfSecondaries(fSplittingFactor);
particleChange->SetSecondaryWeightByProcess(true);
processFinalStateForLoss->Clear();
}

void GateOptnVGenericSplitting::TrackInitializationGamma(G4ParticleChange* particleChange,G4VParticleChange* processFinalState, const G4Track* track,G4double split) {
G4ParticleChangeForGamma* processFinalStateForGamma = (G4ParticleChangeForGamma *)processFinalState;
void GateOptnVGenericSplitting::TrackInitializationGamma(
G4ParticleChange *particleChange, G4VParticleChange *processFinalState,
const G4Track *track, G4double split) {
G4ParticleChangeForGamma *processFinalStateForGamma =
(G4ParticleChangeForGamma *)processFinalState;
particleChange->Initialize(*track);
particleChange->ProposeTrackStatus(processFinalStateForGamma->GetTrackStatus() );
particleChange->ProposeEnergy(processFinalStateForGamma->GetProposedKineticEnergy() );
particleChange->ProposeMomentumDirection(processFinalStateForGamma->GetProposedMomentumDirection() );
particleChange->ProposeTrackStatus(
processFinalStateForGamma->GetTrackStatus());
particleChange->ProposeEnergy(
processFinalStateForGamma->GetProposedKineticEnergy());
particleChange->ProposeMomentumDirection(
processFinalStateForGamma->GetProposedMomentumDirection());
particleChange->SetNumberOfSecondaries(fSplittingFactor);
particleChange->SetSecondaryWeightByProcess(true);
processFinalStateForGamma->Clear();


}

G4double GateOptnVGenericSplitting::RussianRouletteForAngleSurvival(G4ThreeVector dir,G4ThreeVector vectorDirector,G4double maxTheta,G4double split){
G4double cosTheta =vectorDirector * dir;
G4double theta = std::acos(cosTheta);
G4double weightToApply = 1;
if (theta > fMaxTheta){
G4double probability = G4UniformRand();
if (probability <= 1 / split) {
weightToApply = split;
G4double GateOptnVGenericSplitting::RussianRouletteForAngleSurvival(
G4ThreeVector dir, G4ThreeVector vectorDirector, G4double maxTheta,
G4double split) {
G4double cosTheta = vectorDirector * dir;
G4double theta = std::acos(cosTheta);
G4double weightToApply = 1;
if (theta > fMaxTheta) {
G4double probability = G4UniformRand();
if (probability <= 1 / split) {
weightToApply = split;
} else {
G4double weightToApply = 0;
}
}
else{
G4double weightToApply = 0;
}
}
return weightToApply;

return weightToApply;
}


//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
23 changes: 15 additions & 8 deletions core/opengate_core/opengate_lib/GateOptnVGenericSplitting.h
Original file line number Diff line number Diff line change
Expand Up @@ -56,7 +56,9 @@ class GateOptnVGenericSplitting : public G4VBiasingOperation {
// --Used:
virtual G4VParticleChange *
ApplyFinalStateBiasing(const G4BiasingProcessInterface *, const G4Track *,
const G4Step *, G4bool &){return 0;};
const G4Step *, G4bool &) {
return 0;
};

// -- Unsued:
virtual G4double DistanceToApplyOperation(const G4Track *, G4double,
Expand All @@ -68,14 +70,19 @@ class GateOptnVGenericSplitting : public G4VBiasingOperation {
return 0;
}

// ----------------------------------------------
// -- Methods for the generic splitting
// ----------------------------------------------

void TrackInitializationChargedParticle(G4ParticleChange* particleChange,G4VParticleChange* processFinalState, const G4Track* track,G4double split);
void TrackInitializationGamma(G4ParticleChange* particleChange,G4VParticleChange* processFinalState, const G4Track* track,G4double split);
G4double RussianRouletteForAngleSurvival(G4ThreeVector dir,G4ThreeVector vectorDirector,G4double maxTheta,G4double split);
// ----------------------------------------------
// -- Methods for the generic splitting
// ----------------------------------------------

void TrackInitializationChargedParticle(G4ParticleChange *particleChange,
G4VParticleChange *processFinalState,
const G4Track *track, G4double split);
void TrackInitializationGamma(G4ParticleChange *particleChange,
G4VParticleChange *processFinalState,
const G4Track *track, G4double split);
G4double RussianRouletteForAngleSurvival(G4ThreeVector dir,
G4ThreeVector vectorDirector,
G4double maxTheta, G4double split);

public:
// ----------------------------------------------
Expand Down
Loading

0 comments on commit 60b75a8

Please sign in to comment.