Skip to content
Snippets Groups Projects
Geant4Converter.cpp 41.2 KiB
Newer Older
Markus Frank's avatar
Markus Frank committed

/// Create geometry conversion
Geant4Converter& Geant4Converter::create(DetElement top) {
  Geant4GeometryInfo& geo = this->init();
  m_data->clear();
Markus Frank's avatar
Markus Frank committed
  m_checkOverlaps = false;
  // We do not have to handle defines etc.
  // All positions and the like are not really named.
  // Hence, start creating the G4 objects for materials, solids and log volumes.
  Material mat = m_lcdd.material("Argon");
Markus Frank's avatar
Markus Frank committed
  handleMaterial(mat.name(), mat);
  mat = m_lcdd.material("Silicon");
Markus Frank's avatar
Markus Frank committed
  handleMaterial(mat.name(), mat);
Markus Frank's avatar
Markus Frank committed
  //setPrintLevel(VERBOSE);

  handle(this, geo.volumes, &Geant4Converter::collectVolume);
  handle(this, geo.solids, &Geant4Converter::handleSolid);
Markus Frank's avatar
Markus Frank committed
  printout(m_outputLevel, "Geant4Converter", "++ Handled %ld solids.", geo.solids.size());
Markus Frank's avatar
Markus Frank committed
  handleRefs(this, geo.vis, &Geant4Converter::handleVis);
Markus Frank's avatar
Markus Frank committed
  printout(m_outputLevel, "Geant4Converter", "++ Handled %ld visualization attributes.", geo.vis.size());
  handleMap(this, geo.limits, &Geant4Converter::handleLimitSet);
Markus Frank's avatar
Markus Frank committed
  printout(m_outputLevel, "Geant4Converter", "++ Handled %ld limit sets.", geo.limits.size());
  handleMap(this, geo.regions, &Geant4Converter::handleRegion);
Markus Frank's avatar
Markus Frank committed
  printout(m_outputLevel, "Geant4Converter", "++ Handled %ld regions.", geo.regions.size());
  handle(this, geo.volumes, &Geant4Converter::handleVolume);
Markus Frank's avatar
Markus Frank committed
  printout(m_outputLevel, "Geant4Converter", "++ Handled %ld volumes.", geo.volumes.size());
  handleRMap(this, *m_data, &Geant4Converter::handleAssembly);
  // Now place all this stuff appropriately
Markus Frank's avatar
Markus Frank committed
  handleRMap(this, *m_data, &Geant4Converter::handlePlacement);
  //==================== Fields
  handleProperties(m_lcdd.properties());
Markus Frank's avatar
Markus Frank committed

  //handleMap(this, geo.sensitives, &Geant4Converter::printSensitive);
  //handleRMap(this, *m_data, &Geant4Converter::printPlacement);

  geo.setWorld(top.placement().ptr());
Markus Frank's avatar
Markus Frank committed
  printout(INFO, "Geant4Converter", "+++  Successfully converted geometry to Geant4.");