#include <G4TrajectoryOriginVolumeFilter.hh>
Inheritance diagram for G4TrajectoryOriginVolumeFilter:
Public Member Functions | |
G4TrajectoryOriginVolumeFilter (const G4String &name="Unspecified") | |
virtual | ~G4TrajectoryOriginVolumeFilter () |
virtual bool | Evaluate (const G4VTrajectory &) const |
virtual void | Print (std::ostream &ostr) const |
virtual void | Clear () |
void | Add (const G4String &volume) |
Definition at line 40 of file G4TrajectoryOriginVolumeFilter.hh.
G4TrajectoryOriginVolumeFilter::G4TrajectoryOriginVolumeFilter | ( | const G4String & | name = "Unspecified" |
) |
Definition at line 37 of file G4TrajectoryOriginVolumeFilter.cc.
00038 :G4SmartFilter<G4VTrajectory>(name) 00039 {}
G4TrajectoryOriginVolumeFilter::~G4TrajectoryOriginVolumeFilter | ( | ) | [virtual] |
void G4TrajectoryOriginVolumeFilter::Add | ( | const G4String & | volume | ) |
void G4TrajectoryOriginVolumeFilter::Clear | ( | ) | [virtual] |
Implements G4SmartFilter< G4VTrajectory >.
Definition at line 99 of file G4TrajectoryOriginVolumeFilter.cc.
bool G4TrajectoryOriginVolumeFilter::Evaluate | ( | const G4VTrajectory & | ) | const [virtual] |
Implements G4SmartFilter< G4VTrajectory >.
Definition at line 44 of file G4TrajectoryOriginVolumeFilter.cc.
References G4cout, G4endl, G4VPhysicalVolume::GetLogicalVolume(), G4VPhysicalVolume::GetName(), G4LogicalVolume::GetName(), G4TransportationManager::GetNavigatorForTracking(), G4VTrajectory::GetPoint(), G4VTrajectoryPoint::GetPosition(), G4TransportationManager::GetTransportationManager(), G4SmartFilter< G4VTrajectory >::GetVerbose(), and G4Navigator::LocateGlobalPointAndSetup().
00045 { 00046 G4Navigator* navigator = G4TransportationManager::GetTransportationManager()->GetNavigatorForTracking(); 00047 00048 G4VTrajectoryPoint* aTrajectoryPoint = traj.GetPoint(0); 00049 assert (0 != aTrajectoryPoint); 00050 00051 G4VPhysicalVolume* volume = navigator->LocateGlobalPointAndSetup(aTrajectoryPoint->GetPosition()); 00052 00053 // Logical volume 00054 G4LogicalVolume* logicalVolume = volume->GetLogicalVolume(); 00055 assert (0 != logicalVolume); 00056 00057 // Get volume names 00058 G4String logicalName = logicalVolume->GetName(); 00059 G4String physicalName = volume->GetName(); 00060 00061 if (GetVerbose()) { 00062 G4cout<<"G4TrajectoryOriginVolumeFilter processing trajectory with originating volume "<<G4endl; 00063 G4cout<<"logical and physical names: "<<logicalName<<" "<<physicalName<<G4endl; 00064 } 00065 // Search for logical volume name 00066 std::vector<G4String>::const_iterator iterLogical = std::find(fVolumes.begin(), fVolumes.end(), logicalName); 00067 00068 // Keep if logical volume registered 00069 if (iterLogical != fVolumes.end()) return true; 00070 00071 // Repeat for physical volume name 00072 std::vector<G4String>::const_iterator iterPhysical = std::find(fVolumes.begin(), fVolumes.end(), physicalName); 00073 00074 if (iterPhysical != fVolumes.end()) return true; 00075 00076 // Volume names not registered 00077 return false; 00078 }
void G4TrajectoryOriginVolumeFilter::Print | ( | std::ostream & | ostr | ) | const [virtual] |
Implements G4SmartFilter< G4VTrajectory >.
Definition at line 87 of file G4TrajectoryOriginVolumeFilter.cc.
References G4endl.
00088 { 00089 ostr<<"Volume names registered: "<<G4endl; 00090 std::vector<G4String>::const_iterator iter = fVolumes.begin(); 00091 00092 while (iter != fVolumes.end()) { 00093 ostr<<*iter<<G4endl; 00094 iter++; 00095 } 00096 }