CMS 3D CMS Logo

PrintGeomInfoAction.h
Go to the documentation of this file.
1 #ifndef SimG4Core_PrintGeomInfoAction_H
2 #define SimG4Core_PrintGeomInfoAction_H
3 
7 
8 #include "G4NavigationHistory.hh"
9 
10 #include <iostream>
11 #include <vector>
12 #include <map>
13 #include <string>
14 
15 class BeginOfJob;
16 class BeginOfRun;
17 class G4LogicalVolume;
18 class G4VPhysicalVolume;
19 class G4VSolid;
20 
21 typedef std::map< G4VPhysicalVolume*, G4VPhysicalVolume*, std::less<G4VPhysicalVolume*> > mpvpv;
22 typedef std::multimap< G4LogicalVolume*, G4VPhysicalVolume*, std::less<G4LogicalVolume*> > mmlvpv;
23 
25  public Observer<const BeginOfJob *>,
26  public Observer<const BeginOfRun *> {
27 
28 public:
30  ~PrintGeomInfoAction() override;
31 private:
32  void update(const BeginOfJob * job) override;
33  void update(const BeginOfRun * run) override;
34  void dumpSummary(std::ostream& out = std::cout);
35  void dumpG4LVList(std::ostream& out = std::cout);
36  void dumpG4LVTree(std::ostream& out = std::cout);
37  void dumpMaterialList(std::ostream& out = std::cout);
38  void dumpG4LVLeaf(G4LogicalVolume * lv, unsigned int leafDepth, unsigned int count, std::ostream & out = std::cout);
39  int countNoTouchables();
40  void add1touchable(G4LogicalVolume * lv, int & nTouch);
41  void dumpHierarchyTreePVLV(std::ostream& out = std::cout);
42  void dumpHierarchyLeafPVLV(G4LogicalVolume * lv, unsigned int leafDepth, std::ostream & out = std::cout);
43  void dumpLV(G4LogicalVolume * lv, unsigned int leafDepth, std::ostream & out = std::cout);
44  void dumpPV(G4VPhysicalVolume * pv, unsigned int leafDepth, std::ostream & out = std::cout);
45  void dumpTouch(G4VPhysicalVolume * pv, unsigned int leafDepth, std::ostream & out = std::cout);
46  std::string spacesFromLeafDepth(unsigned int leafDepth);
47  void dumpSolid(G4VSolid * sol, unsigned int leafDepth, std::ostream & out = std::cout);
48  G4VPhysicalVolume * getTopPV();
49  G4LogicalVolume * getTopLV();
50 private:
56  int nchar;
57  std::vector<std::string> names;
59  G4VPhysicalVolume * theTopPV;
60  G4NavigationHistory fHistory;
61 };
62 
63 #endif
void add1touchable(G4LogicalVolume *lv, int &nTouch)
void dumpMaterialList(std::ostream &out=std::cout)
void dumpSummary(std::ostream &out=std::cout)
PrintGeomInfoAction(edm::ParameterSet const &p)
void dumpPV(G4VPhysicalVolume *pv, unsigned int leafDepth, std::ostream &out=std::cout)
std::multimap< G4LogicalVolume *, G4VPhysicalVolume *, std::less< G4LogicalVolume * > > mmlvpv
G4VPhysicalVolume * theTopPV
void dumpHierarchyTreePVLV(std::ostream &out=std::cout)
std::vector< std::string > names
void dumpG4LVTree(std::ostream &out=std::cout)
void dumpSolid(G4VSolid *sol, unsigned int leafDepth, std::ostream &out=std::cout)
void dumpLV(G4LogicalVolume *lv, unsigned int leafDepth, std::ostream &out=std::cout)
G4NavigationHistory fHistory
std::map< G4VPhysicalVolume *, G4VPhysicalVolume *, std::less< G4VPhysicalVolume * > > mpvpv
def pv(vc)
Definition: MetAnalyzer.py:7
std::string spacesFromLeafDepth(unsigned int leafDepth)
G4VPhysicalVolume * getTopPV()
void dumpHierarchyLeafPVLV(G4LogicalVolume *lv, unsigned int leafDepth, std::ostream &out=std::cout)
G4LogicalVolume * getTopLV()
void dumpG4LVList(std::ostream &out=std::cout)
void dumpTouch(G4VPhysicalVolume *pv, unsigned int leafDepth, std::ostream &out=std::cout)
void update(const BeginOfJob *job) override
This routine will be called when the appropriate signal arrives.
void dumpG4LVLeaf(G4LogicalVolume *lv, unsigned int leafDepth, unsigned int count, std::ostream &out=std::cout)