Project
Loading...
Searching...
No Matches
o2::tpc::AnalyticalFields< DataT > Class Template Reference

#include <SpaceChargeHelpers.h>

Public Member Functions

 AnalyticalFields (const o2::tpc::Side side=o2::tpc::Side::A)
 
o2::tpc::Side getSide () const
 
void setSide (const o2::tpc::Side side)
 
void setParameters (const DataT parA, const DataT parB, const DataT parC)
 sets the parameters
 
DataT getParA () const
 return parameter A
 
DataT getParB () const
 return parameter B
 
DataT getParC () const
 return parameter C
 
DataT evalFieldR (DataT z, DataT r, DataT phi) const
 
DataT evalFieldZ (DataT z, DataT r, DataT phi) const
 
DataT evalFieldPhi (DataT z, DataT r, DataT phi) const
 
DataT evalPotential (DataT z, DataT r, DataT phi) const
 
DataT evalDensity (DataT z, DataT r, DataT phi) const
 

Static Public Member Functions

static constexpr unsigned int getID ()
 

Public Attributes

std::function< DataT(DataT, DataT, DataT)> mPotentialFunc
 analytical potential
 
std::function< DataT(DataT, DataT, DataT)> mDensityFunc
 analytical space charge - NOTE: if the space charge density is calculated analytical there would be a - sign in the formula (-mParA) - however since its an e- the sign is flipped (IS THIS CORRECT??? see for minus sign: AliTPCSpaceCharge3DCalc::SetPotentialBoundaryAndChargeFormula)-
 
std::function< DataT(DataT, DataT, DataT)> mErFunc
 analytical electric field Er
 
std::function< DataT(DataT, DataT, DataT)> mEphiFunc
 analytical electric field Ephi
 
std::function< DataT(DataT, DataT, DataT)> mEzFunc
 analytical electric field Ez
 

Detailed Description

template<typename DataT = double>
class o2::tpc::AnalyticalFields< DataT >

this class contains an analytical description of the space charge, potential and the electric fields. The analytical functions can be used to test the poisson solver and the caluclation of distortions/corrections.

Definition at line 66 of file SpaceChargeHelpers.h.

Constructor & Destructor Documentation

◆ AnalyticalFields()

template<typename DataT = double>
o2::tpc::AnalyticalFields< DataT >::AnalyticalFields ( const o2::tpc::Side  side = o2::tpc::Side::A)
inline

Definition at line 69 of file SpaceChargeHelpers.h.

Member Function Documentation

◆ evalDensity()

template<typename DataT = double>
DataT o2::tpc::AnalyticalFields< DataT >::evalDensity ( DataT  z,
DataT  r,
DataT  phi 
) const
inline
Parameters
rr coordinate
phiphi coordinate
zz coordinate
Returns
returns the function value for the space charge density for given coordinate

Definition at line 120 of file SpaceChargeHelpers.h.

◆ evalFieldPhi()

template<typename DataT = double>
DataT o2::tpc::AnalyticalFields< DataT >::evalFieldPhi ( DataT  z,
DataT  r,
DataT  phi 
) const
inline
Parameters
rr coordinate
phiphi coordinate
zz coordinate
Returns
returns the function value for electric field Ephi for given coordinate

Definition at line 108 of file SpaceChargeHelpers.h.

◆ evalFieldR()

template<typename DataT = double>
DataT o2::tpc::AnalyticalFields< DataT >::evalFieldR ( DataT  z,
DataT  r,
DataT  phi 
) const
inline
Parameters
rr coordinate
phiphi coordinate
zz coordinate
Returns
returns the function value for electric field Er for given coordinate

Definition at line 96 of file SpaceChargeHelpers.h.

◆ evalFieldZ()

template<typename DataT = double>
DataT o2::tpc::AnalyticalFields< DataT >::evalFieldZ ( DataT  z,
DataT  r,
DataT  phi 
) const
inline
Parameters
rr coordinate
phiphi coordinate
zz coordinate
Returns
returns the function value for electric field Ez for given coordinate

Definition at line 102 of file SpaceChargeHelpers.h.

◆ evalPotential()

template<typename DataT = double>
DataT o2::tpc::AnalyticalFields< DataT >::evalPotential ( DataT  z,
DataT  r,
DataT  phi 
) const
inline
Parameters
rr coordinate
phiphi coordinate
zz coordinate
Returns
returns the function value for the potential for given coordinate

Definition at line 114 of file SpaceChargeHelpers.h.

◆ getID()

template<typename DataT = double>
static constexpr unsigned int o2::tpc::AnalyticalFields< DataT >::getID ( )
inlinestaticconstexpr

Definition at line 154 of file SpaceChargeHelpers.h.

◆ getParA()

template<typename DataT = double>
DataT o2::tpc::AnalyticalFields< DataT >::getParA ( ) const
inline

return parameter A

Definition at line 84 of file SpaceChargeHelpers.h.

◆ getParB()

template<typename DataT = double>
DataT o2::tpc::AnalyticalFields< DataT >::getParB ( ) const
inline

return parameter B

Definition at line 87 of file SpaceChargeHelpers.h.

◆ getParC()

template<typename DataT = double>
DataT o2::tpc::AnalyticalFields< DataT >::getParC ( ) const
inline

return parameter C

Definition at line 90 of file SpaceChargeHelpers.h.

◆ getSide()

template<typename DataT = double>
o2::tpc::Side o2::tpc::AnalyticalFields< DataT >::getSide ( ) const
inline

Definition at line 71 of file SpaceChargeHelpers.h.

◆ setParameters()

template<typename DataT = double>
void o2::tpc::AnalyticalFields< DataT >::setParameters ( const DataT  parA,
const DataT  parB,
const DataT  parC 
)
inline

sets the parameters

Definition at line 76 of file SpaceChargeHelpers.h.

◆ setSide()

template<typename DataT = double>
void o2::tpc::AnalyticalFields< DataT >::setSide ( const o2::tpc::Side  side)
inline

Definition at line 73 of file SpaceChargeHelpers.h.

Member Data Documentation

◆ mDensityFunc

template<typename DataT = double>
std::function<DataT(DataT, DataT, DataT)> o2::tpc::AnalyticalFields< DataT >::mDensityFunc
Initial value:
= [& mParA = mParA, &mParB = mParB, &mParC = mParC](const DataT z, const DataT r, const DataT phi) {
const DataT zz = std::abs(z);
return mParA * ((1 / r * 16 * (-3311250 + 90995.5 * r - 570.375 * r * r + r * r * r)) * std::cos(mParB * phi) * std::cos(mParB * phi) * std::exp(-1 * mParC * (zz - 125) * (zz - 125)) +
(std::pow(-r + 254.5 + 83.5, 4) - 338.0 * std::pow(-r + 254.5 + 83.5, 3) + 21250.75 * std::pow(-r + 254.5 + 83.5, 2)) / (r * r) * std::exp(-1 * mParC * (zz - 125) * (zz - 125)) * -2 * mParB * mParB * std::cos(2 * mParB * phi) +
(std::pow(-r + 254.5 + 83.5, 4) - 338.0 * std::pow(-r + 254.5 + 83.5, 3) + 21250.75 * std::pow(-r + 254.5 + 83.5, 2)) * std::cos(mParB * phi) * std::cos(mParB * phi) * 2 * mParC * std::exp(-1 * mParC * (zz - 125) * (zz - 125)) * (2 * mParC * (zz - 125) * (zz - 125) - 1));
}
GLboolean r
Definition glcorearb.h:1233
GLdouble GLdouble GLdouble z
Definition glcorearb.h:843

analytical space charge - NOTE: if the space charge density is calculated analytical there would be a - sign in the formula (-mParA) - however since its an e- the sign is flipped (IS THIS CORRECT??? see for minus sign: AliTPCSpaceCharge3DCalc::SetPotentialBoundaryAndChargeFormula)-

Definition at line 129 of file SpaceChargeHelpers.h.

◆ mEphiFunc

template<typename DataT = double>
std::function<DataT(DataT, DataT, DataT)> o2::tpc::AnalyticalFields< DataT >::mEphiFunc
Initial value:
= [& mParA = mParA, &mParB = mParB, &mParC = mParC](const DataT z, const DataT r, const DataT phi) {
const DataT zz = std::abs(z);
return mParA * (std::pow(-r + 254.5 + 83.5, 4) - 338.0 * std::pow(-r + 254.5 + 83.5, 3) + 21250.75 * (-r + 254.5 + 83.5) * (-r + 254.5 + 83.5)) / r * std::exp(-1 * mParC * (zz - 125) * (zz - 125)) * -mParB * std::sin(2 * mParB * phi);
}

analytical electric field Ephi

Definition at line 143 of file SpaceChargeHelpers.h.

◆ mErFunc

template<typename DataT = double>
std::function<DataT(DataT, DataT, DataT)> o2::tpc::AnalyticalFields< DataT >::mErFunc
Initial value:
= [& mParA = mParA, &mParB = mParB, &mParC = mParC](const DataT z, const DataT r, const DataT phi) {
const DataT zz = std::abs(z);
return mParA * 4 * (r * r * r - 760.5 * r * r + 181991 * r - 1.3245 * std::pow(10, 7)) * std::cos(mParB * phi) * std::cos(mParB * phi) * std::exp(-1 * mParC * (zz - 125) * (zz - 125));
}

analytical electric field Er

Definition at line 137 of file SpaceChargeHelpers.h.

◆ mEzFunc

template<typename DataT = double>
std::function<DataT(DataT, DataT, DataT)> o2::tpc::AnalyticalFields< DataT >::mEzFunc
Initial value:
= [& mParA = mParA, &mParB = mParB, &mParC = mParC](const DataT z, const DataT r, const DataT phi) {
const DataT zz = std::abs(z);
return mParA * (std::pow(-r + 254.5 + 83.5, 4) - 338.0 * std::pow(-r + 254.5 + 83.5, 3) + 21250.75 * (-r + 254.5 + 83.5) * (-r + 254.5 + 83.5)) * std::cos(mParB * phi) * std::cos(mParB * phi) * -2 * mParC * (zz - 125) * std::exp(-1 * mParC * (zz - 125) * (zz - 125));
}

analytical electric field Ez

Definition at line 149 of file SpaceChargeHelpers.h.

◆ mPotentialFunc

template<typename DataT = double>
std::function<DataT(DataT, DataT, DataT)> o2::tpc::AnalyticalFields< DataT >::mPotentialFunc
Initial value:
= [& mParA = mParA, &mParB = mParB, &mParC = mParC](const DataT z, const DataT r, const DataT phi) {
const DataT zz = std::abs(z);
return -mParA * (std::pow((-r + 254.5 + 83.5), 4) - 338.0 * std::pow((-r + 254.5 + 83.5), 3) + 21250.75 * std::pow((-r + 254.5 + 83.5), 2)) * std::cos(mParB * phi) * std::cos(mParB * phi) * std::exp(-1 * mParC * (zz - 125) * (zz - 125));
}

analytical potential

Definition at line 123 of file SpaceChargeHelpers.h.


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