14 #include <JANA/jerror.h>
15 #include <JANA/JGeometry.h>
39 virtual const char*
className(
void){
return static_className();}
50 bool Get(
string xpath,
string &sval)
const {
return jgeom->Get(xpath, sval);}
51 bool Get(
string xpath, map<string, string> &svals)
const {
return jgeom->Get(xpath, svals);}
52 template<
class T>
bool Get(
string xpath, T &val)
const {
return jgeom->Get(xpath, val);}
53 template<
class T>
bool Get(
string xpath, vector<T> &vals,
string delimiter=
" ")
const {
return jgeom->Get(xpath, vals, delimiter);}
54 template<
class T>
bool Get(
string xpath, map<string,T> &vals)
const {
return jgeom->Get(xpath, vals);}
60 bool Get(
string xpath, vector<double> &vals,
string delimiter=
" ")
const {
return jgeom->Get(xpath, vals, delimiter);}
61 bool Get(
string xpath, vector<int> &vals,
string delimiter=
" ")
const {
return jgeom->Get(xpath, vals, delimiter);}
62 bool Get(
string xpath, vector<float> &vals,
string delimiter=
" ")
const {
return jgeom->Get(xpath, vals, delimiter);}
65 string delimiter=
" ")
const
66 {
return jgeom->GetMultiple(xpath,vals,delimiter);}
78 double dx_u,
dy_u,dx_d,dy_d;
81 typedef pair<string, map<string,string> >
node_t;
84 void FindNodes(
string xpath, vector<xpathparsed_t> &matched_xpaths)
const;
87 jerror_t FindMat(
DVector3 &pos,
double &rhoZ_overA,
double &rhoZ_overA_logI,
double &RadLen)
const;
88 jerror_t FindMat(
DVector3 &pos,
double &density,
double &A,
double &Z,
double &RadLen)
const;
90 double &rhoZ_overA,
double &LnI,
91 double &
X0,
double *s_to_boundary=NULL)
const;
94 double &rhoZ_overA,
double &LnI,
double &Z,
97 double &chi2a_factor2,
98 unsigned int &last_index,
99 double *s_to_boundary=NULL)
const;
100 jerror_t FindMatKalman(
const DVector3 &pos,
102 double &rhoZ_overA,
double &LnI,
104 double &chi2c_factor,
105 double &chi2a_factor,
106 double &chi2a_factor2,
107 unsigned int &last_index)
const;
113 const DMaterial* GetDMaterial(
string name)
const;
115 bool GetFDCWires(vector<vector<DFDCWire *> >&
fdcwires)
const;
116 bool GetFDCCathodes(vector<vector<DFDCCathode *> >&fdccathodes)
const;
117 bool GetFDCZ(vector<double> &z_wires)
const;
118 bool GetFDCStereo(vector<double> &stereo_angles)
const;
119 bool GetFDCRmin(vector<double> &rmin_packages)
const;
120 bool GetFDCRmax(
double &rmax_active_fdc)
const;
122 bool GetCDCWires(vector<vector<DCDCWire *> >&cdcwires)
const;
123 bool GetCDCOption(
string &cdc_option)
const;
124 bool GetCDCCenterZ(
double &cdc_center_z)
const;
125 bool GetCDCAxialLength(
double &cdc_axial_length)
const;
126 bool GetCDCStereo(vector<double> &cdc_stereo)
const;
127 bool GetCDCRmid(vector<double> &cdc_rmid)
const;
128 bool GetCDCNwires(vector<int> &cdc_nwires)
const;
129 bool GetCDCEndplate(
double &z,
double &dz,
double &
rmin,
double &
rmax)
const;
130 bool GetCDCAxialWires(
unsigned int ring,
unsigned int ncopy,
131 double zcenter,
double dz,
132 vector<vector<cdc_offset_t> >&cdc_offsets,
133 vector<DCDCWire*> &axialwires,
134 vector<double>&rot_angles,
double dx,
136 bool GetCDCStereoWires(
unsigned int ring,
unsigned int ncopy,
139 vector<vector<cdc_offset_t> >&cdc_offsets,
140 vector<DCDCWire*> &stereowires,
141 vector<double>&rot_angles,
142 double dx,
double dy)
const;
144 bool GetBCALRmin(
float &bcal_rmin)
const;
145 bool GetBCALfADCRadii(vector<float> &fADC_radii)
const;
146 bool GetBCALNmodules(
unsigned int &bcal_nmodules)
const;
147 bool GetBCALCenterZ(
float &bcal_center_z)
const;
148 bool GetBCALLength(
float &bcal_length)
const;
149 bool GetBCALDepth(
float &bcal_depth)
const;
150 bool GetBCALPhiShift(
float &bcal_phi_shift)
const;
152 bool GetCCALZ(
double &z_ccal)
const;
154 bool GetFCALZ(
double &z_fcal)
const;
155 bool GetDIRCZ(
double &z_dirc)
const;
156 bool GetTOFZ(vector<double> &z_tof)
const;
157 bool GetTOFPaddlePerpPositions(vector<double> &y_tof)
const;
158 bool GetTOFPaddleParameters(map<string,double> &paddle_params)
const;
159 bool GetTargetZ(
double &z_target)
const;
160 bool GetTargetLength(
double &target_length)
const;
162 bool GetStartCounterGeom(vector<vector<DVector3> >&pos,
163 vector<vector<DVector3> >&norm)
const;
175 vector<DMaterialMap*> GetMaterialMapVector(
void)
const;
179 void ReadMaterialMaps(
void)
const;
180 void GetMaterials(
void)
const;
181 bool GetCompositeMaterial(
const string &name,
double &density,
double &radlen)
const;
200 #endif // _DGeometry_
JGeometry * GetJGeometry(void)
bool Get(string xpath, vector< T > &vals, string delimiter=" ") const
bool Get(string xpath, vector< int > &vals, string delimiter=" ") const
bool Get(string xpath, T &val) const
pthread_mutex_t materialmap_mutex
pthread_mutex_t materials_mutex
static vector< vector< DFDCWire * > > fdcwires
bool Get(string xpath, string &sval) const
bool materialmaps_read
Material maps generated automatically(indirectly) from XML with ranges and specs. ...
vector< DMaterialMap * > materialmaps
Older implementation to keep track of material specs without ranges.
bool Get(string xpath, vector< float > &vals, string delimiter=" ") const
pair< string, map< string, string > > node_t
bool Get(string xpath, map< string, string > &svals) const
DMagneticFieldMap * bfield
bool Get(string xpath, map< string, T > &vals) const
vector< DMaterial * > materials
vector< node_t > xpathparsed_t
The DMaterial class holds information on a single material type. The main purpose is to hold informat...
virtual const char * className(void)
bool Get(string xpath, vector< double > &vals, string delimiter=" ") const
bool GetMultiple(string xpath, vector< vector< double > > &vals, string delimiter=" ") const
static const char * static_className(void)
pthread_mutex_t bfield_mutex