Print

Print


Commit in lcdd on MAIN
include/GeometryManager.hh+8-21.7 -> 1.8
       /LCDDMessenger.hh+2-11.2 -> 1.3
src/GeometryManager.cc+24-31.8 -> 1.9
   /LCDDMessenger.cc+10-11.4 -> 1.5
+44-7
4 modified files
JM: Add command for checking overlaps of world volume.

lcdd/include
GeometryManager.hh 1.7 -> 1.8
diff -u -r1.7 -r1.8
--- GeometryManager.hh	5 Sep 2006 23:25:21 -0000	1.7
+++ GeometryManager.hh	17 Nov 2006 02:16:35 -0000	1.8
@@ -1,10 +1,11 @@
-// $Header: /cvs/lcd/lcdd/include/GeometryManager.hh,v 1.7 2006/09/05 23:25:21 jeremy Exp $
+// $Header: /cvs/lcd/lcdd/include/GeometryManager.hh,v 1.8 2006/11/17 02:16:35 jeremy Exp $
 
 #ifndef GEOMETRYMANAGER_HH
 #define GEOMETRYMANAGER_HH 1
 
 class G4Run;
 class G4LogicalVolume;
+class G4VPhysicalVolume;
 
 /**
  * @class GeometryManager
@@ -21,10 +22,15 @@
 
 public:
 
-  G4LogicalVolume* getWorldLogicalVolume();
+  G4LogicalVolume* getWorldLogicalVolume() const;
+  G4VPhysicalVolume* getWorldPhysicalVolume() const;
   void beginRun(const G4Run*);    
   void setupWorldRegionInformation();
 
+  // Check overlaps using G4PVPlacement::CheckOverlaps() on the 
+  // current world volume registered with Geant4.
+  const void checkOverlaps() const;
+
 private:
 
   static GeometryManager* m_instance;

lcdd/include
LCDDMessenger.hh 1.2 -> 1.3
diff -u -r1.2 -r1.3
--- LCDDMessenger.hh	4 Mar 2005 22:51:02 -0000	1.2
+++ LCDDMessenger.hh	17 Nov 2006 02:16:36 -0000	1.3
@@ -1,4 +1,4 @@
-// $Header: /cvs/lcd/lcdd/include/LCDDMessenger.hh,v 1.2 2005/03/04 22:51:02 jeremy Exp $
+// $Header: /cvs/lcd/lcdd/include/LCDDMessenger.hh,v 1.3 2006/11/17 02:16:36 jeremy Exp $
 
 #ifndef LCDDMessenger_h
 #define LCDDMessenger_h 1
@@ -37,5 +37,6 @@
   G4UIcommand* m_setURICmd;
   G4UIcommand* m_setSetupNameCmd;
   G4UIcommand* m_setVersionCmd;
+  G4UIcommand* m_checkOverlapsCmd;
 }; // class
 #endif

lcdd/src
GeometryManager.cc 1.8 -> 1.9
diff -u -r1.8 -r1.9
--- GeometryManager.cc	20 Apr 2005 19:04:17 -0000	1.8
+++ GeometryManager.cc	17 Nov 2006 02:16:36 -0000	1.9
@@ -1,4 +1,4 @@
-// $Header: /cvs/lcd/lcdd/src/GeometryManager.cc,v 1.8 2005/04/20 19:04:17 jeremy Exp $
+// $Header: /cvs/lcd/lcdd/src/GeometryManager.cc,v 1.9 2006/11/17 02:16:36 jeremy Exp $
 #include "GeometryManager.hh"
 
 // LCDD
@@ -12,6 +12,8 @@
 #include "G4Run.hh"
 #include "G4LogicalVolume.hh"
 #include "G4VisAttributes.hh"
+#include "G4PVPlacement.hh"
+#include "G4TransportationManager.hh"
 
 GeometryManager* GeometryManager::m_instance = 0;
 
@@ -41,9 +43,15 @@
   }
 }
 
-G4LogicalVolume* GeometryManager::getWorldLogicalVolume()
+G4LogicalVolume* GeometryManager::getWorldLogicalVolume() const
 {
-  return GDMLProcessor::GetInstance()->GetWorldVolume()->GetLogicalVolume();
+  //return GDMLProcessor::GetInstance()->GetWorldVolume()->GetLogicalVolume();
+  return getWorldPhysicalVolume()->GetLogicalVolume();
+}
+
+G4VPhysicalVolume* GeometryManager::getWorldPhysicalVolume() const
+{
+  return G4TransportationManager::GetTransportationManager()->GetNavigatorForTracking()->GetWorldVolume();
 }
 
 void GeometryManager::setupWorldRegionInformation()
@@ -59,3 +67,16 @@
   worldLV->GetRegion()->SetUserInformation( regInfo );
   m_worldRegionIsSetup = true;
 }
+
+const void GeometryManager::checkOverlaps() const
+{
+  G4VPhysicalVolume* world = getWorldPhysicalVolume();
+  if (world) {
+    G4cout << "Running overlap check on world volume ..." << G4endl;
+    ((G4PVPlacement*)world)->CheckOverlaps();
+    G4cout << "Done with overlap check." << G4endl;
+  }
+  else {
+    G4cerr << "Failed to run overlap check.  The world volume does not exist!" << G4endl;
+  }
+}

lcdd/src
LCDDMessenger.cc 1.4 -> 1.5
diff -u -r1.4 -r1.5
--- LCDDMessenger.cc	9 Dec 2005 01:56:21 -0000	1.4
+++ LCDDMessenger.cc	17 Nov 2006 02:16:36 -0000	1.5
@@ -1,12 +1,14 @@
-// $Header: /cvs/lcd/lcdd/src/LCDDMessenger.cc,v 1.4 2005/12/09 01:56:21 jeremy Exp $
+// $Header: /cvs/lcd/lcdd/src/LCDDMessenger.cc,v 1.5 2006/11/17 02:16:36 jeremy Exp $
 
 // LCDD
 #include "LCDDMessenger.hh"
 #include "LCDDParser.hh"
+#include "GeometryManager.hh"
 
 // Geant4
 #include "G4UImessenger.hh"
 #include "G4UIcommand.hh"
+#include "G4UIcmdWithoutParameter.hh"
 #include "G4UIdirectory.hh"
 
 #include <cassert>
@@ -55,6 +57,9 @@
     parser->setSetupName(setup);
     parser->setVersion(version);
   }
+  else if ( cmd == m_checkOverlapsCmd ) {
+    GeometryManager::instance()->checkOverlaps();
+  }
   else {
     G4cerr << "WARNING: Unknown cmd to LCDDMessenger - " << cmd << G4endl;
   }
@@ -110,4 +115,8 @@
 
   p = new G4UIparameter("Version",'s',true);
   m_setupCmd->SetParameter(p);
+
+  // Check overlaps.
+  m_checkOverlapsCmd = new G4UIcmdWithoutParameter("/lcdd/check_overlaps",this); 
+  m_checkOverlapsCmd->SetGuidance("Call CheckOverlaps on the world volume.");  
 }
CVSspam 0.2.8