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

#include <BeamStrippingPhysics.hh>

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

Public Member Functions

 BeamStrippingPhysics (const std::string &name, ElementBase *element)
 
 ~BeamStrippingPhysics ()
 
void setCyclotron (Cyclotron *cycl)
 
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 &msg)
 
bool stillActive ()
 
bool stillAlive (PartBunchBase< double, 3 > *bunch)
 
double getTime ()
 
std::string getName ()
 
size_t getParticlesInMat ()
 
unsigned getRediffused ()
 
unsigned int getNumEntered ()
 
void doPhysics (PartBunchBase< double, 3 > *bunch)
 
- 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 crossSection (const Vector_t &R, double Eng)
 
double csAnalyticFunctionNakai (double Eng, double Eth, int &i)
 
double csAnalyticFunctionTabata (double Eng, double Eth, double a1, double a2, double a3, double a4, double a5, double a6)
 
double csChebyshevFitting (double Eng, double Emin, double Emax)
 
bool gasStripping (double &deltas)
 
bool lorentzStripping (double &gamma, double &E)
 
void secondaryParticles (PartBunchBase< double, 3 > *bunch, size_t &i, bool pdead_LS)
 
void transformToProton (PartBunchBase< double, 3 > *bunch, size_t &i)
 
void transformToHydrogen (PartBunchBase< double, 3 > *bunch, size_t &i)
 
void transformToHminus (PartBunchBase< double, 3 > *bunch, size_t &i)
 
void transformToH3plus (PartBunchBase< double, 3 > *bunch, size_t &i)
 
bool computeEnergyLoss (Vector_t &P, const double deltat, bool includeFluctuations=true) const
 

Private Attributes

Cyclotroncycl_m
 
BeamStrippingbstp_m
 
ElementBase::ElementType bstpshape_m
 
gsl_rng * r_m
 
double T_m
 
double dT_m
 s More...
 
double mass_m
 s More...
 
double charge_m
 
std::string gas_m
 
double pressure_m
 
std::unique_ptr< LossDataSinklossDs_m
 
double NCS_a
 
double NCS_b
 
double NCS_c
 
double NCS_total
 
unsigned bunchToMatStat_m
 
unsigned stoppedPartStat_m
 
unsigned rediffusedStat_m
 
size_t locPartsInMat_m
 

Static Private Attributes

static const double csCoefSingle_Hminus [3][9]
 
static const double csCoefDouble_Hminus [3][9]
 
static const double csCoefSingle_Hplus [3][9]
 
static const double csCoefDouble_Hplus [3][9]
 
static const double csCoefSingleLoss_H [3][9]
 
static const double csCoefSingleCapt_H [3][9]
 
static const double csCoefHminusProduction_H_Tabata [13]
 
static const double csCoefProtonProduction_H_Tabata [9]
 
static const double csCoefProtonProduction_H2plus_Tabata [11]
 
static const double csCoefH3plusProduction_H2plus_Tabata [7]
 
static const double csCoefSingle_Hminus_Chebyshev [11]
 
static const double csCoefDouble_Hminus_Chebyshev [11]
 
static const double csCoefSingle_Hplus_Chebyshev [11]
 
static const double csCoefDouble_Hplus_Chebyshev [11]
 
static const double csCoefHydrogenProduction_H2plus_Chebyshev [11]
 
static double a_m [9] = {}
 
static double b_m [3][9] = {}
 

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 32 of file BeamStrippingPhysics.hh.

Constructor & Destructor Documentation

BeamStrippingPhysics::BeamStrippingPhysics ( const std::string &  name,
ElementBase element 
)
BeamStrippingPhysics::~BeamStrippingPhysics ( )

Definition at line 101 of file BeamStrippingPhysics.cpp.

References lossDs_m, and r_m.

Member Function Documentation

void BeamStrippingPhysics::apply ( PartBunchBase< double, 3 > *  bunch,
const std::pair< Vector_t, double > &  boundingSphere,
size_t  numParticlesInSimulation = 0 
)
virtual
bool BeamStrippingPhysics::computeEnergyLoss ( Vector_t P,
const double  deltat,
bool  includeFluctuations = true 
) const
inlineprivatevirtual

Implements ParticleMatterInteractionHandler.

Definition at line 78 of file BeamStrippingPhysics.hh.

void BeamStrippingPhysics::crossSection ( const Vector_t R,
double  Eng 
)
private
double BeamStrippingPhysics::csAnalyticFunctionNakai ( double  Eng,
double  Eth,
int &  i 
)
private

Definition at line 440 of file BeamStrippingPhysics.cpp.

References b_m, Physics::E_ryd, Physics::m_e, Physics::m_h, and pow().

Referenced by crossSection().

Here is the call graph for this function:

double BeamStrippingPhysics::csAnalyticFunctionTabata ( double  Eng,
double  Eth,
double  a1,
double  a2,
double  a3,
double  a4,
double  a5,
double  a6 
)
private

Definition at line 458 of file BeamStrippingPhysics.cpp.

References Physics::E_ryd, and pow().

Referenced by crossSection().

Here is the call graph for this function:

double BeamStrippingPhysics::csChebyshevFitting ( double  Eng,
double  Emin,
double  Emax 
)
private

Definition at line 476 of file BeamStrippingPhysics.cpp.

References a_m, exp(), log(), and X.

Referenced by crossSection().

Here is the call graph for this function:

void BeamStrippingPhysics::doPhysics ( PartBunchBase< double, 3 > *  bunch)
inline
bool BeamStrippingPhysics::gasStripping ( double &  deltas)
private

Definition at line 493 of file BeamStrippingPhysics.cpp.

References exp(), NCS_total, and r_m.

Referenced by doPhysics().

Here is the call graph for this function:

std::string BeamStrippingPhysics::getName ( )
inlinevirtual
unsigned int BeamStrippingPhysics::getNumEntered ( )
inlinevirtual

Implements ParticleMatterInteractionHandler.

Definition at line 54 of file BeamStrippingPhysics.hh.

References bunchToMatStat_m.

size_t BeamStrippingPhysics::getParticlesInMat ( )
inlinevirtual

Implements ParticleMatterInteractionHandler.

Definition at line 52 of file BeamStrippingPhysics.hh.

References locPartsInMat_m.

unsigned BeamStrippingPhysics::getRediffused ( )
inlinevirtual

Implements ParticleMatterInteractionHandler.

Definition at line 53 of file BeamStrippingPhysics.hh.

References rediffusedStat_m.

double BeamStrippingPhysics::getTime ( )
inlinevirtual

Implements ParticleMatterInteractionHandler.

Definition at line 50 of file BeamStrippingPhysics.hh.

References T_m.

const std::string BeamStrippingPhysics::getType ( ) const
virtual

Implements ParticleMatterInteractionHandler.

Definition at line 106 of file BeamStrippingPhysics.cpp.

bool BeamStrippingPhysics::lorentzStripping ( double &  gamma,
double &  E 
)
private

Definition at line 501 of file BeamStrippingPhysics.cpp.

References Physics::a0, Physics::c, dT_m, exp(), Physics::h_bar, Physics::m_e, Physics::q_e, r_m, and sqrt().

Referenced by doPhysics().

Here is the call graph for this function:

void BeamStrippingPhysics::print ( Inform msg)
virtual

Implements ParticleMatterInteractionHandler.

Definition at line 645 of file BeamStrippingPhysics.cpp.

void BeamStrippingPhysics::secondaryParticles ( PartBunchBase< double, 3 > *  bunch,
size_t &  i,
bool  pdead_LS 
)
private
void BeamStrippingPhysics::setCyclotron ( Cyclotron cycl)
inline

Definition at line 39 of file BeamStrippingPhysics.hh.

References cycl_m.

bool BeamStrippingPhysics::stillActive ( )
virtual

Implements ParticleMatterInteractionHandler.

Definition at line 648 of file BeamStrippingPhysics.cpp.

References locPartsInMat_m.

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

Implements ParticleMatterInteractionHandler.

Definition at line 652 of file BeamStrippingPhysics.cpp.

void BeamStrippingPhysics::transformToH3plus ( PartBunchBase< double, 3 > *  bunch,
size_t &  i 
)
private
void BeamStrippingPhysics::transformToHminus ( PartBunchBase< double, 3 > *  bunch,
size_t &  i 
)
private
void BeamStrippingPhysics::transformToHydrogen ( PartBunchBase< double, 3 > *  bunch,
size_t &  i 
)
private

Definition at line 623 of file BeamStrippingPhysics.cpp.

References endl(), getName(), PartBunchBase< T, Dim >::ID, INFORM_ALL_NODES, level4(), PartBunchBase< T, Dim >::M, Physics::m_h, and PartBunchBase< T, Dim >::Q.

Referenced by secondaryParticles().

Here is the call graph for this function:

void BeamStrippingPhysics::transformToProton ( PartBunchBase< double, 3 > *  bunch,
size_t &  i 
)
private

Member Data Documentation

double BeamStrippingPhysics::a_m = {}
staticprivate

Definition at line 127 of file BeamStrippingPhysics.hh.

Referenced by crossSection(), and csChebyshevFitting().

double BeamStrippingPhysics::b_m = {}
staticprivate

Definition at line 128 of file BeamStrippingPhysics.hh.

Referenced by crossSection(), and csAnalyticFunctionNakai().

BeamStripping* BeamStrippingPhysics::bstp_m
private

Definition at line 83 of file BeamStrippingPhysics.hh.

Referenced by BeamStrippingPhysics(), crossSection(), and doPhysics().

ElementBase::ElementType BeamStrippingPhysics::bstpshape_m
private

Definition at line 84 of file BeamStrippingPhysics.hh.

Referenced by BeamStrippingPhysics().

unsigned BeamStrippingPhysics::bunchToMatStat_m
private

Definition at line 104 of file BeamStrippingPhysics.hh.

Referenced by getNumEntered().

double BeamStrippingPhysics::charge_m
private

Definition at line 92 of file BeamStrippingPhysics.hh.

Referenced by crossSection(), doPhysics(), and secondaryParticles().

const double BeamStrippingPhysics::csCoefDouble_Hminus
staticprivate
Initial value:
= {
{1.40E-02, 1.77E+00, 4.80E-01, 0.00E+00, 0.00E+00, 1.52E+02, 1.52E+00, 0.00E+00, 0.00E+00},
{1.30E-02, 1.90E+00, 6.20E-01, 0.00E+00, 0.00E+00, 5.20E+01, 9.93E-01, 0.00E+00, 0.00E+00},
{1.50E-02, 1.97E+00, 8.90E-01, 0.00E+00, 0.00E+00, 5.10E+01, 9.37E-01, 0.00E+00, 0.00E+00}
}

Definition at line 110 of file BeamStrippingPhysics.hh.

Referenced by crossSection().

const double BeamStrippingPhysics::csCoefDouble_Hminus_Chebyshev
staticprivate
Initial value:
= {
1.00E+03, 1.00E+07, -79.0158996582, -2.1025185585, -1.2407282591, 0.174798578, 0.1062489152, -0.0004342734, -0.0465673618, 0, 0
}

Definition at line 122 of file BeamStrippingPhysics.hh.

Referenced by crossSection().

const double BeamStrippingPhysics::csCoefDouble_Hplus
staticprivate
Initial value:
= {
{2.90E-02, 2.90E-01, 1.50E+00, 1.39E+01, 1.65E+00, 3.94E+01, 5.79E+00, 0.00E+00, 0.00E+00},
{2.20E-02, 2.64E-01, 1.50E+00, 1.40E+01, 1.70E+00, 4.00E+01, 5.80E+00, 0.00E+00, 0.00E+00},
{2.90E-02, 1.40E-01, 1.87E+00, 2.40E+01, 1.60E+00, 3.37E+01, 4.93E+00, 4.50E-01, 2.00E-01}
}

Definition at line 112 of file BeamStrippingPhysics.hh.

Referenced by crossSection().

const double BeamStrippingPhysics::csCoefDouble_Hplus_Chebyshev
staticprivate
Initial value:
= {
200, 1.00E+06, -95.8165, -7.17049, -7.48288, -1.93034, 0.761153, 0.556689, -0.0542859, -0.270184, -0.0147
}

Definition at line 124 of file BeamStrippingPhysics.hh.

Referenced by crossSection().

const double BeamStrippingPhysics::csCoefH3plusProduction_H2plus_Tabata
staticprivate
Initial value:
= {
0.00E+00, 6.05E+00, -5.247E-01, 4.088E-03, 2.872E+00, 7.3E-03, 6.99E+00
}

Definition at line 119 of file BeamStrippingPhysics.hh.

Referenced by crossSection().

const double BeamStrippingPhysics::csCoefHminusProduction_H_Tabata
staticprivate
Initial value:
= {
2.1E-02, 9.73E-03, 2.38E+00, 1.39E-02, -5.51E-01, 7.7E-02, 2.12E+00, 1.97E-06, 2.051E+00, 5.5E+00, 6.62E-01, 2.02E+01, 3.62E+00
}

Definition at line 116 of file BeamStrippingPhysics.hh.

Referenced by crossSection().

const double BeamStrippingPhysics::csCoefHydrogenProduction_H2plus_Chebyshev
staticprivate
Initial value:
= {
2.00E+03, 1.00E+05, -70.670173645, -0.632612288, -0.6065212488, -0.0915143117, -0.0121710282, 0.0168179292, 0.0104796877, 0, 0
}

Definition at line 125 of file BeamStrippingPhysics.hh.

Referenced by crossSection().

const double BeamStrippingPhysics::csCoefProtonProduction_H2plus_Tabata
staticprivate
Initial value:
= {
5.0E-03, 6.34E+01, 1.78E+00, 1.38E-03, 4.06E-01, 1.63E-01, 3.27E-01, 1.554E+01, 3.903E+00, 1.735, 1.02E+01
}

Definition at line 118 of file BeamStrippingPhysics.hh.

Referenced by crossSection().

const double BeamStrippingPhysics::csCoefProtonProduction_H_Tabata
staticprivate
Initial value:
= {
2.0E-02, 2.53E-04, 1.728E+00, 2.164E+00, 7.74E-01, 1.639E+00, 1.43E+01, 0, 0
}

Definition at line 117 of file BeamStrippingPhysics.hh.

Referenced by crossSection().

const double BeamStrippingPhysics::csCoefSingle_Hminus
staticprivate
Initial value:
= {
{7.50E-04, 4.38E+02, 7.28E-01, 8.40E-01, 2.82E-01, 4.10E+01, 1.37E+00, 0.00E+00, 0.00E+00},
{-2.00E-04, 3.45E+02, 4.80E-01, 5.30E-02, 8.40E-02, 1.00E+01, 9.67E-01, 0.00E+00, 0.00E+00},
{1.70E-3, 2.47E+01, 3.36E-01, 7.00E+01, 5.00E-01, 9.90E+01, 7.80E-01, 0.00E+00, 0.00E+00}
}

Definition at line 109 of file BeamStrippingPhysics.hh.

Referenced by crossSection().

const double BeamStrippingPhysics::csCoefSingle_Hminus_Chebyshev
staticprivate
Initial value:
= {
2.3, 1.7E+07, -73.1505813599, -1.7569509745, -2.0016760826, -0.1902804971, 0.0171353221, 0.1270833164, -0.1523126215, 0, 0
}

Definition at line 121 of file BeamStrippingPhysics.hh.

Referenced by crossSection().

const double BeamStrippingPhysics::csCoefSingle_Hplus
staticprivate
Initial value:
= {
{2.00E-03, 1.93E+03, 1.64E+00, 1.98E+00, 6.69E-01, 2.19E+01, 4.15E+00, 3.23E-04, 1.00E+01},
{-1.50E-03, 3.86E+05, 1.60E+00, 6.93E-02, 3.28E-01, 7.86E+00, 3.92E+00, 3.20E-04, 1.00E+01},
{2.18E-03, 1.61E+04, 2.12E+00, 1.16E+00, 4.44E-01, 1.39E+01, 4.07E+00, 2.99E-04, 1.45E+01}
}

Definition at line 111 of file BeamStrippingPhysics.hh.

Referenced by crossSection().

const double BeamStrippingPhysics::csCoefSingle_Hplus_Chebyshev
staticprivate
Initial value:
= {
2.6E+00, 4.00E+06, -82.5164, -6.70755, -6.10977, -2.6281, 0.709759, 0.639033, 0.10298, 0.26124, -0.263817
}

Definition at line 123 of file BeamStrippingPhysics.hh.

Referenced by crossSection().

const double BeamStrippingPhysics::csCoefSingleCapt_H
staticprivate
Initial value:
= {
{1.48E-02, 1.15E+00, 1.18E+00, 1.15E+01, 1.19E+00, 3.88E+01, 3.38E+00, 1.00E-01, 2.82E-02},
{1.13E-02, 3.26E+00, 1.02E+00, 2.99E+00, 4.50E-01, 1.90E+01, 3.42E+00, 0.00E+00, 0.00E+00},
{1.50E-02, 1.24E+03, 3.38E+00, 2.46E+00, 5.20E-01, 7.00E+00, 2.56E+00, 9.10E-02, 1.95E-02}
}

Definition at line 114 of file BeamStrippingPhysics.hh.

Referenced by crossSection().

const double BeamStrippingPhysics::csCoefSingleLoss_H
staticprivate
Initial value:
= {
{1.36E-02, 2.59E+03, 1.78E+00, 2.69E-01, -3.52E-01, 5.60E+00, 8.99E-01, 0.00E+00, 0.00E+00},
{1.36E-02, 3.29E+03, 1.85E+00, 2.89E-01, -2.72E-01, 8.20E+00, 1.09E+00, 0.00E+00, 0.00E+00},
{1.36E-02, 1.16E+12, 7.40E+00, 5.36E-01, -5.42E-01, 1.23E+00, 7.26E-01, 0.00E+00, 0.00E+00}
}

Definition at line 113 of file BeamStrippingPhysics.hh.

Referenced by crossSection().

Cyclotron* BeamStrippingPhysics::cycl_m
private

Definition at line 82 of file BeamStrippingPhysics.hh.

Referenced by doPhysics(), and setCyclotron().

double BeamStrippingPhysics::dT_m
private

s

Definition at line 89 of file BeamStrippingPhysics.hh.

Referenced by apply(), doPhysics(), and lorentzStripping().

std::string BeamStrippingPhysics::gas_m
private

Definition at line 94 of file BeamStrippingPhysics.hh.

Referenced by BeamStrippingPhysics(), and crossSection().

size_t BeamStrippingPhysics::locPartsInMat_m
private

Definition at line 107 of file BeamStrippingPhysics.hh.

Referenced by getParticlesInMat(), and stillActive().

std::unique_ptr<LossDataSink> BeamStrippingPhysics::lossDs_m
private

Definition at line 97 of file BeamStrippingPhysics.hh.

Referenced by BeamStrippingPhysics(), doPhysics(), and ~BeamStrippingPhysics().

double BeamStrippingPhysics::mass_m
private

s

Definition at line 91 of file BeamStrippingPhysics.hh.

Referenced by crossSection(), doPhysics(), and secondaryParticles().

double BeamStrippingPhysics::NCS_a
private

Definition at line 99 of file BeamStrippingPhysics.hh.

Referenced by crossSection(), and secondaryParticles().

double BeamStrippingPhysics::NCS_b
private

Definition at line 100 of file BeamStrippingPhysics.hh.

Referenced by crossSection(), and secondaryParticles().

double BeamStrippingPhysics::NCS_c
private

Definition at line 101 of file BeamStrippingPhysics.hh.

Referenced by crossSection(), and secondaryParticles().

double BeamStrippingPhysics::NCS_total
private

Definition at line 102 of file BeamStrippingPhysics.hh.

Referenced by crossSection(), gasStripping(), and secondaryParticles().

double BeamStrippingPhysics::pressure_m
private

Definition at line 95 of file BeamStrippingPhysics.hh.

Referenced by crossSection(), and doPhysics().

gsl_rng* BeamStrippingPhysics::r_m
private
unsigned BeamStrippingPhysics::rediffusedStat_m
private

Definition at line 106 of file BeamStrippingPhysics.hh.

Referenced by getRediffused().

unsigned BeamStrippingPhysics::stoppedPartStat_m
private

Definition at line 105 of file BeamStrippingPhysics.hh.

Referenced by doPhysics().

double BeamStrippingPhysics::T_m
private

Definition at line 88 of file BeamStrippingPhysics.hh.

Referenced by doPhysics(), and getTime().


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