89 {
90 if (aStep) {
91
92
93 VolumeTreeNavigator currentTree( aStep );
94
95
96
97
98
99
101 if (currentTree.GetStepNumber() > 1) {
102 for ( vector<string>::const_iterator it =
m_trajectory.begin();
104 if ( *it ==
stringify( currentTree.GetVolume()->GetName() ) ) {
106 break;
107 }
108 }
109 }
110
111
113
115
116
118
120 currentTree.SetDepthCutDetail(
m_config.dDetail.c_str() );
121 }
122
123
124
125
126
127
128
129 currentTree.Ascend( currentTree.GetCurrentDepth() );
130
131 while ( true ) {
132
133 G4VPhysicalVolume*
pv = currentTree.GetVolume();
135 string thNoDau =
stringify(
pv->GetLogicalVolume()->GetNoDaughters());
136 int thRep = currentTree.GetCopyNumber();
137
138
139 string v_name = (thRep == 16969 ? std::move(thPV) : thPV+
"_"+
stringify(thRep));
140 string p_name =
m_p_tag + ( currentTree.GetStepNumber() != 1 ?
"_entred" :
"_madein" );
141 string title = thNoDau+
" daughters, "+
stringify(currentTree.GetCurrentDepth())+
" from base";
142
143
144 if ( currentTree.GetStepNumber() == 1 || currentTree.GetCurrentDepth() == currentTree.GetFullDepth() ) {
145 BuildHists(v_name, p_name,
m_config.maxhists, currentTree.GetPreStepPoint()->GetKineticEnergy());
146 }
147 if ( !currentTree.Descend() ) break;
149 }
150
151
153 }
154 }
155 }
std::string cleanstr(T obj)
std::string stringify(T obj)
void BuildHists(const std::string &vol_tag, const std::string &part_tag, int &hLeft, double xfill=-1, double yfill=-1, const int nbins=3000, const int binsize=1)
Size of bins in histogram, in MeV.
bool BuildDirs(const std::string &vol_tag, const std::string &dirTitle, int &dLeft)
Remaining directories to create.