FairRoot/PandaRoot
Public Member Functions | Static Public Member Functions | Private Member Functions | Private Attributes | List of all members
PndLmdGeometryHelper Class Reference

#include <PndLmdGeometryHelper.h>

Public Member Functions

virtual ~PndLmdGeometryHelper ()
 
 PndLmdGeometryHelper (const PndLmdGeometryHelper &)=delete
 
void operator= (const PndLmdGeometryHelper &)=delete
 
const PndLmdHitLocationInfogetHitLocationInfo (const std::string &volume_path)
 
const PndLmdHitLocationInfogetHitLocationInfo (int sensor_id)
 
int getOverlapIdFromSensorIDs (int id1, int id2)
 
TVector3 transformPndGlobalToLmdLocal (const TVector3 &vec)
 
TVector3 transformPndGlobalToSensor (const TVector3 &vec, int sensorId)
 
bool isOverlappingArea (const int id1, const int id2)
 
const std::string getPath (unsigned char...)
 
const TGeoHMatrix getMatrixPndGlobalToSensor (const int sensorId)
 
const TGeoHMatrix getMatrixSensorToPndGlobal (const int sensorId)
 
const TGeoHMatrix getMatrixPndGlobalToLmdLocal ()
 
const TGeoHMatrix getMatrixLmdLocalToPndGlobal ()
 
std::vector< std::string > getAllAlignPaths (bool sensors=true, bool modules=false, bool planes=false, bool halfs=false, bool detector=false)
 
std::vector< std::string > getAllAlignableVolumePaths () const
 

Static Public Member Functions

static PndLmdGeometryHelpergetInstance ()
 
static std::vector< int > getAvailableOverlapIDs ()
 

Private Member Functions

 PndLmdGeometryHelper (const std::string &geo_params_config_file_url="lmd-geo-params.json")
 
const PndLmdHitLocationInfocreateMappingEntry (int sensor_id)
 
const PndLmdHitLocationInfocreateMappingEntry (const std::string &volume_path)
 
PndLmdHitLocationInfo translateVolumePathToHitLocationInfo (const std::string &volume_path) const
 

Private Attributes

boost::property_tree::ptree geometry_properties
 
std::vector< std::pair
< std::string, bool > > 
navigation_paths
 
std::map< std::string,
PndLmdHitLocationInfo
volume_path_to_hit_info_mapping
 
std::map< int,
PndLmdHitLocationInfo
sensor_id_to_hit_info_mapping
 
std::string lmd_root_path
 
TGeoManager * fGeoManager
 

Detailed Description

Definition at line 38 of file PndLmdGeometryHelper.h.

Constructor & Destructor Documentation

PndLmdGeometryHelper::PndLmdGeometryHelper ( const std::string &  geo_params_config_file_url = "lmd-geo-params.json")
inlineprivate

Definition at line 49 of file PndLmdGeometryHelper.h.

References fGeoManager, geometry_properties, lmd_root_path, navigation_paths, and TString.

49  :
51  // load parameters
52  read_json(geo_params_config_file_url, geometry_properties);
53  auto pt_general = geometry_properties.get_child("general");
54  for (boost::property_tree::ptree::value_type &nav_path : pt_general.get_child("navigation_paths")) {
55  navigation_paths.push_back(
56  std::make_pair(nav_path.second.get<std::string>("name"),
57  nav_path.second.get<bool>("is_alignable")));
58  }
59 
60  TString actPath = fGeoManager->GetPath();
61  std::stringstream lmd_path;
62  fGeoManager->CdTop();
63  lmd_path << fGeoManager->GetPath() << "/" << navigation_paths[0].first << "_0";
64  lmd_root_path = lmd_path.str();
65  if (actPath != "" && actPath != " ") fGeoManager->cd(actPath);
66 
67  }
TGeoManager * gGeoManager
std::vector< std::pair< std::string, bool > > navigation_paths
boost::property_tree::ptree geometry_properties
PndLmdGeometryHelper::~PndLmdGeometryHelper ( )
virtual

Definition at line 13 of file PndLmdGeometryHelper.cxx.

13  {
14 }
PndLmdGeometryHelper::PndLmdGeometryHelper ( const PndLmdGeometryHelper )
delete

Member Function Documentation

const PndLmdHitLocationInfo & PndLmdGeometryHelper::createMappingEntry ( int  sensor_id)
private

Definition at line 76 of file PndLmdGeometryHelper.cxx.

References PndGeoHandling::GetPath(), PndGeoHandling::Instance(), sensor_id_to_hit_info_mapping, translateVolumePathToHitLocationInfo(), and volume_path_to_hit_info_mapping.

Referenced by getHitLocationInfo().

76  {
77  PndGeoHandling *geo_handling = PndGeoHandling::Instance();
78 
79  std::string vol_path(geo_handling->GetPath(sensor_id).Data());
80 
82  volume_path_to_hit_info_mapping[vol_path] = hit_loc_info;
83  sensor_id_to_hit_info_mapping[sensor_id] = hit_loc_info;
84 
85  return sensor_id_to_hit_info_mapping[sensor_id];
86 }
PndLmdHitLocationInfo translateVolumePathToHitLocationInfo(const std::string &volume_path) const
TString GetPath(Int_t shortID)
for a given shortID the path is returned
std::map< std::string, PndLmdHitLocationInfo > volume_path_to_hit_info_mapping
Class to access the naming information of the MVD.
static PndGeoHandling * Instance()
std::map< int, PndLmdHitLocationInfo > sensor_id_to_hit_info_mapping
const PndLmdHitLocationInfo & PndLmdGeometryHelper::createMappingEntry ( const std::string &  volume_path)
private

Definition at line 88 of file PndLmdGeometryHelper.cxx.

References PndGeoHandling::GetShortID(), PndGeoHandling::Instance(), sensor_id_to_hit_info_mapping, translateVolumePathToHitLocationInfo(), and volume_path_to_hit_info_mapping.

88  {
89  PndGeoHandling *geo_handling = PndGeoHandling::Instance();
90 
91  int sensor_id(geo_handling->GetShortID(volume_path.c_str()));
92 
94  volume_path_to_hit_info_mapping[volume_path] = hit_loc_info;
95  sensor_id_to_hit_info_mapping[sensor_id] = hit_loc_info;
96 
97  return volume_path_to_hit_info_mapping[volume_path];
98 }
PndLmdHitLocationInfo translateVolumePathToHitLocationInfo(const std::string &volume_path) const
std::map< std::string, PndLmdHitLocationInfo > volume_path_to_hit_info_mapping
Class to access the naming information of the MVD.
Int_t GetShortID(TString path)
for a given path the (unique) position of the sensor path in the fSensorNamePar-List is given...
static PndGeoHandling * Instance()
std::map< int, PndLmdHitLocationInfo > sensor_id_to_hit_info_mapping
std::vector< std::string > PndLmdGeometryHelper::getAllAlignableVolumePaths ( ) const

Definition at line 393 of file PndLmdGeometryHelper.cxx.

References fGeoManager, i, and navigation_paths.

Referenced by getAllAlignPaths().

393  {
394  TGeoNode* node = fGeoManager->GetTopNode();
395 
396  std::vector<std::string> alignable_volumes;
397 
398  if (fGeoManager->GetNAlignable() > 0) {
399  for (int i = 0; i < fGeoManager->GetNAlignable(); ++i) {
400  TGeoPNEntry* entry = fGeoManager->GetAlignableEntry(i);
401  if (entry) alignable_volumes.push_back(entry->GetPath());
402  }
403  }
404  else {
405  std::vector<std::pair<TGeoNode*, std::string> > current_paths;
406  current_paths.push_back(std::make_pair(node, fGeoManager->GetPath()));
407 
408  while (current_paths.size() > 0) {
409  auto temp_current_paths = current_paths;
410  current_paths.clear();
411  for (auto const curpath : temp_current_paths) {
412  std::stringstream reg_exp;
413  for (auto nav_path : navigation_paths) {
414  reg_exp << "/" + nav_path.first << "_(\\d+)";
415  std::smatch match;
416  if (std::regex_search(curpath.second, match, std::regex(reg_exp.str() + "/*$"))) {
417  if (nav_path.second) alignable_volumes.push_back(curpath.second);
418  break;
419  }
420  }
421  for (int i = 0; i < curpath.first->GetNdaughters(); ++i) {
422  node = curpath.first->GetDaughter(i);
423  std::stringstream full_path;
424  full_path << curpath.second << "/" << node->GetName();
425  current_paths.push_back(std::make_pair(node, full_path.str()));
426  }
427  }
428  }
429  }
430  return alignable_volumes;
431 }
Int_t i
Definition: run_full.C:25
std::vector< std::pair< std::string, bool > > navigation_paths
std::vector< std::string > PndLmdGeometryHelper::getAllAlignPaths ( bool  sensors = true,
bool  modules = false,
bool  planes = false,
bool  halfs = false,
bool  detector = false 
)

Definition at line 354 of file PndLmdGeometryHelper.cxx.

References getAllAlignableVolumePaths(), navigation_paths, and s.

Referenced by createPndLmdMisalignmentMatrices().

355  {
356 
357  std::vector<std::string> result;
358  auto all_volume_paths = getAllAlignableVolumePaths();
359 
360  std::vector<std::string> filter_strings;
361 
362  if (detector) filter_strings.push_back(navigation_paths[0].first);
363  if (halfs) filter_strings.push_back(navigation_paths[1].first);
364  if (planes) filter_strings.push_back(navigation_paths[2].first);
365  if (modules) filter_strings.push_back(navigation_paths[3].first);
366  if (sensors) filter_strings.push_back(navigation_paths[4].first);
367 
368  std::cout << "total number of alignable volumes: " << all_volume_paths.size() << std::endl;
369 
370  for (auto filter_string : filter_strings) {
371  auto found(all_volume_paths.begin());
372  while (found != all_volume_paths.end()) {
373  found = std::find_if(found, all_volume_paths.end(), [&](const std::string& s) {
374  std::stringstream reg_exp;
375  reg_exp<<"^.*/" << filter_string << "_(\\d+)/*$";
376  std::smatch match;
377  return std::regex_search(s, match, std::regex(reg_exp.str()));
378  });
379 
380  if (found != all_volume_paths.end()) {
381  result.push_back(*found);
382  ++found;
383  }
384  }
385  }
386 
387  // just for fun and so it's easier to examine it
388  std::sort(result.begin(), result.end());
389 
390  return result;
391 }
TLorentzVector s
Definition: Pnd2DStar.C:50
std::vector< std::pair< std::string, bool > > navigation_paths
std::vector< std::string > getAllAlignableVolumePaths() const
std::vector< int > PndLmdGeometryHelper::getAvailableOverlapIDs ( )
static

Definition at line 120 of file PndLmdGeometryHelper.cxx.

Referenced by PndLmdAlignQA::calculateOverlapingAreas(), PndLmdAlignQA::checkForMatrixFiles(), PndLmdPairFinderTask::Init(), and PndLmdAlignManager::init().

120  {
121  std::vector<int> result;
122  int overlapID;
123  for (int iHalf = 0; iHalf < 2; iHalf++) {
124  for (int iPlane = 0; iPlane < 4; iPlane++) {
125  for (int iModule = 0; iModule < 5; iModule++) {
126  for (int iOverlap = 0; iOverlap < 9; iOverlap++) {
127  overlapID = 1000 * iHalf + 100 * iPlane + 10 * iModule + iOverlap;
128  result.push_back(overlapID);
129  }
130  }
131  }
132  }
133  return result;
134 }
const PndLmdHitLocationInfo & PndLmdGeometryHelper::getHitLocationInfo ( const std::string &  volume_path)

Definition at line 100 of file PndLmdGeometryHelper.cxx.

References createMappingEntry(), and volume_path_to_hit_info_mapping.

Referenced by PndLmdDigiQTask::Exec(), PndLmdPairFinderTask::Exec(), getOverlapIdFromSensorIDs(), PndLmdPairFinderTask::getStatistics(), and isOverlappingArea().

100  {
101  auto const &result = volume_path_to_hit_info_mapping.find(volume_path);
102  if (result != volume_path_to_hit_info_mapping.end()) {
103  return result->second;
104  }
105  else {
106  return createMappingEntry(volume_path);
107  }
108 }
const PndLmdHitLocationInfo & createMappingEntry(int sensor_id)
std::map< std::string, PndLmdHitLocationInfo > volume_path_to_hit_info_mapping
const PndLmdHitLocationInfo & PndLmdGeometryHelper::getHitLocationInfo ( int  sensor_id)

Definition at line 110 of file PndLmdGeometryHelper.cxx.

References createMappingEntry(), and sensor_id_to_hit_info_mapping.

110  {
111  auto const &result = sensor_id_to_hit_info_mapping.find(sensor_id);
112  if (result != sensor_id_to_hit_info_mapping.end()) {
113  return result->second;
114  }
115  else {
116  return createMappingEntry(sensor_id);
117  }
118 }
const PndLmdHitLocationInfo & createMappingEntry(int sensor_id)
std::map< int, PndLmdHitLocationInfo > sensor_id_to_hit_info_mapping
static PndLmdGeometryHelper& PndLmdGeometryHelper::getInstance ( )
inlinestatic
const TGeoHMatrix PndLmdGeometryHelper::getMatrixLmdLocalToPndGlobal ( )

Definition at line 272 of file PndLmdGeometryHelper.cxx.

References getMatrixPndGlobalToLmdLocal().

272  {
273  return getMatrixPndGlobalToLmdLocal().Inverse();
274 }
const TGeoHMatrix getMatrixPndGlobalToLmdLocal()
const TGeoHMatrix PndLmdGeometryHelper::getMatrixPndGlobalToLmdLocal ( )

Definition at line 260 of file PndLmdGeometryHelper.cxx.

References fGeoManager, lmd_root_path, and TString.

Referenced by getMatrixLmdLocalToPndGlobal(), and transformPndGlobalToLmdLocal().

260  {
261 
262  TString actPath = fGeoManager->GetPath();
263 
264  fGeoManager->cd(lmd_root_path.c_str());
265  TGeoHMatrix *matrix = (TGeoHMatrix *) (fGeoManager->GetCurrentNode()->GetMatrix());
266 
267  if (actPath != "" && actPath != " ") fGeoManager->cd(actPath);
268 
269  return *matrix;
270 }
const TGeoHMatrix PndLmdGeometryHelper::getMatrixPndGlobalToSensor ( const int  sensorId)

Definition at line 160 of file PndLmdGeometryHelper.cxx.

References fGeoManager, PndGeoHandling::GetPath(), PndGeoHandling::Instance(), and TString.

Referenced by getMatrixSensorToPndGlobal(), and transformPndGlobalToSensor().

160  {
161  PndGeoHandling *geo_handling = PndGeoHandling::Instance();
162  std::string vol_path(geo_handling->GetPath(int(sensorId)));
163 
164  TString actPath = fGeoManager->GetPath();
165  // go to active part of sensor
166  fGeoManager->cd(vol_path.c_str());
167  // we want the matrix of the whole sensor. so just cd up once
168  fGeoManager->CdUp();
169 
170  TGeoHMatrix matrix = *fGeoManager->GetCurrentMatrix();
171  if (actPath != "" && actPath != " ") fGeoManager->cd(actPath);
172 
173  return matrix;
174 }
TString GetPath(Int_t shortID)
for a given shortID the path is returned
Class to access the naming information of the MVD.
static PndGeoHandling * Instance()
const TGeoHMatrix PndLmdGeometryHelper::getMatrixSensorToPndGlobal ( const int  sensorId)

Definition at line 176 of file PndLmdGeometryHelper.cxx.

References getMatrixPndGlobalToSensor().

176  {
177  auto result = getMatrixPndGlobalToSensor(sensorId);
178  return TGeoHMatrix(result.Inverse());
179 }
const TGeoHMatrix getMatrixPndGlobalToSensor(const int sensorId)
int PndLmdGeometryHelper::getOverlapIdFromSensorIDs ( int  id1,
int  id2 
)

Definition at line 181 of file PndLmdGeometryHelper.cxx.

References getHitLocationInfo().

Referenced by PndLmdPairFinderTask::Exec(), PndLmdAlignQA::plotCMvsPXmatrices(), PndLmdAlignQA::plotMatrixresiduals(), and PndLmdAlignQA::plotPXvsCMmatricesResiduals().

181  {
182 
183  int fhalf, fplane, fmodule, fside, fsensor;
184  int bhalf, bplane, bmodule, bside, bsensor;
185 
186  auto const &infoOne = getHitLocationInfo(id1);
187  auto const &infoTwo = getHitLocationInfo(id2);
188 
189  int smalloverlap = -1;
190 
191  fhalf = infoOne.detector_half;
192  bhalf = infoTwo.detector_half;
193 
194  if (bhalf != fhalf) {
195  return -1;
196  }
197 
198  fside = infoOne.module_side;
199  bside = infoTwo.module_side;
200 
201  fplane = infoOne.plane;
202  bplane = infoTwo.plane;
203 
204  fmodule = infoOne.module;
205  bmodule = infoTwo.module;
206 
207  fsensor = infoOne.module_sensor_id;
208  bsensor = infoTwo.module_sensor_id;
209 
210  if (fside == bside) {
211  return -1;
212  }
213 
214  if (bplane != fplane) {
215  return -1;
216  }
217  if (bmodule != fmodule) {
218  return -1;
219  }
220 
221  // 0to5
222  if (fsensor == 0 && bsensor == 5) {
223  smalloverlap = 0;
224  }
225  // 3to8
226  else if (fsensor == 3 && bsensor == 8) {
227  smalloverlap = 1;
228  }
229  // 4to9
230  else if (fsensor == 4 && bsensor == 9) {
231  smalloverlap = 2;
232  }
233  // 3to6
234  else if (fsensor == 3 && bsensor == 6) {
235  smalloverlap = 3;
236  }
237  // 1to8
238  else if (fsensor == 1 && bsensor == 8) {
239  smalloverlap = 4;
240  }
241  // 2to8
242  else if (fsensor == 2 && bsensor == 8) {
243  smalloverlap = 5;
244  }
245  // 2to9
246  else if (fsensor == 2 && bsensor == 9) {
247  smalloverlap = 6;
248  }
249  // 3to7
250  else if (fsensor == 3 && bsensor == 7) {
251  smalloverlap = 7;
252  }
253  // 4to7
254  else if (fsensor == 4 && bsensor == 7) {
255  smalloverlap = 8;
256  }
257  return 1000 * fhalf + 100 * fplane + 10 * fmodule + smalloverlap;
258 }
const PndLmdHitLocationInfo & getHitLocationInfo(const std::string &volume_path)
const std::string PndLmdGeometryHelper::getPath ( unsigned  char...)
bool PndLmdGeometryHelper::isOverlappingArea ( const int  id1,
const int  id2 
)

Definition at line 276 of file PndLmdGeometryHelper.cxx.

References getHitLocationInfo().

Referenced by PndLmdPairFinderTask::candHitsOverlappingArea().

276  {
277 
278  int fhalf, fplane, fmodule, fside, fsensor;
279  int bhalf, bplane, bmodule, bside, bsensor;
280 
281  auto &infoOne = getHitLocationInfo(id1);
282  auto &infoTwo = getHitLocationInfo(id2);
283 
284  fhalf = infoOne.detector_half;
285  bhalf = infoTwo.detector_half;
286 
287  //the necessities for overlapping, must be on same half, plane, module and other side
288  if (bhalf != fhalf) {
289  return false;
290  }
291 
292  fside = infoOne.module_side;
293  bside = infoTwo.module_side;
294 
295  fplane = infoOne.plane;
296  bplane = infoTwo.plane;
297 
298  fmodule = infoOne.module;
299  bmodule = infoTwo.module;
300 
301  fsensor = infoOne.module_sensor_id;
302  bsensor = infoTwo.module_sensor_id;
303 
304  if (bplane != fplane) {
305  return false;
306  }
307  if (bmodule != fmodule) {
308  return false;
309  }
310  if (bside == fside) {
311  return false;
312  }
313 
314  //0to5
315  if (fsensor == 0 && bsensor == 5) {
316  return true;
317  }
318  //3to8
319  if (fsensor == 3 && bsensor == 8) {
320  return true;
321  }
322  //4to9
323  if (fsensor == 4 && bsensor == 9) {
324  return true;
325  }
326  //3to6
327  if (fsensor == 3 && bsensor == 6) {
328  return true;
329  }
330  //1to8
331  if (fsensor == 1 && bsensor == 8) {
332  return true;
333  }
334  //2to8
335  if (fsensor == 2 && bsensor == 8) {
336  return true;
337  }
338  //2to9
339  if (fsensor == 2 && bsensor == 9) {
340  return true;
341  }
342  //3to7
343  if (fsensor == 3 && bsensor == 7) {
344  return true;
345  }
346  //4to7
347  if (fsensor == 4 && bsensor == 7) {
348  return true;
349  }
350  //all other checks are negative? then the sensors don't overlap!
351  return false;
352 }
const PndLmdHitLocationInfo & getHitLocationInfo(const std::string &volume_path)
void PndLmdGeometryHelper::operator= ( const PndLmdGeometryHelper )
delete
TVector3 PndLmdGeometryHelper::transformPndGlobalToLmdLocal ( const TVector3 &  vec)

Definition at line 136 of file PndLmdGeometryHelper.cxx.

References Double_t, and getMatrixPndGlobalToLmdLocal().

Referenced by PndLmdPairFinderTask::Exec().

136  {
137  Double_t result[3];
138  Double_t temp[3];
139 
140  global.GetXYZ(temp);
141 
142  auto matrix = getMatrixPndGlobalToLmdLocal();
143  matrix.MasterToLocal(temp, result);
144 
145  return TVector3(result);
146 }
const TGeoHMatrix getMatrixPndGlobalToLmdLocal()
Double_t
TGeoHMatrix * global
TVector3 PndLmdGeometryHelper::transformPndGlobalToSensor ( const TVector3 &  vec,
int  sensorId 
)

Definition at line 148 of file PndLmdGeometryHelper.cxx.

References Double_t, and getMatrixPndGlobalToSensor().

148  {
149  Double_t result[3];
150  Double_t temp[3];
151 
152  global.GetXYZ(temp);
153 
154  auto matrix = getMatrixPndGlobalToSensor(sensor_id);
155  matrix.MasterToLocal(temp, result);
156 
157  return TVector3(result);
158 }
Double_t
const TGeoHMatrix getMatrixPndGlobalToSensor(const int sensorId)
TGeoHMatrix * global
PndLmdHitLocationInfo PndLmdGeometryHelper::translateVolumePathToHitLocationInfo ( const std::string &  volume_path) const
private

Definition at line 30 of file PndLmdGeometryHelper.cxx.

References PndGeoHandling::cd(), PndLmdHitLocationInfo::detector_half, fGeoManager, geometry_properties, PndGeoHandling::Instance(), PndLmdHitLocationInfo::module, PndLmdHitLocationInfo::module_sensor_id, PndLmdHitLocationInfo::module_side, navigation_paths, PndLmdHitLocationInfo::plane, and TString.

Referenced by createMappingEntry().

31  {
32  PndLmdHitLocationInfo hit_info;
33  std::stringstream reg_exp;
34  for (auto const &nav_path : navigation_paths) {
35  reg_exp << "/" << nav_path.first << "_(\\d+)";
36  }
37 
38  std::smatch match;
39 
40  if (std::regex_search(volume_path, match, std::regex(reg_exp.str()))) {
41  hit_info.detector_half = (unsigned char) std::stoul(match[2]);
42  hit_info.plane = (unsigned char) std::stoul(match[3]);
43  hit_info.module = (unsigned char) std::stoul(match[4]);
44  unsigned char sensor_id((unsigned char) std::stoul(match[5]));
45  hit_info.module_side = 0;
46  hit_info.module_sensor_id = sensor_id;
47 
48  unsigned int sensors_per_module_side = geometry_properties.get<unsigned int>(
49  "general.sensors_per_module_side");
50 
51  if (sensor_id > sensors_per_module_side - 1) {
52  hit_info.module_side = 1;
53  sensor_id = sensor_id % (sensors_per_module_side - 1);
54  }
55 
56  // now we have to make sure the TGeoManager builds the matrix cache
57  // correctly the only way we found (analogous to PndGeoHandling) is to
58  // dive down to this node from the top, then the matrix multiplications
59  // are done correctly
60  TString actPath = fGeoManager->GetPath();
61  fGeoManager->cd(volume_path.c_str());
62  PndGeoHandling::Instance()->cd(fGeoManager->GetCurrentNode());
63  if (actPath != "" && actPath != " ") fGeoManager->cd(actPath);
64 
65  }
66  else {
67  throw std::runtime_error("PndLmdGeometryHelper::translateVolumePathToHitLocationInfo: geometry "
68  "navigation paths mismatch!"
69  " Seems like you used a different lmd geo config file to create a lmd "
70  "root geometry which was use in your simulations...");
71  }
72 
73  return hit_info;
74 }
std::vector< std::pair< std::string, bool > > navigation_paths
Bool_t cd(Int_t id)
as the cd command of TGeoManager just with the ID
static PndGeoHandling * Instance()
boost::property_tree::ptree geometry_properties

Member Data Documentation

TGeoManager* PndLmdGeometryHelper::fGeoManager
private
boost::property_tree::ptree PndLmdGeometryHelper::geometry_properties
private
std::string PndLmdGeometryHelper::lmd_root_path
private

Definition at line 45 of file PndLmdGeometryHelper.h.

Referenced by getMatrixPndGlobalToLmdLocal(), and PndLmdGeometryHelper().

std::vector<std::pair<std::string, bool> > PndLmdGeometryHelper::navigation_paths
private
std::map<int, PndLmdHitLocationInfo> PndLmdGeometryHelper::sensor_id_to_hit_info_mapping
private

Definition at line 43 of file PndLmdGeometryHelper.h.

Referenced by createMappingEntry(), and getHitLocationInfo().

std::map<std::string, PndLmdHitLocationInfo> PndLmdGeometryHelper::volume_path_to_hit_info_mapping
private

Definition at line 42 of file PndLmdGeometryHelper.h.

Referenced by createMappingEntry(), and getHitLocationInfo().


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