4 modified files
lcdd/include
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
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
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
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