EIC Software
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
AnnularFieldSim Class Reference

#include <fun4all_coresoftware/blob/master/calibrations/tpc/generator/AnnularFieldSim.h>

+ Collaboration diagram for AnnularFieldSim:

Public Types

enum  BoundsCase { InBounds, OnHighEdge, OnLowEdge, OutOfBounds }
 
enum  LookupCase {
  Full3D, HybridRes, PhiSlice, Analytic,
  NoLookup
}
 
enum  ChargeCase { FromFile, AnalyticSpacecharge, NoSpacecharge }
 

Public Member Functions

 AnnularFieldSim (float rmin, float rmax, float dz, int r, int phi, int z, float vdr)
 
 AnnularFieldSim (float rin, float rout, float dz, int r, int roi_r0, int roi_r1, int phi, int roi_phi0, int roi_phi1, int z, int roi_z0, int roi_z1, float vdr, LookupCase in_lookupCase=PhiSlice)
 
 AnnularFieldSim (float in_innerRadius, float in_outerRadius, float in_outerZ, int r, int roi_r0, int roi_r1, int in_rLowSpacing, int in_rHighSize, int phi, int roi_phi0, int roi_phi1, int in_phiLowSpacing, int in_phiHighSize, int z, int roi_z0, int roi_z1, int in_zLowSpacing, int in_zHighSize, float vdr, LookupCase in_lookupCase)
 
 AnnularFieldSim (float in_innerRadius, float in_outerRadius, float in_outerZ, int r, int roi_r0, int roi_r1, int in_rLowSpacing, int in_rHighSize, int phi, int roi_phi0, int roi_phi1, int in_phiLowSpacing, int in_phiHighSize, int z, int roi_z0, int roi_z1, int in_zLowSpacing, int in_zHighSize, float vdr, LookupCase in_lookupCase, ChargeCase in_chargeCase)
 
void UpdateEveryN (int n)
 
bool debugFlag ()
 
void SetDistortionScaleRPZ (float a, float b, float c)
 
void SetTruncationDistance (int x)
 
const char * GetLookupString ()
 
const char * GetGasString ()
 
const char * GetFieldString ()
 
const char * GetChargeString ()
 
float GetNominalB ()
 
float GetNominalE ()
 
float GetChargeAt (TVector3 pos)
 
TVector3 GetFieldAt (TVector3 pos)
 
TVector3 GetBFieldAt (TVector3 pos)
 
TVector3 GetFieldStep ()
 
int GetFieldStepsR ()
 
int GetFieldStepsPhi ()
 
int GetFieldStepsZ ()
 
TVector3 GetInnerEdge ()
 
TVector3 GetOuterEdge ()
 
void GenerateDistortionMaps (const char *filebase, int r_subsamples=1, int p_subsamples=1, int z_subsamples=1, int z_substeps=1, bool andCartesian=false)
 
void GenerateSeparateDistortionMaps (const char *filebase, int r_subsamples=1, int p_subsamples=1, int z_subsamples=1, int z_substeps=1, bool andCartesian=false)
 
void PlotFieldSlices (const std::string &filebase, TVector3 pos, char which= 'E')
 
void load_spacecharge (const std::string &filename, const std::string &histname, float zoffset=0, float chargescale=1, float cmscale=1, bool isChargeDensity=true)
 
void load_spacecharge (TH3F *hist, float zoffset, float chargescale, float cmscale, bool isChargeDensity)
 
void load_and_resample_spacecharge (int new_nphi, int new_nr, int new_nz, const std::string &filename, const std::string &histname, float zoffset, float chargescale, float cmscale, bool isChargeDensity)
 
void load_and_resample_spacecharge (int new_nphi, int new_nr, int new_nz, TH3F *hist, float zoffset, float chargescale, float cmscale, bool isChargeDensity)
 
void load_analytic_spacecharge (float scalefactor)
 
void add_testcharge (float r, float phi, float z, float coulombs)
 
void setNominalB (float x)
 
void setNominalE (float x)
 
void setFlatFields (float B, float E)
 
void loadEfield (const std::string &filename, const std::string &treename, int zsign=1)
 
void loadBfield (const std::string &filename, const std::string &treename)
 
void load3dBfield (const std::string &filename, const std::string &treename, int zsign=1, float scale=1.0)
 
void loadField (MultiArray< TVector3 > **field, TTree *source, float *rptr, float *phiptr, float *zptr, float *frptr, float *fphiptr, float *fzptr, float fieldunit, int zsign)
 
void load_rossegger (double epsilon=1E-4)
 
void borrow_rossegger (Rossegger *ross, float zshift)
 
void borrow_epartial_from (AnnularFieldSim *sim, float zshift)
 
void set_twin (AnnularFieldSim *sim)
 
TVector3 calc_unit_field (TVector3 at, TVector3 from)
 
TVector3 analyticFieldIntegral (float zdest, TVector3 start)
 
TVector3 analyticFieldIntegral (float zdest, TVector3 start, MultiArray< TVector3 > *field)
 
TVector3 interpolatedFieldIntegral (float zdest, TVector3 start)
 
TVector3 interpolatedFieldIntegral (float zdest, TVector3 start, MultiArray< TVector3 > *field)
 
double FilterPhiPos (double phi)
 
int FilterPhiIndex (int phi, int range)
 
TVector3 GetCellCenter (int r, int phi, int z)
 
TVector3 GetRoiCellCenter (int r, int phi, int z)
 
TVector3 GetGroupCellCenter (int r0, int r1, int phi0, int phi1, int z0, int z1)
 
TVector3 GetWeightedCellCenter (int r, int phi, int z)
 
TVector3 fieldIntegral (float zdest, TVector3 start, MultiArray< TVector3 > *field)
 
void populate_fieldmap ()
 
void populate_lookup ()
 
void populate_full3d_lookup ()
 
void populate_highres_lookup ()
 
void populate_lowres_lookup ()
 
void populate_phislice_lookup ()
 
void load_phislice_lookup (const char *sourcefile)
 
void save_phislice_lookup (const char *destfile)
 
TVector3 sum_field_at (int r, int phi, int z)
 
TVector3 sum_full3d_field_at (int r, int phi, int z)
 
TVector3 sum_local_field_at (int r, int phi, int z)
 
TVector3 sum_nonlocal_field_at (int r, int phi, int z)
 
TVector3 sum_phislice_field_at (int r, int phi, int z)
 
TVector3 swimToInAnalyticSteps (float zdest, TVector3 start, int steps, int *goodToStep)
 
TVector3 swimToInSteps (float zdest, TVector3 start, int steps, bool interpolate, int *goodToStep)
 
TVector3 swimTo (float zdest, TVector3 start, bool interpolate=true, bool useAnalytic=false)
 
TVector3 GetStepDistortion (float zdest, TVector3 start, bool interpolate=true, bool useAnalytic=false)
 
TVector3 GetTotalDistortion (float zdest, TVector3 start, int nsteps, bool interpolate=true, int *goodToStep=0)
 

Public Attributes

int debug_printActionEveryN
 
int debug_npercent
 
int debug_printCounter
 
TVector3 debug_distortionScale
 
AnalyticFieldModelaliceModel = nullptr
 
AnnularFieldSimtwin = nullptr
 
bool hasTwin = false
 
TVector3 zero_vector
 
double vdrift = NAN
 
double langevin_T1 = NAN
 
double langevin_T2 = NAN
 
double omegatau_nominal = NAN
 
std::string fieldstring
 
std::string Bfieldname
 
std::string Efieldname
 
std::string chargefilename
 
char chargestring [300] = {0}
 
float Enominal = NAN
 
float Bnominal
 
float phispan
 
float rmin
 
float rmax
 
float zmin
 
float zmax
 
TVector3 dim
 
Rosseggergreen
 
float green_shift
 
int nr
 
int nphi
 
int nz
 
TVector3 step
 
LookupCase lookupCase
 
ChargeCase chargeCase
 
int truncation_length
 
int rmin_roi
 
int phimin_roi
 
int zmin_roi
 
int rmax_roi
 
int phimax_roi
 
int zmax_roi
 
int nr_roi
 
int nphi_roi
 
int nz_roi
 
int nr_high = -1
 
int nphi_high = -1
 
int nz_high = -1
 
int r_spacing = -1
 
int phi_spacing = -1
 
int z_spacing = -1
 
int nr_low = -1
 
int nphi_low = -1
 
int nz_low = -1
 
int rmin_roi_low = -1
 
int phimin_roi_low = -1
 
int zmin_roi_low = -1
 
int rmax_roi_low = -1
 
int phimax_roi_low = -1
 
int zmax_roi_low = -1
 
int nr_roi_low = -1
 
int nphi_roi_low = -1
 
int nz_roi_low = -1
 
MultiArray< TVector3 > * Efield
 
MultiArray< TVector3 > * Epartial_highres
 
MultiArray< TVector3 > * Epartial_lowres
 
MultiArray< TVector3 > * Epartial
 
MultiArray< TVector3 > * Epartial_phislice
 
MultiArray< TVector3 > * Eexternal
 
MultiArray< TVector3 > * Bfield
 
MultiArray< double > * q
 
MultiArray< double > * q_local
 
MultiArray< double > * q_lowres
 

Private Member Functions

BoundsCase GetRindexAndCheckBounds (float pos, int *r)
 
BoundsCase GetPhiIndexAndCheckBounds (float pos, int *phi)
 
BoundsCase GetZindexAndCheckBounds (float pos, int *z)
 
int GetRindex (float pos)
 
int GetPhiIndex (float pos)
 
int GetZindex (float pos)
 
void UpdateOmegaTau ()
 

Private Attributes

const float cm = 1
 
const float m = 100 * cm
 
const float mm = cm / 10
 
const float um = mm / 1e3
 
const float C = 1
 
const float nC = C / 1e9
 
const float fC = C / 1e15
 
const float s = 1
 
const float us = s / 1e6
 
const float ns = s / 1e9
 
const float V = 1
 
const float Tesla = V * s / m / m
 
const float kGauss = Tesla / 10
 
const float eps0 = 8.854e-12 * (C / V) / m
 
const float epsinv = 1 / eps0
 
const float k_perm = 1 / (4 * 3.1416 * eps0)
 

Detailed Description

Definition at line 19 of file AnnularFieldSim.h.

View newest version in sPHENIX GitHub at line 19 of file AnnularFieldSim.h

Member Enumeration Documentation

Enumerator:
InBounds 
OnHighEdge 
OnLowEdge 
OutOfBounds 

Definition at line 46 of file AnnularFieldSim.h.

View newest version in sPHENIX GitHub at line 46 of file AnnularFieldSim.h

Enumerator:
FromFile 
AnalyticSpacecharge 
NoSpacecharge 

Definition at line 67 of file AnnularFieldSim.h.

View newest version in sPHENIX GitHub at line 67 of file AnnularFieldSim.h

Enumerator:
Full3D 
HybridRes 
PhiSlice 
Analytic 
NoLookup 

Definition at line 53 of file AnnularFieldSim.h.

View newest version in sPHENIX GitHub at line 53 of file AnnularFieldSim.h

Constructor & Destructor Documentation

AnnularFieldSim::AnnularFieldSim ( float  rmin,
float  rmax,
float  dz,
int  r,
int  phi,
int  z,
float  vdr 
)

Definition at line 268 of file AnnularFieldSim.cc.

View newest version in sPHENIX GitHub at line 268 of file AnnularFieldSim.cc

References printf().

+ Here is the call graph for this function:

AnnularFieldSim::AnnularFieldSim ( float  rin,
float  rout,
float  dz,
int  r,
int  roi_r0,
int  roi_r1,
int  phi,
int  roi_phi0,
int  roi_phi1,
int  z,
int  roi_z0,
int  roi_z1,
float  vdr,
LookupCase  in_lookupCase = PhiSlice 
)

Definition at line 252 of file AnnularFieldSim.cc.

View newest version in sPHENIX GitHub at line 252 of file AnnularFieldSim.cc

References printf().

+ Here is the call graph for this function:

AnnularFieldSim::AnnularFieldSim ( float  in_innerRadius,
float  in_outerRadius,
float  in_outerZ,
int  r,
int  roi_r0,
int  roi_r1,
int  in_rLowSpacing,
int  in_rHighSize,
int  phi,
int  roi_phi0,
int  roi_phi1,
int  in_phiLowSpacing,
int  in_phiHighSize,
int  z,
int  roi_z0,
int  roi_z1,
int  in_zLowSpacing,
int  in_zHighSize,
float  vdr,
LookupCase  in_lookupCase 
)

Definition at line 238 of file AnnularFieldSim.cc.

View newest version in sPHENIX GitHub at line 238 of file AnnularFieldSim.cc

References printf().

+ Here is the call graph for this function:

AnnularFieldSim::AnnularFieldSim ( float  in_innerRadius,
float  in_outerRadius,
float  in_outerZ,
int  r,
int  roi_r0,
int  roi_r1,
int  in_rLowSpacing,
int  in_rHighSize,
int  phi,
int  roi_phi0,
int  roi_phi1,
int  in_phiLowSpacing,
int  in_phiHighSize,
int  z,
int  roi_z0,
int  roi_z1,
int  in_zLowSpacing,
int  in_zHighSize,
float  vdr,
LookupCase  in_lookupCase,
ChargeCase  in_chargeCase 
)

Member Function Documentation

void AnnularFieldSim::add_testcharge ( float  r,
float  phi,
float  z,
float  coulombs 
)

Definition at line 1322 of file AnnularFieldSim.cc.

View newest version in sPHENIX GitHub at line 1322 of file AnnularFieldSim.cc

References MultiArray< T >::Add(), C, GetPhiIndexAndCheckBounds(), GetRindexAndCheckBounds(), GetZindexAndCheckBounds(), HybridRes, lookupCase, printf(), q, and Acts::Test::rb.

+ Here is the call graph for this function:

TVector3 AnnularFieldSim::analyticFieldIntegral ( float  zdest,
TVector3  start 
)
inline

Definition at line 294 of file AnnularFieldSim.h.

View newest version in sPHENIX GitHub at line 294 of file AnnularFieldSim.h

References analyticFieldIntegral(), and Efield.

Referenced by analyticFieldIntegral(), and GetStepDistortion().

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

TVector3 AnnularFieldSim::analyticFieldIntegral ( float  zdest,
TVector3  start,
MultiArray< TVector3 > *  field 
)

Definition at line 483 of file AnnularFieldSim.cc.

View newest version in sPHENIX GitHub at line 483 of file AnnularFieldSim.cc

References aliceModel, Bfield, Eexternal, Efield, AnalyticFieldModel::Eint(), MultiArray< T >::Get(), GetPhiIndexAndCheckBounds(), GetRindexAndCheckBounds(), GetZindexAndCheckBounds(), InBounds, interpolatedFieldIntegral(), OnHighEdge, phi, phimin_roi, printf(), rmin_roi, start(), and zmin_roi.

+ Here is the call graph for this function:

void AnnularFieldSim::borrow_epartial_from ( AnnularFieldSim sim,
float  zshift 
)
inline

Definition at line 280 of file AnnularFieldSim.h.

View newest version in sPHENIX GitHub at line 280 of file AnnularFieldSim.h

References Epartial_phislice, and green_shift.

Referenced by SetupDefaultSphenixTpc(), and SetupDigitalCurrentSphenixTpc().

+ Here is the caller graph for this function:

void AnnularFieldSim::borrow_rossegger ( Rossegger ross,
float  zshift 
)
inline

Definition at line 274 of file AnnularFieldSim.h.

View newest version in sPHENIX GitHub at line 274 of file AnnularFieldSim.h

References green, and green_shift.

Referenced by SetupDefaultSphenixTpc(), and SetupDigitalCurrentSphenixTpc().

+ Here is the caller graph for this function:

TVector3 AnnularFieldSim::calc_unit_field ( TVector3  at,
TVector3  from 
)

Definition at line 280 of file AnnularFieldSim.cc.

View newest version in sPHENIX GitHub at line 280 of file AnnularFieldSim.cc

References kdfinder::abs(), ALMOST_ZERO, Rossegger::Ephi(), epsinv, Rossegger::Er(), Rossegger::Ez(), FilterPhiPos(), GetRindexAndCheckBounds(), green, green_shift, InBounds, k_perm, and printf().

Referenced by populate_full3d_lookup(), populate_highres_lookup(), populate_lowres_lookup(), and populate_phislice_lookup().

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

bool AnnularFieldSim::debugFlag ( )
inline

Definition at line 198 of file AnnularFieldSim.h.

View newest version in sPHENIX GitHub at line 198 of file AnnularFieldSim.h

References debug_printActionEveryN, and debug_printCounter.

Referenced by sum_field_at().

+ Here is the caller graph for this function:

TVector3 AnnularFieldSim::fieldIntegral ( float  zdest,
TVector3  start,
MultiArray< TVector3 > *  field 
)

Definition at line 550 of file AnnularFieldSim.cc.

View newest version in sPHENIX GitHub at line 550 of file AnnularFieldSim.cc

References ALMOST_ZERO, MultiArray< T >::Get(), GetPhiIndexAndCheckBounds(), GetRindexAndCheckBounds(), GetZindexAndCheckBounds(), InBounds, OnHighEdge, phi, phimin_roi, printf(), rmin_roi, start(), step, and zmin_roi.

Referenced by GetStepDistortion().

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

int AnnularFieldSim::FilterPhiIndex ( int  phi,
int  range = -1 
)

Definition at line 351 of file AnnularFieldSim.cc.

View newest version in sPHENIX GitHub at line 351 of file AnnularFieldSim.cc

References nphi, p, phi, and printf().

Referenced by GetPhiIndex(), GetPhiIndexAndCheckBounds(), interpolatedFieldIntegral(), populate_highres_lookup(), sum_local_field_at(), sum_nonlocal_field_at(), and sum_phislice_field_at().

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

double AnnularFieldSim::FilterPhiPos ( double  phi)

Definition at line 338 of file AnnularFieldSim.cc.

View newest version in sPHENIX GitHub at line 338 of file AnnularFieldSim.cc

References M_PI, p, phi, and phispan.

Referenced by calc_unit_field(), GenerateDistortionMaps(), GenerateSeparateDistortionMaps(), and loadField().

+ Here is the caller graph for this function:

void AnnularFieldSim::GenerateDistortionMaps ( const char *  filebase,
int  r_subsamples = 1,
int  p_subsamples = 1,
int  z_subsamples = 1,
int  z_substeps = 1,
bool  andCartesian = false 
)

Definition at line 3177 of file AnnularFieldSim.cc.

View newest version in sPHENIX GitHub at line 3177 of file AnnularFieldSim.cc

References KF_timing::ax, c, debug_distortionScale, debug_npercent, FilterPhiPos(), GetChargeString(), GetFieldStepsPhi(), GetFieldStepsR(), GetFieldStepsZ(), GetFieldString(), GetGasString(), GetLookupString(), GetRoiCellCenter(), GetTotalDistortion(), hasTwin, ip(), ir(), nphi, nr, nz, phimax_roi, phimin_roi, pos(), printf(), rmax_roi, rmin_roi, s, step, twin, zmax_roi, zmin, and zmin_roi.

+ Here is the call graph for this function:

void AnnularFieldSim::GenerateSeparateDistortionMaps ( const char *  filebase,
int  r_subsamples = 1,
int  p_subsamples = 1,
int  z_subsamples = 1,
int  z_substeps = 1,
bool  andCartesian = false 
)

Definition at line 2674 of file AnnularFieldSim.cc.

View newest version in sPHENIX GitHub at line 2674 of file AnnularFieldSim.cc

References KF_timing::ax, c, debug_distortionScale, debug_npercent, FilterPhiPos(), GetChargeString(), GetFieldStepsPhi(), GetFieldStepsR(), GetFieldStepsZ(), GetFieldString(), GetGasString(), GetLookupString(), GetRoiCellCenter(), GetTotalDistortion(), hasTwin, ip(), ir(), nphi, nr, nz, phimax_roi, phimin_roi, pos(), printf(), rmax_roi, rmin_roi, s, step, twin, zmax_roi, zmin, and zmin_roi.

Referenced by generate_distortion_map().

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

TVector3 AnnularFieldSim::GetBFieldAt ( TVector3  pos)

Definition at line 3883 of file AnnularFieldSim.cc.

View newest version in sPHENIX GitHub at line 3883 of file AnnularFieldSim.cc

References Bfield, MultiArray< T >::Get(), GetBFieldAt(), GetPhiIndexAndCheckBounds(), GetRindexAndCheckBounds(), GetZindexAndCheckBounds(), hasTwin, p, twin, z, and zero_vector.

Referenced by GetBFieldAt(), and PlotFieldSlices().

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

TVector3 AnnularFieldSim::GetCellCenter ( int  r,
int  phi,
int  z 
)

Definition at line 619 of file AnnularFieldSim.cc.

View newest version in sPHENIX GitHub at line 619 of file AnnularFieldSim.cc

References c, rmin, step, and zmin.

Referenced by load_analytic_spacecharge(), loadField(), populate_full3d_lookup(), populate_highres_lookup(), populate_phislice_lookup(), and sum_field_at().

+ Here is the caller graph for this function:

float AnnularFieldSim::GetChargeAt ( TVector3  pos)

Definition at line 3899 of file AnnularFieldSim.cc.

View newest version in sPHENIX GitHub at line 3899 of file AnnularFieldSim.cc

References MultiArray< T >::Get(), GetChargeAt(), GetPhiIndex(), GetRindex(), GetZindexAndCheckBounds(), hasTwin, OutOfBounds, p, q, twin, and z.

Referenced by GetChargeAt(), and PlotFieldSlices().

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

const char* AnnularFieldSim::GetChargeString ( )
inline

Definition at line 222 of file AnnularFieldSim.h.

View newest version in sPHENIX GitHub at line 222 of file AnnularFieldSim.h

References chargestring.

Referenced by GenerateDistortionMaps(), and GenerateSeparateDistortionMaps().

+ Here is the caller graph for this function:

TVector3 AnnularFieldSim::GetFieldAt ( TVector3  pos)

Definition at line 3867 of file AnnularFieldSim.cc.

View newest version in sPHENIX GitHub at line 3867 of file AnnularFieldSim.cc

References Efield, MultiArray< T >::Get(), GetFieldAt(), GetPhiIndexAndCheckBounds(), GetRindexAndCheckBounds(), GetZindexAndCheckBounds(), hasTwin, p, twin, z, and zero_vector.

Referenced by GetFieldAt(), and PlotFieldSlices().

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

TVector3 AnnularFieldSim::GetFieldStep ( )
inline

Definition at line 228 of file AnnularFieldSim.h.

View newest version in sPHENIX GitHub at line 228 of file AnnularFieldSim.h

References step.

Referenced by PlotFieldSlices().

+ Here is the caller graph for this function:

int AnnularFieldSim::GetFieldStepsPhi ( )
inline

Definition at line 230 of file AnnularFieldSim.h.

View newest version in sPHENIX GitHub at line 230 of file AnnularFieldSim.h

References nphi_roi.

Referenced by GenerateDistortionMaps(), and GenerateSeparateDistortionMaps().

+ Here is the caller graph for this function:

int AnnularFieldSim::GetFieldStepsR ( )
inline

Definition at line 229 of file AnnularFieldSim.h.

View newest version in sPHENIX GitHub at line 229 of file AnnularFieldSim.h

References nr_roi.

Referenced by GenerateDistortionMaps(), and GenerateSeparateDistortionMaps().

+ Here is the caller graph for this function:

int AnnularFieldSim::GetFieldStepsZ ( )
inline

Definition at line 231 of file AnnularFieldSim.h.

View newest version in sPHENIX GitHub at line 231 of file AnnularFieldSim.h

References nz_roi.

Referenced by GenerateDistortionMaps(), and GenerateSeparateDistortionMaps().

+ Here is the caller graph for this function:

const char * AnnularFieldSim::GetFieldString ( )

Definition at line 3862 of file AnnularFieldSim.cc.

View newest version in sPHENIX GitHub at line 3862 of file AnnularFieldSim.cc

References Bfieldname, and Efieldname.

Referenced by GenerateDistortionMaps(), and GenerateSeparateDistortionMaps().

+ Here is the caller graph for this function:

const char * AnnularFieldSim::GetGasString ( )

Definition at line 3857 of file AnnularFieldSim.cc.

View newest version in sPHENIX GitHub at line 3857 of file AnnularFieldSim.cc

References Bnominal, cm, Enominal, omegatau_nominal, Tesla, us, V, and vdrift.

Referenced by GenerateDistortionMaps(), and GenerateSeparateDistortionMaps().

+ Here is the caller graph for this function:

TVector3 AnnularFieldSim::GetGroupCellCenter ( int  r0,
int  r1,
int  phi0,
int  phi1,
int  z0,
int  z1 
)

Definition at line 646 of file AnnularFieldSim.cc.

View newest version in sPHENIX GitHub at line 646 of file AnnularFieldSim.cc

References c, nphi, printf(), r1, rmin, step, z1, and zmin.

Referenced by populate_lowres_lookup().

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

TVector3 AnnularFieldSim::GetInnerEdge ( )
inline

Definition at line 232 of file AnnularFieldSim.h.

View newest version in sPHENIX GitHub at line 232 of file AnnularFieldSim.h

References rmin, and zmin.

Referenced by generate_distortion_map(), and PlotFieldSlices().

+ Here is the caller graph for this function:

const char * AnnularFieldSim::GetLookupString ( )

Definition at line 3843 of file AnnularFieldSim.cc.

View newest version in sPHENIX GitHub at line 3843 of file AnnularFieldSim.cc

References lookupCase, nphi, nphi_roi, nr, nr_roi, nz, and nz_roi.

Referenced by GenerateDistortionMaps(), and GenerateSeparateDistortionMaps().

+ Here is the caller graph for this function:

float AnnularFieldSim::GetNominalB ( )
inline

Definition at line 223 of file AnnularFieldSim.h.

View newest version in sPHENIX GitHub at line 223 of file AnnularFieldSim.h

References Bnominal.

float AnnularFieldSim::GetNominalE ( )
inline

Definition at line 224 of file AnnularFieldSim.h.

View newest version in sPHENIX GitHub at line 224 of file AnnularFieldSim.h

References Enominal.

TVector3 AnnularFieldSim::GetOuterEdge ( )
inline

Definition at line 233 of file AnnularFieldSim.h.

View newest version in sPHENIX GitHub at line 233 of file AnnularFieldSim.h

References rmax, and zmax.

Referenced by generate_distortion_map(), and PlotFieldSlices().

+ Here is the caller graph for this function:

int AnnularFieldSim::GetPhiIndex ( float  pos)
private

Definition at line 380 of file AnnularFieldSim.cc.

View newest version in sPHENIX GitHub at line 380 of file AnnularFieldSim.cc

References FilterPhiIndex(), pos(), and step.

Referenced by GetChargeAt().

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

AnnularFieldSim::BoundsCase AnnularFieldSim::GetPhiIndexAndCheckBounds ( float  pos,
int *  phi 
)
private

Definition at line 422 of file AnnularFieldSim.cc.

View newest version in sPHENIX GitHub at line 422 of file AnnularFieldSim.cc

References ALMOST_ZERO, FilterPhiIndex(), InBounds, nphi, OnHighEdge, OnLowEdge, OutOfBounds, phimax_roi, phimin_roi, pos(), and step.

Referenced by add_testcharge(), analyticFieldIntegral(), fieldIntegral(), GetBFieldAt(), GetFieldAt(), GetStepDistortion(), GetTotalDistortion(), and swimToInAnalyticSteps().

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

int AnnularFieldSim::GetRindex ( float  pos)
private

Definition at line 373 of file AnnularFieldSim.cc.

View newest version in sPHENIX GitHub at line 373 of file AnnularFieldSim.cc

References rmin, and step.

Referenced by GetChargeAt().

+ Here is the caller graph for this function:

AnnularFieldSim::BoundsCase AnnularFieldSim::GetRindexAndCheckBounds ( float  pos,
int *  r 
)
private

Definition at line 395 of file AnnularFieldSim.cc.

View newest version in sPHENIX GitHub at line 395 of file AnnularFieldSim.cc

References ALMOST_ZERO, InBounds, OnHighEdge, OnLowEdge, OutOfBounds, rmax_roi, rmin, rmin_roi, and step.

Referenced by add_testcharge(), analyticFieldIntegral(), calc_unit_field(), fieldIntegral(), GetBFieldAt(), GetFieldAt(), GetStepDistortion(), GetTotalDistortion(), and swimToInAnalyticSteps().

+ Here is the caller graph for this function:

TVector3 AnnularFieldSim::GetRoiCellCenter ( int  r,
int  phi,
int  z 
)

Definition at line 631 of file AnnularFieldSim.cc.

View newest version in sPHENIX GitHub at line 631 of file AnnularFieldSim.cc

References c, nphi_roi, nr_roi, nz_roi, phimin_roi, rmin, rmin_roi, step, zero_vector, zmin, and zmin_roi.

Referenced by GenerateDistortionMaps(), GenerateSeparateDistortionMaps(), and sum_phislice_field_at().

+ Here is the caller graph for this function:

TVector3 AnnularFieldSim::GetStepDistortion ( float  zdest,
TVector3  start,
bool  interpolate = true,
bool  useAnalytic = false 
)

Definition at line 3687 of file AnnularFieldSim.cc.

View newest version in sPHENIX GitHub at line 3687 of file AnnularFieldSim.cc

References kdfinder::abs(), ALMOST_ZERO, analyticFieldIntegral(), Bfield, c1, c2, chargeCase, cm, debug_distortionScale, Efield, Enominal, fieldIntegral(), GetPhiIndexAndCheckBounds(), GetRindexAndCheckBounds(), GetZindexAndCheckBounds(), InBounds, interpolatedFieldIntegral(), langevin_T1, langevin_T2, NoSpacecharge, omegatau_nominal, OnHighEdge, phimax_roi, phimin_roi, printf(), rmax_roi, rmin_roi, s, start(), step, Tesla, V, vdrift, zero_vector, zmax_roi, and zmin_roi.

Referenced by GetTotalDistortion(), swimToInAnalyticSteps(), and TestSpotDistortion().

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

TVector3 AnnularFieldSim::GetTotalDistortion ( float  zdest,
TVector3  start,
int  nsteps,
bool  interpolate = true,
int *  goodToStep = 0 
)

Definition at line 2446 of file AnnularFieldSim.cc.

View newest version in sPHENIX GitHub at line 2446 of file AnnularFieldSim.cc

References ALMOST_ZERO, GetPhiIndexAndCheckBounds(), GetRindexAndCheckBounds(), GetStepDistortion(), GetTotalDistortion(), GetZindexAndCheckBounds(), hasTwin, InBounds, OnLowEdge, OutOfBounds, phimax_roi, phimin_roi, Acts::VectorHelpers::position(), printf(), rmax_roi, rmin, rmin_roi, start(), step, propagation_timing::steps, twin, zero_vector, zmax_roi, and zmin_roi.

Referenced by GenerateDistortionMaps(), GenerateSeparateDistortionMaps(), GetTotalDistortion(), and swimToInSteps().

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

TVector3 AnnularFieldSim::GetWeightedCellCenter ( int  r,
int  phi,
int  z 
)

Definition at line 669 of file AnnularFieldSim.cc.

View newest version in sPHENIX GitHub at line 669 of file AnnularFieldSim.cc

References c, rmin, and step.

int AnnularFieldSim::GetZindex ( float  pos)
private

Definition at line 388 of file AnnularFieldSim.cc.

View newest version in sPHENIX GitHub at line 388 of file AnnularFieldSim.cc

References step, and zmin.

AnnularFieldSim::BoundsCase AnnularFieldSim::GetZindexAndCheckBounds ( float  pos,
int *  z 
)
private

Definition at line 456 of file AnnularFieldSim.cc.

View newest version in sPHENIX GitHub at line 456 of file AnnularFieldSim.cc

References ALMOST_ZERO, InBounds, OnHighEdge, OnLowEdge, OutOfBounds, step, zmax_roi, zmin, and zmin_roi.

Referenced by add_testcharge(), analyticFieldIntegral(), fieldIntegral(), GetBFieldAt(), GetChargeAt(), GetFieldAt(), GetStepDistortion(), GetTotalDistortion(), interpolatedFieldIntegral(), and swimToInAnalyticSteps().

+ Here is the caller graph for this function:

TVector3 AnnularFieldSim::interpolatedFieldIntegral ( float  zdest,
TVector3  start 
)
inline

Definition at line 297 of file AnnularFieldSim.h.

View newest version in sPHENIX GitHub at line 297 of file AnnularFieldSim.h

References Efield, and interpolatedFieldIntegral().

Referenced by analyticFieldIntegral(), GetStepDistortion(), and interpolatedFieldIntegral().

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

TVector3 AnnularFieldSim::interpolatedFieldIntegral ( float  zdest,
TVector3  start,
MultiArray< TVector3 > *  field 
)

Definition at line 686 of file AnnularFieldSim.cc.

View newest version in sPHENIX GitHub at line 686 of file AnnularFieldSim.cc

References ALMOST_ZERO, Bfield, Efield, FilterPhiIndex(), MultiArray< T >::Get(), GetZindexAndCheckBounds(), InBounds, OnHighEdge, OnLowEdge, phimax_roi, phimin_roi, pi, printf(), rmax_roi, rmin, rmin_roi, rw, Acts::Test::skip, step, zero_vector, zmin, and zmin_roi.

+ Here is the call graph for this function:

void AnnularFieldSim::load3dBfield ( const std::string &  filename,
const std::string &  treename,
int  zsign = 1,
float  scale = 1.0 
)

Definition at line 927 of file AnnularFieldSim.cc.

View newest version in sPHENIX GitHub at line 927 of file AnnularFieldSim.cc

References Bfield, Bfieldname, loadField(), phi, Tesla, and z.

Referenced by SetupDefaultSphenixTpc(), and SetupDigitalCurrentSphenixTpc().

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

void AnnularFieldSim::load_analytic_spacecharge ( float  scalefactor = 1)

Definition at line 821 of file AnnularFieldSim.cc.

View newest version in sPHENIX GitHub at line 821 of file AnnularFieldSim.cc

References MultiArray< T >::Add(), aliceModel, cm, MultiArray< T >::Get(), GetCellCenter(), MultiArray< T >::GetFlat(), HybridRes, MultiArray< T >::Length(), lookupCase, nphi, nr, nz, phi_spacing, pos(), printf(), q, q_lowres, r_spacing, AnalyticFieldModel::Rho(), rmin, step, and z_spacing.

+ Here is the call graph for this function:

void AnnularFieldSim::load_and_resample_spacecharge ( int  new_nphi,
int  new_nr,
int  new_nz,
const std::string &  filename,
const std::string &  histname,
float  zoffset,
float  chargescale,
float  cmscale,
bool  isChargeDensity 
)

Definition at line 1068 of file AnnularFieldSim.cc.

View newest version in sPHENIX GitHub at line 1068 of file AnnularFieldSim.cc

References chargefilename.

Referenced by generate_distortion_map().

+ Here is the caller graph for this function:

void AnnularFieldSim::load_and_resample_spacecharge ( int  new_nphi,
int  new_nr,
int  new_nz,
TH3F *  hist,
float  zoffset,
float  chargescale,
float  cmscale,
bool  isChargeDensity 
)

Definition at line 1080 of file AnnularFieldSim.cc.

View newest version in sPHENIX GitHub at line 1080 of file AnnularFieldSim.cc

References Acts::Test::hz, k, load_spacecharge(), phi, printf(), and z.

+ Here is the call graph for this function:

void AnnularFieldSim::load_phislice_lookup ( const char *  sourcefile)

Definition at line 1807 of file AnnularFieldSim.cc.

View newest version in sPHENIX GitHub at line 1807 of file AnnularFieldSim.cc

References C, cm, debug_npercent, Epartial_phislice, nphi, nr, nr_roi, nz, nz_roi, printf(), rmax, rmax_roi, rmin, rmin_roi, MultiArray< T >::Set(), V, zmax, zmax_roi, zmin, and zmin_roi.

Referenced by SetupDefaultSphenixTpc(), and SetupDigitalCurrentSphenixTpc().

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

void AnnularFieldSim::load_rossegger ( double  epsilon = 1E-4)
inline

Definition at line 269 of file AnnularFieldSim.h.

View newest version in sPHENIX GitHub at line 269 of file AnnularFieldSim.h

References epsilon, green, rmax, rmin, and zmax.

Referenced by SetupDefaultSphenixTpc(), and SetupDigitalCurrentSphenixTpc().

+ Here is the caller graph for this function:

void AnnularFieldSim::load_spacecharge ( const std::string &  filename,
const std::string &  histname,
float  zoffset = 0,
float  chargescale = 1,
float  cmscale = 1,
bool  isChargeDensity = true 
)

Definition at line 1055 of file AnnularFieldSim.cc.

View newest version in sPHENIX GitHub at line 1055 of file AnnularFieldSim.cc

References chargefilename.

Referenced by generate_distortion_map(), and load_and_resample_spacecharge().

+ Here is the caller graph for this function:

void AnnularFieldSim::load_spacecharge ( TH3F *  hist,
float  zoffset,
float  chargescale,
float  cmscale,
bool  isChargeDensity 
)

Definition at line 1173 of file AnnularFieldSim.cc.

View newest version in sPHENIX GitHub at line 1173 of file AnnularFieldSim.cc

References MultiArray< T >::Add(), C, chargefilename, chargestring, dim, MultiArray< T >::Get(), MultiArray< T >::GetFlat(), HybridRes, Acts::Test::hz, k, MultiArray< T >::Length(), lookupCase, nphi, nr, nz, phi_spacing, printf(), q, q_lowres, r_spacing, rmax, rmin, step, z_spacing, and zmin.

+ Here is the call graph for this function:

void AnnularFieldSim::loadBfield ( const std::string &  filename,
const std::string &  treename 
)

Definition at line 904 of file AnnularFieldSim.cc.

View newest version in sPHENIX GitHub at line 904 of file AnnularFieldSim.cc

References Bfield, Bfieldname, loadField(), phi, Tesla, and z.

+ Here is the call graph for this function:

void AnnularFieldSim::loadEfield ( const std::string &  filename,
const std::string &  treename,
int  zsign = 1 
)

Definition at line 882 of file AnnularFieldSim.cc.

View newest version in sPHENIX GitHub at line 882 of file AnnularFieldSim.cc

References cm, Eexternal, Efieldname, loadField(), phi, V, and z.

Referenced by SetupDefaultSphenixTpc(), and SetupDigitalCurrentSphenixTpc().

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

void AnnularFieldSim::loadField ( MultiArray< TVector3 > **  field,
TTree *  source,
float *  rptr,
float *  phiptr,
float *  zptr,
float *  frptr,
float *  fphiptr,
float *  fzptr,
float  fieldunit,
int  zsign 
)

Definition at line 947 of file AnnularFieldSim.cc.

View newest version in sPHENIX GitHub at line 947 of file AnnularFieldSim.cc

References Bfield, FilterPhiPos(), GetCellCenter(), k, M_PI, nphi, nr, nz, printf(), rmax, rmin, step, zmax, and zmin.

Referenced by load3dBfield(), loadBfield(), and loadEfield().

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

void AnnularFieldSim::PlotFieldSlices ( const std::string &  filebase,
TVector3  pos,
char  which = 'E' 
)

Definition at line 2524 of file AnnularFieldSim.cc.

View newest version in sPHENIX GitHub at line 2524 of file AnnularFieldSim.cc

References kdfinder::abs(), KF_timing::ax, c, cm, GetBFieldAt(), GetChargeAt(), GetFieldAt(), GetFieldStep(), GetInnerEdge(), GetOuterEdge(), hasTwin, M_PI, nphi_roi, nr_roi, nz_roi, printf(), step, Tesla, twin, and V.

Referenced by generate_distortion_map().

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

void AnnularFieldSim::populate_fieldmap ( )

Definition at line 1372 of file AnnularFieldSim.cc.

View newest version in sPHENIX GitHub at line 1372 of file AnnularFieldSim.cc

References debug_npercent, Efield, ir(), nphi, nphi_roi, nr, nr_roi, nz, nz_roi, phimax_roi, phimin_roi, printf(), rmax_roi, rmin_roi, MultiArray< T >::Set(), sum_field_at(), truncation_length, zmax_roi, and zmin_roi.

Referenced by generate_distortion_map().

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

void AnnularFieldSim::populate_full3d_lookup ( )

Definition at line 1455 of file AnnularFieldSim.cc.

View newest version in sPHENIX GitHub at line 1455 of file AnnularFieldSim.cc

References Acts::Test::at, calc_unit_field(), debug_npercent, Epartial, GetCellCenter(), nphi, nr, nz, phimax_roi, phimin_roi, printf(), rmax_roi, rmin_roi, MultiArray< T >::Set(), zero, zmax_roi, and zmin_roi.

Referenced by populate_lookup().

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

void AnnularFieldSim::populate_highres_lookup ( )

Definition at line 1511 of file AnnularFieldSim.cc.

View newest version in sPHENIX GitHub at line 1511 of file AnnularFieldSim.cc

References Acts::Test::at, calc_unit_field(), Epartial_highres, FilterPhiIndex(), MultiArray< T >::Get(), GetCellCenter(), ir(), k, nphi, nphi_high, nr, nr_high, nz, nz_high, phi_spacing, phimax_roi, phimin_roi, printf(), r_spacing, rmax_roi, rmin_roi, MultiArray< T >::Set(), z_spacing, zero, zmax_roi, and zmin_roi.

Referenced by populate_lookup().

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

void AnnularFieldSim::populate_lookup ( )

Definition at line 1416 of file AnnularFieldSim.cc.

View newest version in sPHENIX GitHub at line 1416 of file AnnularFieldSim.cc

References Analytic, Full3D, HybridRes, lookupCase, NoLookup, PhiSlice, populate_full3d_lookup(), populate_highres_lookup(), populate_lowres_lookup(), populate_phislice_lookup(), and printf().

Referenced by SetupDefaultSphenixTpc(), and SetupDigitalCurrentSphenixTpc().

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

void AnnularFieldSim::populate_lowres_lookup ( )

Definition at line 1671 of file AnnularFieldSim.cc.

View newest version in sPHENIX GitHub at line 1671 of file AnnularFieldSim.cc

References Acts::Test::at, calc_unit_field(), Epartial_lowres, GetGroupCellCenter(), nphi, nphi_low, nr, nr_low, nz, nz_low, phi_spacing, phimax_roi_low, phimin_roi_low, r_spacing, rmax_roi_low, rmin_roi_low, MultiArray< T >::Set(), z_spacing, zero, zmax_roi_low, and zmin_roi_low.

Referenced by populate_lookup().

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

void AnnularFieldSim::populate_phislice_lookup ( )

Definition at line 1741 of file AnnularFieldSim.cc.

View newest version in sPHENIX GitHub at line 1741 of file AnnularFieldSim.cc

References Acts::Test::at, calc_unit_field(), debug_npercent, Epartial_phislice, GetCellCenter(), nphi, nr, nr_roi, nz, nz_roi, printf(), rmax_roi, rmin_roi, MultiArray< T >::Set(), zero, zmax_roi, and zmin_roi.

Referenced by populate_lookup().

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

void AnnularFieldSim::save_phislice_lookup ( const char *  destfile)

Definition at line 1896 of file AnnularFieldSim.cc.

View newest version in sPHENIX GitHub at line 1896 of file AnnularFieldSim.cc

References C, cm, debug_npercent, Epartial_phislice, MultiArray< T >::Get(), nphi, nr, nr_roi, nz, nz_roi, printf(), rmax, rmax_roi, rmin, rmin_roi, V, zmax, zmax_roi, zmin, and zmin_roi.

Referenced by SetupDefaultSphenixTpc(), and SetupDigitalCurrentSphenixTpc().

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

void AnnularFieldSim::set_twin ( AnnularFieldSim sim)
inline

Definition at line 286 of file AnnularFieldSim.h.

View newest version in sPHENIX GitHub at line 286 of file AnnularFieldSim.h

References hasTwin, and twin.

Referenced by SetupDefaultSphenixTpc(), and SetupDigitalCurrentSphenixTpc().

+ Here is the caller graph for this function:

void AnnularFieldSim::SetDistortionScaleRPZ ( float  a,
float  b,
float  c 
)
inline

Definition at line 207 of file AnnularFieldSim.h.

View newest version in sPHENIX GitHub at line 207 of file AnnularFieldSim.h

References debug_distortionScale.

void AnnularFieldSim::setFlatFields ( float  B,
float  E 
)

Definition at line 1974 of file AnnularFieldSim.cc.

View newest version in sPHENIX GitHub at line 1974 of file AnnularFieldSim.cc

References Bfield, Bfieldname, Bnominal, cm, Eexternal, Efieldname, Enominal, MultiArray< T >::GetFlat(), MultiArray< T >::Length(), printf(), Tesla, UpdateOmegaTau(), and V.

Referenced by SetupDefaultSphenixTpc(), and SetupDigitalCurrentSphenixTpc().

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

void AnnularFieldSim::setNominalB ( float  x)
inline

Definition at line 250 of file AnnularFieldSim.h.

View newest version in sPHENIX GitHub at line 250 of file AnnularFieldSim.h

References Bnominal, UpdateOmegaTau(), and x.

+ Here is the call graph for this function:

void AnnularFieldSim::setNominalE ( float  x)
inline

Definition at line 256 of file AnnularFieldSim.h.

View newest version in sPHENIX GitHub at line 256 of file AnnularFieldSim.h

References Enominal, UpdateOmegaTau(), and x.

+ Here is the call graph for this function:

void AnnularFieldSim::SetTruncationDistance ( int  x)
inline

Definition at line 212 of file AnnularFieldSim.h.

View newest version in sPHENIX GitHub at line 212 of file AnnularFieldSim.h

References truncation_length, and x.

TVector3 AnnularFieldSim::sum_field_at ( int  r,
int  phi,
int  z 
)

Definition at line 1995 of file AnnularFieldSim.cc.

View newest version in sPHENIX GitHub at line 1995 of file AnnularFieldSim.cc

References aliceModel, Analytic, debugFlag(), AnalyticFieldModel::E(), Eexternal, Full3D, MultiArray< T >::Get(), GetCellCenter(), HybridRes, lookupCase, NoLookup, phimin_roi, PhiSlice, printf(), rmin_roi, sum_full3d_field_at(), sum_local_field_at(), sum_nonlocal_field_at(), sum_phislice_field_at(), and zmin_roi.

Referenced by populate_fieldmap().

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

TVector3 AnnularFieldSim::sum_full3d_field_at ( int  r,
int  phi,
int  z 
)

Definition at line 2037 of file AnnularFieldSim.cc.

View newest version in sPHENIX GitHub at line 2037 of file AnnularFieldSim.cc

References kdfinder::abs(), Epartial, MultiArray< T >::Get(), ir(), nphi, nr, nz, phimin_roi, q, rmin_roi, truncation_length, and zmin_roi.

Referenced by sum_field_at().

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

TVector3 AnnularFieldSim::sum_local_field_at ( int  r,
int  phi,
int  z 
)

Definition at line 2078 of file AnnularFieldSim.cc.

View newest version in sPHENIX GitHub at line 2078 of file AnnularFieldSim.cc

References MultiArray< T >::Add(), Epartial_highres, FilterPhiIndex(), MultiArray< T >::Get(), MultiArray< T >::GetFlat(), ir(), MultiArray< T >::Length(), nphi_high, nr, nr_high, nz, nz_high, phi, phi_spacing, phimin_roi, printf(), q, q_local, r_spacing, rmin_roi, z, z_spacing, and zmin_roi.

Referenced by sum_field_at().

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

TVector3 AnnularFieldSim::sum_nonlocal_field_at ( int  r,
int  phi,
int  z 
)

Definition at line 2174 of file AnnularFieldSim.cc.

View newest version in sPHENIX GitHub at line 2174 of file AnnularFieldSim.cc

References Epartial_lowres, FilterPhiIndex(), MultiArray< T >::Get(), ir(), nphi_high, nphi_low, nphi_roi_low, nr_high, nr_low, nr_roi_low, nz_high, nz_low, nz_roi_low, phi_spacing, phimin_roi_low, pi, printf(), q_lowres, r_spacing, rmin_roi_low, rw, Acts::Test::skip, z_spacing, and zmin_roi_low.

Referenced by sum_field_at().

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

TVector3 AnnularFieldSim::sum_phislice_field_at ( int  r,
int  phi,
int  z 
)

Definition at line 2341 of file AnnularFieldSim.cc.

View newest version in sPHENIX GitHub at line 2341 of file AnnularFieldSim.cc

References Epartial_phislice, FilterPhiIndex(), MultiArray< T >::Get(), GetRoiCellCenter(), ir(), nphi, nr, nz, phimin_roi, pos(), q, rmin_roi, and zmin_roi.

Referenced by sum_field_at().

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

TVector3 AnnularFieldSim::swimTo ( float  zdest,
TVector3  start,
bool  interpolate = true,
bool  useAnalytic = false 
)

Definition at line 3679 of file AnnularFieldSim.cc.

View newest version in sPHENIX GitHub at line 3679 of file AnnularFieldSim.cc

References swimToInAnalyticSteps(), and swimToInSteps().

+ Here is the call graph for this function:

TVector3 AnnularFieldSim::swimToInAnalyticSteps ( float  zdest,
TVector3  start,
int  steps = 1,
int *  goodToStep = 0 
)

Definition at line 2391 of file AnnularFieldSim.cc.

View newest version in sPHENIX GitHub at line 2391 of file AnnularFieldSim.cc

References ALMOST_ZERO, cm, GetPhiIndexAndCheckBounds(), GetRindexAndCheckBounds(), GetStepDistortion(), GetZindexAndCheckBounds(), InBounds, OnLowEdge, OutOfBounds, phimax_roi, phimin_roi, printf(), rmax_roi, rmin, rmin_roi, start(), step, propagation_timing::steps, zmax_roi, and zmin_roi.

Referenced by swimTo().

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

TVector3 AnnularFieldSim::swimToInSteps ( float  zdest,
TVector3  start,
int  steps = 1,
bool  interpolate = false,
int *  goodToStep = 0 
)

Definition at line 2439 of file AnnularFieldSim.cc.

View newest version in sPHENIX GitHub at line 2439 of file AnnularFieldSim.cc

References GetTotalDistortion(), Acts::interpolate(), and propagation_timing::steps.

Referenced by swimTo().

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

void AnnularFieldSim::UpdateEveryN ( int  n)
inline

Definition at line 192 of file AnnularFieldSim.h.

View newest version in sPHENIX GitHub at line 192 of file AnnularFieldSim.h

References debug_npercent, debug_printActionEveryN, and n.

Referenced by SetupDefaultSphenixTpc(), and SetupDigitalCurrentSphenixTpc().

+ Here is the caller graph for this function:

void AnnularFieldSim::UpdateOmegaTau ( )
inlineprivate

Definition at line 337 of file AnnularFieldSim.h.

View newest version in sPHENIX GitHub at line 337 of file AnnularFieldSim.h

References kdfinder::abs(), Bnominal, Enominal, omegatau_nominal, and vdrift.

Referenced by setFlatFields(), setNominalB(), and setNominalE().

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

Member Data Documentation

AnalyticFieldModel* AnnularFieldSim::aliceModel = nullptr

Definition at line 82 of file AnnularFieldSim.h.

View newest version in sPHENIX GitHub at line 82 of file AnnularFieldSim.h

Referenced by analyticFieldIntegral(), load_analytic_spacecharge(), and sum_field_at().

MultiArray<TVector3>* AnnularFieldSim::Bfield
std::string AnnularFieldSim::Bfieldname

Definition at line 104 of file AnnularFieldSim.h.

View newest version in sPHENIX GitHub at line 104 of file AnnularFieldSim.h

Referenced by GetFieldString(), load3dBfield(), loadBfield(), and setFlatFields().

float AnnularFieldSim::Bnominal

Definition at line 110 of file AnnularFieldSim.h.

View newest version in sPHENIX GitHub at line 110 of file AnnularFieldSim.h

Referenced by AnnularFieldSim(), GetGasString(), GetNominalB(), setFlatFields(), setNominalB(), and UpdateOmegaTau().

const float AnnularFieldSim::C = 1
private

Definition at line 28 of file AnnularFieldSim.h.

View newest version in sPHENIX GitHub at line 28 of file AnnularFieldSim.h

Referenced by add_testcharge(), AnnularFieldSim(), load_phislice_lookup(), load_spacecharge(), and save_phislice_lookup().

ChargeCase AnnularFieldSim::chargeCase

Definition at line 126 of file AnnularFieldSim.h.

View newest version in sPHENIX GitHub at line 126 of file AnnularFieldSim.h

Referenced by AnnularFieldSim(), and GetStepDistortion().

std::string AnnularFieldSim::chargefilename

Definition at line 107 of file AnnularFieldSim.h.

View newest version in sPHENIX GitHub at line 107 of file AnnularFieldSim.h

Referenced by load_and_resample_spacecharge(), and load_spacecharge().

char AnnularFieldSim::chargestring[300] = {0}

Definition at line 108 of file AnnularFieldSim.h.

View newest version in sPHENIX GitHub at line 108 of file AnnularFieldSim.h

Referenced by AnnularFieldSim(), GetChargeString(), and load_spacecharge().

const float AnnularFieldSim::cm = 1
private
TVector3 AnnularFieldSim::debug_distortionScale

Definition at line 80 of file AnnularFieldSim.h.

View newest version in sPHENIX GitHub at line 80 of file AnnularFieldSim.h

Referenced by AnnularFieldSim(), GenerateDistortionMaps(), GenerateSeparateDistortionMaps(), GetStepDistortion(), and SetDistortionScaleRPZ().

int AnnularFieldSim::debug_npercent
int AnnularFieldSim::debug_printActionEveryN

Definition at line 77 of file AnnularFieldSim.h.

View newest version in sPHENIX GitHub at line 77 of file AnnularFieldSim.h

Referenced by AnnularFieldSim(), debugFlag(), and UpdateEveryN().

int AnnularFieldSim::debug_printCounter

Definition at line 79 of file AnnularFieldSim.h.

View newest version in sPHENIX GitHub at line 79 of file AnnularFieldSim.h

Referenced by AnnularFieldSim(), and debugFlag().

TVector3 AnnularFieldSim::dim

Definition at line 117 of file AnnularFieldSim.h.

View newest version in sPHENIX GitHub at line 117 of file AnnularFieldSim.h

Referenced by AnnularFieldSim(), and load_spacecharge().

MultiArray<TVector3>* AnnularFieldSim::Eexternal

Definition at line 166 of file AnnularFieldSim.h.

View newest version in sPHENIX GitHub at line 166 of file AnnularFieldSim.h

Referenced by analyticFieldIntegral(), AnnularFieldSim(), loadEfield(), setFlatFields(), and sum_field_at().

MultiArray<TVector3>* AnnularFieldSim::Efield

Definition at line 161 of file AnnularFieldSim.h.

View newest version in sPHENIX GitHub at line 161 of file AnnularFieldSim.h

Referenced by analyticFieldIntegral(), AnnularFieldSim(), GetFieldAt(), GetStepDistortion(), interpolatedFieldIntegral(), and populate_fieldmap().

std::string AnnularFieldSim::Efieldname

Definition at line 105 of file AnnularFieldSim.h.

View newest version in sPHENIX GitHub at line 105 of file AnnularFieldSim.h

Referenced by GetFieldString(), loadEfield(), and setFlatFields().

float AnnularFieldSim::Enominal = NAN

Definition at line 109 of file AnnularFieldSim.h.

View newest version in sPHENIX GitHub at line 109 of file AnnularFieldSim.h

Referenced by AnnularFieldSim(), GetGasString(), GetNominalE(), GetStepDistortion(), setFlatFields(), setNominalE(), and UpdateOmegaTau().

MultiArray<TVector3>* AnnularFieldSim::Epartial

Definition at line 164 of file AnnularFieldSim.h.

View newest version in sPHENIX GitHub at line 164 of file AnnularFieldSim.h

Referenced by AnnularFieldSim(), populate_full3d_lookup(), and sum_full3d_field_at().

MultiArray<TVector3>* AnnularFieldSim::Epartial_highres

Definition at line 162 of file AnnularFieldSim.h.

View newest version in sPHENIX GitHub at line 162 of file AnnularFieldSim.h

Referenced by AnnularFieldSim(), populate_highres_lookup(), and sum_local_field_at().

MultiArray<TVector3>* AnnularFieldSim::Epartial_lowres

Definition at line 163 of file AnnularFieldSim.h.

View newest version in sPHENIX GitHub at line 163 of file AnnularFieldSim.h

Referenced by AnnularFieldSim(), populate_lowres_lookup(), and sum_nonlocal_field_at().

MultiArray<TVector3>* AnnularFieldSim::Epartial_phislice

Definition at line 165 of file AnnularFieldSim.h.

View newest version in sPHENIX GitHub at line 165 of file AnnularFieldSim.h

Referenced by AnnularFieldSim(), borrow_epartial_from(), load_phislice_lookup(), populate_phislice_lookup(), save_phislice_lookup(), and sum_phislice_field_at().

const float AnnularFieldSim::eps0 = 8.854e-12 * (C / V) / m
private

Definition at line 41 of file AnnularFieldSim.h.

View newest version in sPHENIX GitHub at line 41 of file AnnularFieldSim.h

const float AnnularFieldSim::epsinv = 1 / eps0
private

Definition at line 42 of file AnnularFieldSim.h.

View newest version in sPHENIX GitHub at line 42 of file AnnularFieldSim.h

Referenced by calc_unit_field().

const float AnnularFieldSim::fC = C / 1e15
private

Definition at line 30 of file AnnularFieldSim.h.

View newest version in sPHENIX GitHub at line 30 of file AnnularFieldSim.h

Referenced by AnnularFieldSim().

std::string AnnularFieldSim::fieldstring

Definition at line 103 of file AnnularFieldSim.h.

View newest version in sPHENIX GitHub at line 103 of file AnnularFieldSim.h

Rossegger* AnnularFieldSim::green

Definition at line 118 of file AnnularFieldSim.h.

View newest version in sPHENIX GitHub at line 118 of file AnnularFieldSim.h

Referenced by AnnularFieldSim(), borrow_rossegger(), calc_unit_field(), load_rossegger(), SetupDefaultSphenixTpc(), and SetupDigitalCurrentSphenixTpc().

float AnnularFieldSim::green_shift

Definition at line 119 of file AnnularFieldSim.h.

View newest version in sPHENIX GitHub at line 119 of file AnnularFieldSim.h

Referenced by AnnularFieldSim(), borrow_epartial_from(), borrow_rossegger(), and calc_unit_field().

bool AnnularFieldSim::hasTwin = false
const float AnnularFieldSim::k_perm = 1 / (4 * 3.1416 * eps0)
private

Definition at line 43 of file AnnularFieldSim.h.

View newest version in sPHENIX GitHub at line 43 of file AnnularFieldSim.h

Referenced by calc_unit_field().

const float AnnularFieldSim::kGauss = Tesla / 10
private

Definition at line 39 of file AnnularFieldSim.h.

View newest version in sPHENIX GitHub at line 39 of file AnnularFieldSim.h

Referenced by AnnularFieldSim().

double AnnularFieldSim::langevin_T1 = NAN

Definition at line 96 of file AnnularFieldSim.h.

View newest version in sPHENIX GitHub at line 96 of file AnnularFieldSim.h

Referenced by AnnularFieldSim(), and GetStepDistortion().

double AnnularFieldSim::langevin_T2 = NAN

Definition at line 97 of file AnnularFieldSim.h.

View newest version in sPHENIX GitHub at line 97 of file AnnularFieldSim.h

Referenced by AnnularFieldSim(), and GetStepDistortion().

LookupCase AnnularFieldSim::lookupCase

Definition at line 125 of file AnnularFieldSim.h.

View newest version in sPHENIX GitHub at line 125 of file AnnularFieldSim.h

Referenced by add_testcharge(), AnnularFieldSim(), GetLookupString(), load_analytic_spacecharge(), load_spacecharge(), populate_lookup(), and sum_field_at().

const float AnnularFieldSim::m = 100 * cm
private

Definition at line 24 of file AnnularFieldSim.h.

View newest version in sPHENIX GitHub at line 24 of file AnnularFieldSim.h

Referenced by AnnularFieldSim().

const float AnnularFieldSim::mm = cm / 10
private

Definition at line 25 of file AnnularFieldSim.h.

View newest version in sPHENIX GitHub at line 25 of file AnnularFieldSim.h

Referenced by AnnularFieldSim().

const float AnnularFieldSim::nC = C / 1e9
private

Definition at line 29 of file AnnularFieldSim.h.

View newest version in sPHENIX GitHub at line 29 of file AnnularFieldSim.h

Referenced by AnnularFieldSim().

int AnnularFieldSim::nphi_high = -1

Definition at line 138 of file AnnularFieldSim.h.

View newest version in sPHENIX GitHub at line 138 of file AnnularFieldSim.h

Referenced by populate_highres_lookup(), sum_local_field_at(), and sum_nonlocal_field_at().

int AnnularFieldSim::nphi_low = -1

Definition at line 147 of file AnnularFieldSim.h.

View newest version in sPHENIX GitHub at line 147 of file AnnularFieldSim.h

Referenced by populate_lowres_lookup(), and sum_nonlocal_field_at().

int AnnularFieldSim::nphi_roi

Definition at line 133 of file AnnularFieldSim.h.

View newest version in sPHENIX GitHub at line 133 of file AnnularFieldSim.h

Referenced by AnnularFieldSim(), GetFieldStepsPhi(), GetLookupString(), GetRoiCellCenter(), PlotFieldSlices(), and populate_fieldmap().

int AnnularFieldSim::nphi_roi_low = -1

Definition at line 156 of file AnnularFieldSim.h.

View newest version in sPHENIX GitHub at line 156 of file AnnularFieldSim.h

Referenced by sum_nonlocal_field_at().

int AnnularFieldSim::nr_high = -1

Definition at line 137 of file AnnularFieldSim.h.

View newest version in sPHENIX GitHub at line 137 of file AnnularFieldSim.h

Referenced by populate_highres_lookup(), sum_local_field_at(), and sum_nonlocal_field_at().

int AnnularFieldSim::nr_low = -1

Definition at line 146 of file AnnularFieldSim.h.

View newest version in sPHENIX GitHub at line 146 of file AnnularFieldSim.h

Referenced by populate_lowres_lookup(), and sum_nonlocal_field_at().

int AnnularFieldSim::nr_roi
int AnnularFieldSim::nr_roi_low = -1

Definition at line 155 of file AnnularFieldSim.h.

View newest version in sPHENIX GitHub at line 155 of file AnnularFieldSim.h

Referenced by sum_nonlocal_field_at().

const float AnnularFieldSim::ns = s / 1e9
private

Definition at line 34 of file AnnularFieldSim.h.

View newest version in sPHENIX GitHub at line 34 of file AnnularFieldSim.h

Referenced by AnnularFieldSim().

int AnnularFieldSim::nz_high = -1

Definition at line 139 of file AnnularFieldSim.h.

View newest version in sPHENIX GitHub at line 139 of file AnnularFieldSim.h

Referenced by populate_highres_lookup(), sum_local_field_at(), and sum_nonlocal_field_at().

int AnnularFieldSim::nz_low = -1

Definition at line 148 of file AnnularFieldSim.h.

View newest version in sPHENIX GitHub at line 148 of file AnnularFieldSim.h

Referenced by populate_lowres_lookup(), and sum_nonlocal_field_at().

int AnnularFieldSim::nz_roi
int AnnularFieldSim::nz_roi_low = -1

Definition at line 157 of file AnnularFieldSim.h.

View newest version in sPHENIX GitHub at line 157 of file AnnularFieldSim.h

Referenced by sum_nonlocal_field_at().

double AnnularFieldSim::omegatau_nominal = NAN

Definition at line 98 of file AnnularFieldSim.h.

View newest version in sPHENIX GitHub at line 98 of file AnnularFieldSim.h

Referenced by AnnularFieldSim(), GetGasString(), GetStepDistortion(), and UpdateOmegaTau().

int AnnularFieldSim::phi_spacing = -1
int AnnularFieldSim::phimax_roi_low = -1

Definition at line 153 of file AnnularFieldSim.h.

View newest version in sPHENIX GitHub at line 153 of file AnnularFieldSim.h

Referenced by populate_lowres_lookup().

int AnnularFieldSim::phimin_roi_low = -1

Definition at line 150 of file AnnularFieldSim.h.

View newest version in sPHENIX GitHub at line 150 of file AnnularFieldSim.h

Referenced by populate_lowres_lookup(), and sum_nonlocal_field_at().

float AnnularFieldSim::phispan

Definition at line 113 of file AnnularFieldSim.h.

View newest version in sPHENIX GitHub at line 113 of file AnnularFieldSim.h

Referenced by AnnularFieldSim(), and FilterPhiPos().

MultiArray<double>* AnnularFieldSim::q_local

Definition at line 169 of file AnnularFieldSim.h.

View newest version in sPHENIX GitHub at line 169 of file AnnularFieldSim.h

Referenced by AnnularFieldSim(), and sum_local_field_at().

MultiArray<double>* AnnularFieldSim::q_lowres

Definition at line 170 of file AnnularFieldSim.h.

View newest version in sPHENIX GitHub at line 170 of file AnnularFieldSim.h

Referenced by AnnularFieldSim(), load_analytic_spacecharge(), load_spacecharge(), and sum_nonlocal_field_at().

int AnnularFieldSim::r_spacing = -1
float AnnularFieldSim::rmax

Definition at line 114 of file AnnularFieldSim.h.

View newest version in sPHENIX GitHub at line 114 of file AnnularFieldSim.h

Referenced by AnnularFieldSim(), GetOuterEdge(), load_phislice_lookup(), load_rossegger(), load_spacecharge(), loadField(), and save_phislice_lookup().

int AnnularFieldSim::rmax_roi_low = -1

Definition at line 152 of file AnnularFieldSim.h.

View newest version in sPHENIX GitHub at line 152 of file AnnularFieldSim.h

Referenced by populate_lowres_lookup().

int AnnularFieldSim::rmin_roi_low = -1

Definition at line 149 of file AnnularFieldSim.h.

View newest version in sPHENIX GitHub at line 149 of file AnnularFieldSim.h

Referenced by populate_lowres_lookup(), and sum_nonlocal_field_at().

const float AnnularFieldSim::s = 1
private

Definition at line 32 of file AnnularFieldSim.h.

View newest version in sPHENIX GitHub at line 32 of file AnnularFieldSim.h

Referenced by AnnularFieldSim(), GenerateDistortionMaps(), GenerateSeparateDistortionMaps(), and GetStepDistortion().

const float AnnularFieldSim::Tesla = V * s / m / m
private

Definition at line 38 of file AnnularFieldSim.h.

View newest version in sPHENIX GitHub at line 38 of file AnnularFieldSim.h

Referenced by AnnularFieldSim(), GetGasString(), GetStepDistortion(), load3dBfield(), loadBfield(), PlotFieldSlices(), and setFlatFields().

int AnnularFieldSim::truncation_length

Definition at line 127 of file AnnularFieldSim.h.

View newest version in sPHENIX GitHub at line 127 of file AnnularFieldSim.h

Referenced by AnnularFieldSim(), populate_fieldmap(), SetTruncationDistance(), and sum_full3d_field_at().

const float AnnularFieldSim::um = mm / 1e3
private

Definition at line 26 of file AnnularFieldSim.h.

View newest version in sPHENIX GitHub at line 26 of file AnnularFieldSim.h

Referenced by AnnularFieldSim().

const float AnnularFieldSim::us = s / 1e6
private

Definition at line 33 of file AnnularFieldSim.h.

View newest version in sPHENIX GitHub at line 33 of file AnnularFieldSim.h

Referenced by AnnularFieldSim(), and GetGasString().

const float AnnularFieldSim::V = 1
private

Definition at line 36 of file AnnularFieldSim.h.

View newest version in sPHENIX GitHub at line 36 of file AnnularFieldSim.h

Referenced by AnnularFieldSim(), GetGasString(), GetStepDistortion(), load_phislice_lookup(), loadEfield(), PlotFieldSlices(), save_phislice_lookup(), and setFlatFields().

double AnnularFieldSim::vdrift = NAN

Definition at line 95 of file AnnularFieldSim.h.

View newest version in sPHENIX GitHub at line 95 of file AnnularFieldSim.h

Referenced by AnnularFieldSim(), GetGasString(), GetStepDistortion(), and UpdateOmegaTau().

int AnnularFieldSim::z_spacing = -1
TVector3 AnnularFieldSim::zero_vector

Definition at line 90 of file AnnularFieldSim.h.

View newest version in sPHENIX GitHub at line 90 of file AnnularFieldSim.h

Referenced by AnnularFieldSim(), GetBFieldAt(), GetFieldAt(), GetRoiCellCenter(), GetStepDistortion(), GetTotalDistortion(), and interpolatedFieldIntegral().

float AnnularFieldSim::zmax

Definition at line 115 of file AnnularFieldSim.h.

View newest version in sPHENIX GitHub at line 115 of file AnnularFieldSim.h

Referenced by AnnularFieldSim(), GetOuterEdge(), load_phislice_lookup(), load_rossegger(), loadField(), and save_phislice_lookup().

int AnnularFieldSim::zmax_roi_low = -1

Definition at line 154 of file AnnularFieldSim.h.

View newest version in sPHENIX GitHub at line 154 of file AnnularFieldSim.h

Referenced by populate_lowres_lookup().

int AnnularFieldSim::zmin_roi_low = -1

Definition at line 151 of file AnnularFieldSim.h.

View newest version in sPHENIX GitHub at line 151 of file AnnularFieldSim.h

Referenced by populate_lowres_lookup(), and sum_nonlocal_field_at().


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