Go to the documentation of this file.00001 #ifndef Validation_CheckOverlap_H
00002 #define Validation_CheckOverlap_H
00003 #include "SimG4Core/Watcher/interface/SimWatcher.h"
00004 #include "SimG4Core/Notification/interface/Observer.h"
00005 #include "FWCore/ParameterSet/interface/ParameterSet.h"
00006
00007 #include <iostream>
00008 #include <vector>
00009 #include <map>
00010 #include <string>
00011
00012 class BeginOfJob;
00013 class BeginOfRun;
00014 class G4LogicalVolume;
00015 class G4VPhysicalVolume;
00016
00017 typedef std::multimap< G4LogicalVolume*, G4VPhysicalVolume*, std::less<G4LogicalVolume*> > mmlvpv;
00018
00019 class CheckOverlap : public SimWatcher,
00020 public Observer<const BeginOfRun *> {
00021
00022 public:
00023
00024 CheckOverlap(edm::ParameterSet const & p);
00025 ~CheckOverlap();
00026
00027 private:
00028
00029 void update(const BeginOfRun * run);
00030 void checkHierarchyLeafPVLV(G4LogicalVolume * lv, unsigned int leafDepth);
00031 void checkPV(G4VPhysicalVolume * pv, unsigned int leafDepth);
00032 G4VPhysicalVolume * getTopPV();
00033 void dumpLV(G4LogicalVolume * lv, std::string str);
00034
00035 private:
00036
00037 std::vector<std::string> nodeNames;
00038 int nPoints;
00039 std::vector<G4LogicalVolume*> topLV;
00040
00041 };
00042
00043 #endif