CMS 3D CMS Logo

/afs/cern.ch/work/a/aaltunda/public/www/CMSSW_6_2_7/src/Validation/CheckOverlap/interface/CheckOverlap.h

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