18 #include "G4PhysicalVolumeStore.hh" 19 #include "G4LogicalVolumeStore.hh" 20 #include "G4VPhysicalVolume.hh" 21 #include "G4LogicalVolume.hh" 22 #include "G4VSolid.hh" 23 #include "G4Material.hh" 25 #include "G4VisAttributes.hh" 26 #include "G4UserLimits.hh" 27 #include "G4TransportationManager.hh" 33 std::vector<std::string> defNames;
36 <<
" nodes:" << G4endl;
70 (*job)()->get<IdealGeometryRecord>().get(pDD);
77 git != gra.
end(); ++git) {
83 for (DDCompactView::graph_type::edge_list::const_iterator cit = git->begin();
84 cit != git->end(); ++cit) {
90 G4cout <<
"Finds " <<
solidMap_.size() <<
" different solids in the tree" 96 std::map<DDSolidShape,std::string>::iterator it =
solidShape_.find(solid.
shape());
112 const G4LogicalVolumeStore * lvs = G4LogicalVolumeStore::GetInstance();
113 std::vector<G4LogicalVolume *>::const_iterator lvcite;
114 for (lvcite = lvs->begin(); lvcite != lvs->end(); lvcite++) {
115 if ((*lvcite)->GetName() == (G4String)(
nodeNames_[
k])) {
128 G4VSolid* sl = lv->GetSolid();
131 for(
int ii = 0;
ii < (
int)(lv->GetNoDaughters());
ii++)
132 fillLV(lv->GetDaughter(
ii)->GetLogicalVolume());
138 out << G4endl << G4endl
139 <<
"@@@@@@@@@@@@@@@@@@ Dumping Summary For Node " << name << G4endl;
140 out <<
" Number of G4VSolid's: " <<
sls_.size() << G4endl;
141 out <<
" Number of G4LogicalVolume's: " <<
lvs_.size() << G4endl;
142 out <<
" Number of Touchable's: " <<
touch_.size() << G4endl;
144 out << G4endl <<
"Occurence of each type of shape among Solids" << G4endl;
146 for (std::vector<G4VSolid*>::iterator it=
sls_.begin(); it!=
sls_.end(); ++it) {
152 out << G4endl <<
"Occurence of each type of shape among Logical Volumes" 155 for (std::vector<G4LogicalVolume*>::iterator it =
lvs_.begin();
156 it !=
lvs_.end(); ++it) {
162 out << G4endl <<
"Occurence of each type of shape among Touchables" 165 for (std::vector<G4LogicalVolume*>::iterator it =
touch_.begin();
166 it !=
touch_.end(); ++it) {
175 return G4TransportationManager::GetTransportationManager()->GetNavigatorForTracking()->GetWorldVolume();
180 if (name.find(
"_refl") < name.size()) {
182 name = name.substr(0,(name.find(
"_refl")));
184 std::map<std::string,DDSolidShape>::const_iterator jt=
solidMap_.find(name);
187 if (itr ==
kount_.end()) {
188 kount_[shape] = (
refl) ? std::pair<int,int>(0,1) : std::pair<int,int>(1,0);
191 std::pair<int,int>(((itr->second).first),++((itr->second).second)) :
192 std::pair<int,int>(++((itr->second).
first),((itr->second).
second));
199 itr !=
kount_.end(); ++itr, ++
k) {
201 out <<
"Shape [" << k <<
"] " << shape <<
" # " << (itr->second).
first 202 <<
" : " << (itr->second).second << G4endl;
std::map< DDSolidShape, std::string > solidShape_
T getUntrackedParameter(std::string const &, T const &) const
void addName(std::string name)
void addSolid(const DDLogicalPart &part)
void printSummary(std::ostream &out)
const graph_type & graph() const
Provides read-only access to the data structure of the compact-view.
const N & nodeData(const edge_type &) const
G4VPhysicalVolume * getTopPV()
G4VPhysicalVolume * theTopPV_
const DDSolid & solid(void) const
Returns a reference object of the solid being the shape of this LogicalPart.
std::vector< double >::size_type index_type
void find(edm::Handle< EcalRecHitCollection > &hits, DetId thisDet, std::vector< EcalRecHitCollection::const_iterator > &hit, bool debug=false)
type of data representation of DDCompactView
A DDSolid represents the shape of a part.
U second(std::pair< T, U > const &p)
std::vector< G4LogicalVolume * > touch_
PrintGeomSummary(edm::ParameterSet const &p)
A DDLogicalPart aggregates information concerning material, solid and sensitveness ...
DDSolidShape shape(void) const
The type of the solid.
std::map< DDSolidShape, std::pair< int, int > > kount_
std::vector< std::string > nodeNames_
void fillLV(G4LogicalVolume *lv)
std::vector< G4VSolid * > sls_
void dumpSummary(std::ostream &out, std::string name)
std::vector< G4LogicalVolume * > lvs_
adj_list::const_iterator const_adj_iterator
void update(const BeginOfJob *job)
This routine will be called when the appropriate signal arrives.
const std::string & name() const
Returns the name.
std::map< std::string, DDSolidShape > solidMap_