9 #include <boost/format.hpp>
32 if (strcasecmp(splitmode.c_str(),
"NearestLayer") == 0) {
34 }
else if (strcasecmp(splitmode.c_str(),
"InnerLayer") == 0) {
36 }
else if (strcasecmp(splitmode.c_str(),
"OuterLayer") == 0) {
41 <<
"Invalid SplitMode \"" << splitmode
42 <<
"\". Acceptable values are \"NearestLayer\", \"InnerLayer\", \"OuterLayer\".";
75 for (
unsigned int i = 0;
i <
m_groups.size(); ++
i) {
101 std::ofstream xml(
name);
102 xml <<
"<?xml version=\"1.0\" encoding=\"utf-8\"?>" << std::endl;
103 xml <<
"<Groups>" << std::endl;
104 for (
unsigned int i = 0;
i <
m_groups.size(); ++
i) {
106 xml <<
" <Group name=\"" << layer.
name() <<
"\">\n"
108 <<
" <Parameter name=\"TrackerXi\" value=\"" << layer.
averageEnergyLoss() <<
"\"/>\n"
112 xml <<
"</Groups>" << std::endl;
117 for (
unsigned int i = 0;
i <
m_groups.size(); ++
i) {
156 edm::LogVerbatim(
"TrackingMaterialAnalyser") <<
"TrackingMaterialAnalyser: List of the tracker groups: " << std::endl;
163 for (std::vector<MaterialAccountingTrack>::const_iterator
t = h_tracks->begin(),
end = h_tracks->end();
t !=
end;
182 std::vector<int>
group(
track.detectors().size());
183 for (
unsigned int i = 0;
i <
track.detectors().size(); ++
i)
186 for (
unsigned int i = 0;
i <
group.size(); ++
i)
189 <<
" R-ranges: " <<
m_groups[
group[
i] - 1]->getBoundingR().first <<
", "
191 <<
" Z-ranges: " <<
m_groups[
group[
i] - 1]->getBoundingZ().first <<
", "
199 for (
unsigned int i = 1;
i <
track.steps().size(); ++
i)
202 const double TOLERANCE = 0.0001;
207 limits[0] =
track.detectors()[0].m_curvilinearIn - TOLERANCE;
222 limits[
i] = (
track.detectors()[
i - 1].m_curvilinearOut +
track.detectors()[
i].m_curvilinearIn) / 2.;
230 limits[
i] =
track.detectors()[
i].m_curvilinearIn - TOLERANCE;
237 limits[
i] =
track.detectors()[
i - 1].m_curvilinearOut + TOLERANCE;
264 unsigned int index = 0;
265 while (
i <
track.steps().size()) {
284 std::cerr <<
"MaterialAccountingTrack::split(): ERROR: internal logic error, expected " <<
limits[
index]
298 std::pair<MaterialAccountingStep, MaterialAccountingStep>
parts =
step.split(
fraction);
324 for (
unsigned int i = 0;
i <
track.detectors().size(); ++
i)
347 std::cerr <<
"TrackingMaterialAnalyser::findLayer(...): ERROR: detector does not belong to any DetLayer"
350 <<
" (r: " << std::setprecision(1) << std::setw(5) <<
detector.position().perp()
351 <<
", z: " << std::setprecision(1) << std::setw(6) <<
detector.position().z()
352 <<
", phi: " << std::setprecision(3) << std::setw(6) <<
detector.position().phi() <<
")" << std::endl;
356 std::cerr <<
"TrackingMaterialAnalyser::findLayer(...): ERROR: detector belongs to " << inside <<
" DetLayers"
359 <<
" (r: " << std::setprecision(1) << std::setw(5) <<
detector.position().perp()
360 <<
", z: " << std::setprecision(1) << std::setw(6) <<
detector.position().z()
361 <<
", phi: " << std::setprecision(3) << std::setw(6) <<
detector.position().phi() <<
")" << std::endl;