OPAL (Object Oriented Parallel Accelerator Library)  2.2.0
OPAL
Public Member Functions | Private Member Functions | Private Attributes | List of all members
CollimatorPhysics Class Reference

#include <CollimatorPhysics.hh>

Inheritance diagram for CollimatorPhysics:
Inheritance graph
[legend]
Collaboration diagram for CollimatorPhysics:
Collaboration graph
[legend]

Public Member Functions

 CollimatorPhysics (const std::string &name, ElementBase *element, std::string &mat, bool enableRutherford)
 
 ~CollimatorPhysics ()
 
void apply (PartBunchBase< double, 3 > *bunch, const std::pair< Vector_t, double > &boundingSphere, size_t numParticlesInSimulation=0)
 
virtual const std::string getType () const
 
void print (Inform &os)
 
bool stillActive ()
 
bool stillAlive (PartBunchBase< double, 3 > *bunch)
 
double getTime ()
 
std::string getName ()
 
size_t getParticlesInMat ()
 
unsigned getRediffused ()
 
unsigned int getNumEntered ()
 
void computeInteraction ()
 
virtual bool computeEnergyLoss (Vector_t &P, const double deltat, bool includeFluctuations=true) const
 
- Public Member Functions inherited from ParticleMatterInteractionHandler
 ParticleMatterInteractionHandler (std::string name, ElementBase *elref)
 
virtual ~ParticleMatterInteractionHandler ()
 
void setFlagAllParticlesIn (bool p)
 
bool getFlagAllParticlesIn () const
 
void updateElement (ElementBase *newref)
 
ElementBasegetElement ()
 

Private Member Functions

void configureMaterialParameters ()
 The material of the collimator. More...
 
void computeCoulombScattering (Vector_t &R, Vector_t &P, double dt)
 
void applyRotation (Vector_t &P, Vector_t &R, double xplane, double thetacou)
 
void applyRandomRotation (Vector_t &P, double theta0)
 
void copyFromBunch (PartBunchBase< double, 3 > *bunch, const std::pair< Vector_t, double > &boundingSphere)
 
void addBackToBunch (PartBunchBase< double, 3 > *bunch)
 
void applyNonDKS (PartBunchBase< double, 3 > *bunch, const std::pair< Vector_t, double > &boundingSphere, size_t numParticlesInSimulation)
 
void deleteParticleFromLocalVector ()
 
void calcStat (double Eng)
 
void gatherStatistics ()
 
void push ()
 
void resetTimeStep ()
 
void setTimeStepForLeavingParticles ()
 

Private Attributes

double T_m
 
double dT_m
 
gsl_rng * rGen_m
 
std::string material_m
 
std::unique_ptr< InsideTesterhitTester_m
 
ElementBase::ElementType collshape_m
 
std::string collshapeStr_m
 
double Z_m
 
double A_m
 
double rho_m
 
double X0_m
 
double I_m
 
double A2_c
 
double A3_c
 
double A4_c
 
double A5_c
 
unsigned int bunchToMatStat_m
 
unsigned int stoppedPartStat_m
 
unsigned int rediffusedStat_m
 
unsigned int totalPartsInMat_m
 
double Eavg_m
 
double Emax_m
 
double Emin_m
 
std::vector< PARTlocParts_m
 
std::unique_ptr< LossDataSinklossDs_m
 
bool enableRutherford_m
 
IpplTimings::TimerRef DegraderApplyTimer_m
 
IpplTimings::TimerRef DegraderLoopTimer_m
 
IpplTimings::TimerRef DegraderDestroyTimer_m
 

Additional Inherited Members

- Protected Attributes inherited from ParticleMatterInteractionHandler
ElementBaseelement_ref_m
 
bool allParticleInMat_m
 if all particles are in matter stay inside the particle matter interaction More...
 

Detailed Description

Definition at line 79 of file CollimatorPhysics.hh.

Constructor & Destructor Documentation

CollimatorPhysics::CollimatorPhysics ( const std::string &  name,
ElementBase element,
std::string &  mat,
bool  enableRutherford 
)
CollimatorPhysics::~CollimatorPhysics ( )

Definition at line 163 of file CollimatorPhysics.cpp.

References IpplInfo::DKSEnabled, locParts_m, lossDs_m, and rGen_m.

Member Function Documentation

void CollimatorPhysics::addBackToBunch ( PartBunchBase< double, 3 > *  bunch)
private
void CollimatorPhysics::apply ( PartBunchBase< double, 3 > *  bunch,
const std::pair< Vector_t, double > &  boundingSphere,
size_t  numParticlesInSimulation = 0 
)
virtual
void CollimatorPhysics::applyNonDKS ( PartBunchBase< double, 3 > *  bunch,
const std::pair< Vector_t, double > &  boundingSphere,
size_t  numParticlesInSimulation 
)
private
void CollimatorPhysics::applyRandomRotation ( Vector_t P,
double  theta0 
)
private

Definition at line 394 of file CollimatorPhysics.cpp.

References abs(), atan(), cos(), cross(), dot(), euclidean_norm(), rGen_m, sin(), sqrt(), Physics::two_pi, Attrib::Distribution::W, and X.

Referenced by computeCoulombScattering().

Here is the call graph for this function:

void CollimatorPhysics::applyRotation ( Vector_t P,
Vector_t R,
double  xplane,
double  thetacou 
)
private

Definition at line 378 of file CollimatorPhysics.cpp.

References atan2(), cos(), fmod(), Attrib::Distribution::R, sin(), and Physics::two_pi.

Referenced by computeCoulombScattering().

Here is the call graph for this function:

void CollimatorPhysics::calcStat ( double  Eng)
inlineprivate

Definition at line 215 of file CollimatorPhysics.hh.

References Eavg_m, Emax_m, and Emin_m.

void CollimatorPhysics::computeCoulombScattering ( Vector_t R,
Vector_t P,
double  dt 
)
private

Coulomb Scattering: Including Multiple Coulomb Scattering and large angle Rutherford Scattering. Using the distribution given in Classical Electrodynamics, by J. D. Jackson.

Definition at line 419 of file CollimatorPhysics.cpp.

References abs(), applyRandomRotation(), applyRotation(), Physics::c, cos(), enableRutherford_m, euclidean_norm(), log(), Physics::m_p, Physics::pi, pow(), rGen_m, CoordinateSystemTrafo::rotateFrom(), CoordinateSystemTrafo::rotateTo(), sin(), sqrt(), CoordinateSystemTrafo::transformFrom(), Physics::two_pi, X0_m, and Physics::z_p.

Referenced by computeInteraction().

Here is the call graph for this function:

bool CollimatorPhysics::computeEnergyLoss ( Vector_t P,
const double  deltat,
bool  includeFluctuations = true 
) const
virtual

Energy Loss: using the Bethe-Bloch equation. Energy straggling: For relatively thick absorbers such that the number of collisions is large, the energy loss distribution is shown to be Gaussian in form. See Particle Physics Booklet, chapter 'Passage of particles through matter' or Review of Particle Physics, DOI: 10.1103/PhysRevD.86.010001, page 329 ff

Implements ParticleMatterInteractionHandler.

Definition at line 318 of file CollimatorPhysics.cpp.

References A2_c, A3_c, A4_c, A5_c, A_m, Physics::amu, Physics::Avo, Physics::c, Physics::e, euclidean_norm(), Util::getGamma(), I_m, K, log(), Physics::m_e, Physics::m_p, Physics::pi, pow(), Physics::r_e, rGen_m, rho_m, sqrt(), Z_m, and Physics::z_p.

Referenced by computeInteraction().

Here is the call graph for this function:

void CollimatorPhysics::computeInteraction ( )

Definition at line 272 of file CollimatorPhysics.cpp.

References computeCoulombScattering(), computeEnergyLoss(), deleteParticleFromLocalVector(), hitTester_m, locParts_m, lossDs_m, and stoppedPartStat_m.

Referenced by applyNonDKS().

Here is the call graph for this function:

void CollimatorPhysics::configureMaterialParameters ( )
private

The material of the collimator.

Definition at line 182 of file CollimatorPhysics.cpp.

References Physics::Material::A2, A2_c, Physics::Material::A3, A3_c, Physics::Material::A4, A4_c, Physics::Material::A5, A5_c, A_m, Physics::Material::getMaterial(), I_m, material_m, rho_m, X0_m, and Z_m.

Referenced by CollimatorPhysics().

Here is the call graph for this function:

void CollimatorPhysics::copyFromBunch ( PartBunchBase< double, 3 > *  bunch,
const std::pair< Vector_t, double > &  boundingSphere 
)
private
void CollimatorPhysics::deleteParticleFromLocalVector ( )
private

Definition at line 641 of file CollimatorPhysics.cpp.

References Eavg_m, Emax_m, Emin_m, and locParts_m.

Referenced by addBackToBunch(), and computeInteraction().

void CollimatorPhysics::gatherStatistics ( )
private

Definition at line 715 of file CollimatorPhysics.cpp.

References allreduce(), bunchToMatStat_m, collshape_m, ElementBase::DEGRADER, IpplInfo::DKSEnabled, locParts_m, rediffusedStat_m, stoppedPartStat_m, and totalPartsInMat_m.

Referenced by applyNonDKS().

Here is the call graph for this function:

std::string CollimatorPhysics::getName ( )
virtual

Implements ParticleMatterInteractionHandler.

Definition at line 176 of file CollimatorPhysics.cpp.

References ParticleMatterInteractionHandler::element_ref_m, and ElementBase::getName().

Referenced by CollimatorPhysics().

Here is the call graph for this function:

unsigned int CollimatorPhysics::getNumEntered ( )
inlinevirtual

Implements ParticleMatterInteractionHandler.

Definition at line 239 of file CollimatorPhysics.hh.

References bunchToMatStat_m.

size_t CollimatorPhysics::getParticlesInMat ( )
inlinevirtual

Implements ParticleMatterInteractionHandler.

Definition at line 229 of file CollimatorPhysics.hh.

References totalPartsInMat_m.

unsigned int CollimatorPhysics::getRediffused ( )
inlinevirtual

Implements ParticleMatterInteractionHandler.

Definition at line 234 of file CollimatorPhysics.hh.

References rediffusedStat_m.

double CollimatorPhysics::getTime ( )
inlinevirtual

Implements ParticleMatterInteractionHandler.

Definition at line 224 of file CollimatorPhysics.hh.

References T_m.

const std::string CollimatorPhysics::getType ( ) const
inlinevirtual

Implements ParticleMatterInteractionHandler.

Definition at line 244 of file CollimatorPhysics.hh.

void CollimatorPhysics::print ( Inform os)
virtual
void CollimatorPhysics::push ( )
private

Definition at line 666 of file CollimatorPhysics.cpp.

References Physics::c, dT_m, Util::getGamma(), and locParts_m.

Referenced by applyNonDKS().

Here is the call graph for this function:

void CollimatorPhysics::resetTimeStep ( )
private

Definition at line 706 of file CollimatorPhysics.cpp.

References dT_m, and locParts_m.

Referenced by applyNonDKS().

void CollimatorPhysics::setTimeStepForLeavingParticles ( )
private
bool CollimatorPhysics::stillActive ( )
virtual

Implements ParticleMatterInteractionHandler.

Definition at line 602 of file CollimatorPhysics.cpp.

References totalPartsInMat_m.

bool CollimatorPhysics::stillAlive ( PartBunchBase< double, 3 > *  bunch)
virtual

Member Data Documentation

double CollimatorPhysics::A2_c
private

Definition at line 169 of file CollimatorPhysics.hh.

Referenced by computeEnergyLoss(), and configureMaterialParameters().

double CollimatorPhysics::A3_c
private

Definition at line 170 of file CollimatorPhysics.hh.

Referenced by computeEnergyLoss(), and configureMaterialParameters().

double CollimatorPhysics::A4_c
private

Definition at line 171 of file CollimatorPhysics.hh.

Referenced by computeEnergyLoss(), and configureMaterialParameters().

double CollimatorPhysics::A5_c
private

Definition at line 172 of file CollimatorPhysics.hh.

Referenced by computeEnergyLoss(), and configureMaterialParameters().

double CollimatorPhysics::A_m
private

Definition at line 164 of file CollimatorPhysics.hh.

Referenced by computeEnergyLoss(), and configureMaterialParameters().

unsigned int CollimatorPhysics::bunchToMatStat_m
private

Definition at line 175 of file CollimatorPhysics.hh.

Referenced by apply(), copyFromBunch(), gatherStatistics(), getNumEntered(), and print().

ElementBase::ElementType CollimatorPhysics::collshape_m
private

Definition at line 159 of file CollimatorPhysics.hh.

Referenced by apply(), CollimatorPhysics(), gatherStatistics(), and stillAlive().

std::string CollimatorPhysics::collshapeStr_m
private

Definition at line 160 of file CollimatorPhysics.hh.

IpplTimings::TimerRef CollimatorPhysics::DegraderApplyTimer_m
private

Definition at line 209 of file CollimatorPhysics.hh.

Referenced by apply(), and CollimatorPhysics().

IpplTimings::TimerRef CollimatorPhysics::DegraderDestroyTimer_m
private

Definition at line 211 of file CollimatorPhysics.hh.

Referenced by CollimatorPhysics(), and copyFromBunch().

IpplTimings::TimerRef CollimatorPhysics::DegraderLoopTimer_m
private

Definition at line 210 of file CollimatorPhysics.hh.

Referenced by applyNonDKS(), and CollimatorPhysics().

double CollimatorPhysics::dT_m
private
double CollimatorPhysics::Eavg_m
private

Definition at line 184 of file CollimatorPhysics.hh.

Referenced by apply(), calcStat(), and deleteParticleFromLocalVector().

double CollimatorPhysics::Emax_m
private

Definition at line 185 of file CollimatorPhysics.hh.

Referenced by apply(), calcStat(), and deleteParticleFromLocalVector().

double CollimatorPhysics::Emin_m
private

Definition at line 186 of file CollimatorPhysics.hh.

Referenced by apply(), calcStat(), and deleteParticleFromLocalVector().

bool CollimatorPhysics::enableRutherford_m
private

Definition at line 192 of file CollimatorPhysics.hh.

Referenced by computeCoulombScattering().

std::unique_ptr<InsideTester> CollimatorPhysics::hitTester_m
private

Definition at line 158 of file CollimatorPhysics.hh.

Referenced by CollimatorPhysics(), computeInteraction(), and copyFromBunch().

double CollimatorPhysics::I_m
private

Definition at line 167 of file CollimatorPhysics.hh.

Referenced by computeEnergyLoss(), and configureMaterialParameters().

std::vector<PART> CollimatorPhysics::locParts_m
private
std::unique_ptr<LossDataSink> CollimatorPhysics::lossDs_m
private

Definition at line 190 of file CollimatorPhysics.hh.

Referenced by CollimatorPhysics(), computeInteraction(), and ~CollimatorPhysics().

std::string CollimatorPhysics::material_m
private

Definition at line 157 of file CollimatorPhysics.hh.

Referenced by configureMaterialParameters(), and print().

unsigned int CollimatorPhysics::rediffusedStat_m
private
gsl_rng* CollimatorPhysics::rGen_m
private
double CollimatorPhysics::rho_m
private

Definition at line 165 of file CollimatorPhysics.hh.

Referenced by computeEnergyLoss(), and configureMaterialParameters().

unsigned int CollimatorPhysics::stoppedPartStat_m
private

Definition at line 177 of file CollimatorPhysics.hh.

Referenced by apply(), computeInteraction(), gatherStatistics(), and print().

double CollimatorPhysics::T_m
private

Definition at line 152 of file CollimatorPhysics.hh.

Referenced by apply(), applyNonDKS(), and getTime().

unsigned int CollimatorPhysics::totalPartsInMat_m
private
double CollimatorPhysics::X0_m
private

Definition at line 166 of file CollimatorPhysics.hh.

Referenced by computeCoulombScattering(), and configureMaterialParameters().

double CollimatorPhysics::Z_m
private

Definition at line 163 of file CollimatorPhysics.hh.

Referenced by computeEnergyLoss(), and configureMaterialParameters().


The documentation for this class was generated from the following files: