Hall-D Software  alpha
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
DMaterialMap Class Reference

#include <DMaterialMap.h>

Classes

class  MaterialNode
 

Public Member Functions

 DMaterialMap (string namepath, JCalibration *jcalib)
 
virtual ~DMaterialMap ()
 
const MaterialNodeFindNode (const DVector3 &pos) const
 
jerror_t FindMat (DVector3 &pos, double &rhoZ_overA, double &rhoZ_overA_logI, double &RadLen) const
 
jerror_t FindMatALT1 (DVector3 &pos, double &KrhoZ_overA, double &rhoZ_overA, double &logI, double &RadLen) const
 
jerror_t FindMat (DVector3 &pos, double &density, double &A, double &Z, double &RadLen) const
 
jerror_t FindMatKalman (const DVector3 &pos, double &K_rho_Z_over_A, double &rho_Z_over_A, double &LogI, double &chi2c_factor, double &chi2a_factor, double &chi2a_corr, double &Z) const
 
bool IsInMap (const DVector3 &pos) const
 
double EstimatedDistanceToBoundary (const DVector3 &pos, const DVector3 &mom)
 
double EstimatedDistanceToBoundarySearch (double r, double z, double p_hatR, double p_hatZ, double &s_to_boundary)
 
double DistanceToBox (double &x, double &y, double &xdir, double &ydir, double xmin, double xmax, double ymin, double ymax)
 
string GetNamepath (void) const
 
double GetRmin (void) const
 
double GetRmax (void) const
 
double GetZmin (void) const
 
double GetZmax (void) const
 
double GetNr (void) const
 
double GetNz (void) const
 
double Getdr (void) const
 
double Getdz (void) const
 

Public Attributes

bool IS_VALID
 

Private Member Functions

 DMaterialMap ()
 
void FindBoundaries (void)
 

Private Attributes

string namepath
 
vector< vector< MaterialNode > > nodes
 
int Nr
 
int Nz
 
double dr
 
double dz
 
double one_over_dr
 
double one_over_dz
 
double r0
 
double z0
 
double rmin
 
double rmax
 
double zmin
 
double zmax
 
int MAX_BOUNDARY_SEARCH_STEPS
 
bool ENABLE_BOUNDARY_CHECK
 
bool irregular_density_profile
 
vector< double > r_boundaries
 
vector< double > z_boundaries
 
JCalibration * jcalib
 

Detailed Description

Definition at line 13 of file DMaterialMap.h.

Constructor & Destructor Documentation

DMaterialMap::DMaterialMap ( string  namepath,
JCalibration *  jcalib 
)
virtual DMaterialMap::~DMaterialMap ( )
inlinevirtual

Definition at line 16 of file DMaterialMap.h.

DMaterialMap::DMaterialMap ( )
private

Member Function Documentation

double DMaterialMap::DistanceToBox ( double &  x,
double &  y,
double &  xdir,
double &  ydir,
double  xmin,
double  xmax,
double  ymin,
double  ymax 
)
inline

Given a point in 2-D space, a direction, and the limits of a box, find the closest distance to box edge in the given direction.

Definition at line 484 of file DMaterialMap.cc.

References x, and y.

double DMaterialMap::EstimatedDistanceToBoundary ( const DVector3 pos,
const DVector3 mom 
)

Give a very rough estimate of the distance a track at this position/momentum will travel before seeing either a significant change in the raditation length of material, or the edge of this map. The primary purpose of this is to help determine the appropriate step size when swimming charged tracks. As we approach a boundary of materials, we want to take smaller steps to ensure the material is integrated properly.

This method can be called for points either inside or outside of this map. It can be that this map overlaps another so for points outside, we look for the point where the track would enter this map.

If a problem is encountered (e.g. point is outside of map and not pointing toward it) we return a value of 1.0E6

Definition at line 303 of file DMaterialMap.cc.

References sqrt().

double DMaterialMap::EstimatedDistanceToBoundarySearch ( double  r,
double  z,
double  p_hatR,
double  p_hatZ,
double &  s_to_boundary 
)

Estimate the distance to the nearest boundary (marked by a a change in radiation length by a factor of 2 or more) by doing an exhaustive bin-by-bin search in the direction of the momentum vector in r-z space. This should only get called for maps with an irregular density profile (i.e. one whose boundaries do not appear to be in pure r or pure z directions.

Definition at line 407 of file DMaterialMap.cc.

References Nz, rmin, and zmin.

void DMaterialMap::FindBoundaries ( void  )
private

Look for boundaries where the material density changes and record them for faster checking during swimming

Definition at line 134 of file DMaterialMap.cc.

References Nr, and Nz.

jerror_t DMaterialMap::FindMat ( DVector3 pos,
double &  rhoZ_overA,
double &  rhoZ_overA_logI,
double &  RadLen 
) const
jerror_t DMaterialMap::FindMat ( DVector3 pos,
double &  density,
double &  A,
double &  Z,
double &  RadLen 
) const
jerror_t DMaterialMap::FindMatALT1 ( DVector3 pos,
double &  KrhoZ_overA,
double &  rhoZ_overA,
double &  logI,
double &  RadLen 
) const
jerror_t DMaterialMap::FindMatKalman ( const DVector3 pos,
double &  K_rho_Z_over_A,
double &  rho_Z_over_A,
double &  LogI,
double &  chi2c_factor,
double &  chi2a_factor,
double &  chi2a_corr,
double &  Z 
) const
const DMaterialMap::MaterialNode * DMaterialMap::FindNode ( const DVector3 pos) const
inline

Definition at line 92 of file DMaterialMap.h.

References nodes, Nr, Nz, one_over_dr, one_over_dz, rmin, DMaterialMap::MaterialNode::Z, and zmin.

Referenced by main().

double DMaterialMap::Getdr ( void  ) const
inline

Definition at line 61 of file DMaterialMap.h.

References dr.

double DMaterialMap::Getdz ( void  ) const
inline

Definition at line 62 of file DMaterialMap.h.

References dz.

string DMaterialMap::GetNamepath ( void  ) const
inline

Definition at line 54 of file DMaterialMap.h.

References namepath.

Referenced by main().

double DMaterialMap::GetNr ( void  ) const
inline

Definition at line 59 of file DMaterialMap.h.

References Nr.

Referenced by DGeometry::ReadMaterialMaps().

double DMaterialMap::GetNz ( void  ) const
inline

Definition at line 60 of file DMaterialMap.h.

References Nz.

Referenced by DGeometry::ReadMaterialMaps().

double DMaterialMap::GetRmax ( void  ) const
inline

Definition at line 56 of file DMaterialMap.h.

References rmax.

Referenced by main().

double DMaterialMap::GetRmin ( void  ) const
inline

Definition at line 55 of file DMaterialMap.h.

References rmin.

Referenced by main().

double DMaterialMap::GetZmax ( void  ) const
inline

Definition at line 58 of file DMaterialMap.h.

References zmax.

Referenced by main().

double DMaterialMap::GetZmin ( void  ) const
inline

Definition at line 57 of file DMaterialMap.h.

References zmin.

Referenced by main().

bool DMaterialMap::IsInMap ( const DVector3 pos) const

Definition at line 291 of file DMaterialMap.cc.

References sqrt(), and zmin.

Referenced by DGeometry::FindDMaterialMap().

Member Data Documentation

double DMaterialMap::dr
private

Definition at line 72 of file DMaterialMap.h.

Referenced by Getdr().

double DMaterialMap::dz
private

Definition at line 72 of file DMaterialMap.h.

Referenced by Getdz().

bool DMaterialMap::ENABLE_BOUNDARY_CHECK
private

Definition at line 80 of file DMaterialMap.h.

bool DMaterialMap::irregular_density_profile
private

Definition at line 82 of file DMaterialMap.h.

bool DMaterialMap::IS_VALID

Definition at line 16 of file DMaterialMap.h.

Referenced by DGeometry::ReadMaterialMaps().

JCalibration* DMaterialMap::jcalib
private

Definition at line 86 of file DMaterialMap.h.

int DMaterialMap::MAX_BOUNDARY_SEARCH_STEPS
private

Definition at line 79 of file DMaterialMap.h.

string DMaterialMap::namepath
private

Definition at line 69 of file DMaterialMap.h.

Referenced by GetNamepath().

vector<vector<MaterialNode> > DMaterialMap::nodes
private

Definition at line 70 of file DMaterialMap.h.

Referenced by FindNode().

int DMaterialMap::Nr
private

Definition at line 71 of file DMaterialMap.h.

Referenced by FindNode(), and GetNr().

int DMaterialMap::Nz
private

Definition at line 71 of file DMaterialMap.h.

Referenced by FindNode(), and GetNz().

double DMaterialMap::one_over_dr
private

Definition at line 73 of file DMaterialMap.h.

Referenced by FindNode().

double DMaterialMap::one_over_dz
private

Definition at line 73 of file DMaterialMap.h.

Referenced by FindNode().

double DMaterialMap::r0
private

Definition at line 74 of file DMaterialMap.h.

vector<double> DMaterialMap::r_boundaries
private

Definition at line 83 of file DMaterialMap.h.

double DMaterialMap::rmax
private

Definition at line 76 of file DMaterialMap.h.

Referenced by GetRmax().

double DMaterialMap::rmin
private

Definition at line 76 of file DMaterialMap.h.

Referenced by FindNode(), and GetRmin().

double DMaterialMap::z0
private

Definition at line 74 of file DMaterialMap.h.

vector<double> DMaterialMap::z_boundaries
private

Definition at line 84 of file DMaterialMap.h.

double DMaterialMap::zmax
private

Definition at line 77 of file DMaterialMap.h.

Referenced by GetZmax().

double DMaterialMap::zmin
private

Definition at line 77 of file DMaterialMap.h.

Referenced by FindNode(), and GetZmin().


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