CMS 3D CMS Logo

PrintGeomMatInfo.h
Go to the documentation of this file.
1 #ifndef SimG4Core_PrintGeomMatInfo_H
2 #define SimG4Core_PrintGeomMatInfo_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:
31 private:
32  void update(const BeginOfJob * job);
33  void update(const BeginOfRun * run);
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  void dumpG4LVMatBudget(std::ostream& out = std::cout);
40  void dumpG4LVLeafWithMat(G4LogicalVolume * lv, unsigned int leafDepth, unsigned int count, std::ostream & out = std::cout);
41  int countNoTouchables();
42  void add1touchable(G4LogicalVolume * lv, int & nTouch);
43  void dumpHierarchyTreePVLV(std::ostream& out = std::cout);
44  void dumpHierarchyLeafPVLV(G4LogicalVolume * lv, unsigned int leafDepth, std::ostream & out = std::cout);
45  void dumpLV(G4LogicalVolume * lv, unsigned int leafDepth, std::ostream & out = std::cout);
46  void dumpPV(G4VPhysicalVolume * pv, unsigned int leafDepth, std::ostream & out = std::cout);
47  void dumpTouch(G4VPhysicalVolume * pv, unsigned int leafDepth, std::ostream & out = std::cout);
48  std::string spacesFromLeafDepth(unsigned int leafDepth);
49  void dumpSolid(G4VSolid * sol, unsigned int leafDepth, std::ostream & out = std::cout);
50  G4VPhysicalVolume * getTopPV();
51  G4LogicalVolume * getTopLV();
52 private:
58  int nchar;
59  std::vector<std::string> names;
60  std::vector<std::string> _lvNames2Dump;
61  std::vector<double> _radiusLayer;
62  std::vector<double> _zLayer;
63  std::vector<double> _areaLayer;
64  std::vector<unsigned int> _countsPerLevel;
65  unsigned int _maxLevelsCounted;
66  unsigned int _level2Dump;
67  unsigned int _dumpIndex;
68  bool _dumpIt;
70  G4VPhysicalVolume * theTopPV;
71  G4NavigationHistory fHistory;
72 };
73 
74 #endif
G4VPhysicalVolume * getTopPV()
void dumpG4LVTree(std::ostream &out=std::cout)
std::multimap< G4LogicalVolume *, G4VPhysicalVolume *, std::less< G4LogicalVolume * > > mmlvpv
void dumpG4LVLeafWithMat(G4LogicalVolume *lv, unsigned int leafDepth, unsigned int count, std::ostream &out=std::cout)
std::vector< double > _radiusLayer
std::vector< std::string > names
void dumpMaterialList(std::ostream &out=std::cout)
G4VPhysicalVolume * theTopPV
void add1touchable(G4LogicalVolume *lv, int &nTouch)
void dumpHierarchyLeafPVLV(G4LogicalVolume *lv, unsigned int leafDepth, std::ostream &out=std::cout)
void dumpG4LVList(std::ostream &out=std::cout)
std::vector< double > _areaLayer
void dumpG4LVMatBudget(std::ostream &out=std::cout)
std::vector< double > _zLayer
void dumpHierarchyTreePVLV(std::ostream &out=std::cout)
void dumpLV(G4LogicalVolume *lv, unsigned int leafDepth, std::ostream &out=std::cout)
std::string spacesFromLeafDepth(unsigned int leafDepth)
unsigned int _dumpIndex
std::map< G4VPhysicalVolume *, G4VPhysicalVolume *, std::less< G4VPhysicalVolume * > > mpvpv
void dumpPV(G4VPhysicalVolume *pv, unsigned int leafDepth, std::ostream &out=std::cout)
std::map< G4VPhysicalVolume *, G4VPhysicalVolume *, std::less< G4VPhysicalVolume * > > mpvpv
def pv(vc)
Definition: MetAnalyzer.py:6
void dumpTouch(G4VPhysicalVolume *pv, unsigned int leafDepth, std::ostream &out=std::cout)
void dumpSummary(std::ostream &out=std::cout)
G4LogicalVolume * getTopLV()
PrintGeomMatInfo(edm::ParameterSet const &p)
void update(const BeginOfJob *job)
This routine will be called when the appropriate signal arrives.
std::vector< std::string > _lvNames2Dump
void dumpSolid(G4VSolid *sol, unsigned int leafDepth, std::ostream &out=std::cout)
void dumpG4LVLeaf(G4LogicalVolume *lv, unsigned int leafDepth, unsigned int count, std::ostream &out=std::cout)
unsigned int _maxLevelsCounted
unsigned int _level2Dump
std::vector< unsigned int > _countsPerLevel
G4NavigationHistory fHistory