35 LogTrace(
"MaterialAccountingGroup") <<
"Elements within: " << name << std::endl;
39 LogTrace(
"MaterialAccountingGroup") <<
"Adding element at(r,z): (" 41 <<
", " <<
GlobalPoint(position.x(), position.y(), position.z()).
z()
42 <<
") cm" << std::endl;
43 LogTrace(
"MaterialAccountingGroup") <<
"Name of added element: " 53 LogTrace(
"MaterialAccountingGroup") <<
"Final BBox r_range: " 56 <<
"Final BBox z_range: " 63 m_dedx_vs_eta =
new TProfile((
m_name +
"_dedx_vs_eta").c_str(),
"Energy loss vs. eta", 600, -3, 3);
64 m_dedx_vs_z =
new TProfile((
m_name +
"_dedx_vs_z").c_str(),
"Energy loss vs. Z", 6000, -300, 300);
65 m_dedx_vs_r =
new TProfile((
m_name +
"_dedx_vs_r").c_str(),
"Energy loss vs. R", 1200, 0, 120);
66 m_radlen_vs_eta =
new TProfile((
m_name +
"_radlen_vs_eta").c_str(),
"Radiation lengths vs. eta", 600, -3, 3);
67 m_radlen_vs_z =
new TProfile((
m_name +
"_radlen_vs_z").c_str(),
"Radiation lengths vs. Z", 6000, -300, 300);
68 m_radlen_vs_r =
new TProfile((
m_name +
"_radlen_vs_r").c_str(),
"Radiation lengths vs. R", 1200, 0, 120);
99 LogTrace(
"MaterialAccountingGroup") <<
"Testing position: (x, y, z, r) = " 100 << position.
x() <<
", " << position.
y()
101 <<
", " << position.
z() <<
", " << position.
perp()
104 LogTrace(
"MaterialAccountingGroup") <<
"r outside of: (" 107 <<
"), Z ouside of: (" 113 LogTrace(
"MaterialAccountingGroup") <<
"r within: (" 120 LogTrace(
"MaterialAccountingGroup") <<
"Closest testing agains(x, y, z, r): (" 154 (m_buffer.in().y() + m_buffer.out().y()) / 2.,
155 (m_buffer.in().z() + m_buffer.out().z()) / 2. );
159 m_dedx_vs_z->Fill( average.
z(), m_buffer.energyLoss(), 1. );
162 m_radlen_vs_z->Fill( average.
z(), m_buffer.radiationLengths(), 1. );
171 TCanvas
canvas(name.c_str(), plot->GetTitle(), 1280, 1024);
172 plot->SetFillColor(15);
173 plot->SetLineColor(1);
175 canvas.GetFrame()->SetFillColor(kWhite);
177 canvas.SaveAs((name +
".png").c_str(),
"");
180 plot->SetDirectory(
m_file);
190 TH1F *
line =
new TH1F((name +
"_par").c_str(),
"Parametrization", 1, plot->GetXaxis()->GetXmin(), plot->GetXaxis()->GetXmax());
191 line->SetBinContent(1, average);
193 TCanvas
canvas(name.c_str(), plot->GetTitle(), 1280, 1024);
194 plot->SetFillColor(15);
195 plot->SetLineColor(1);
196 plot->SetLineWidth(2);
198 line->SetLineColor(2);
199 line->SetLineWidth(2);
201 canvas.GetFrame()->SetFillColor(kWhite);
203 canvas.SaveAs((name +
".png").c_str(),
"");
206 plot->SetDirectory(
m_file);
207 line->SetDirectory(
m_file);
213 std::stringstream
out;
217 out <<
" Elements: " << std::setw(6) <<
m_elements.size();
224 m_file =
new TFile((
m_name +
".root").c_str(),
"RECREATE");
const DDLogicalPart & logicalPart() const
The logical-part of the current node in the filtered-view.
MaterialAccountingGroup(const std::string &name, const DDCompactView &geometry)
explicit constructors
double averageRadiationLengths(void) const
return the average normalized number of radiation lengths
void endOfTrack(void)
commit the buffer and reset the "already hit by this track" flag
MaterialAccountingStep m_errors
MaterialAccountingStep m_buffer
T mag() const
The vector magnitude. Equivalent to sqrt(vec.mag2())
std::vector< GlobalPoint > m_elements
Global3DPoint GlobalPoint
std::pair< double, double > range_r() const
std::string info(void) const
get some infos
BoundingBox m_boundingbox
Compact representation of the geometrical detector hierarchy.
double averageEnergyLoss(void) const
return the average normalized energy loss density factor for Bethe-Bloch
bool next()
set current node to the next node in the filtered tree
void savePlot(TH1F *plot, const std::string &name)
MaterialAccountingStep average(void) const
return the average normalized material accounting informations
void grow(double r, double z)
std::pair< double, double > range_z() const
const MaterialAccountingStep & material() const
const std::string & name(void) const
get the layer name
static double const s_tolerance
std::string toString() const
XYZVectorD XYZVector
spatial vector with cartesian internal representation
void savePlots(void)
save the plots
const GlobalPoint & position() const
T perp() const
Magnitude of transverse component.
bool inside(double r, double z) const
static int position[264][3]
TProfile * m_radlen_vs_eta
bool addDetector(const MaterialAccountingDetector &detector)
buffer material from a detector, if the detector is inside the DetLayer bounds
~MaterialAccountingGroup(void)
destructor
const DDTranslation & translation() const
The absolute translation of the current node.
MaterialAccountingStep m_accounting
bool inside(const MaterialAccountingDetector &detector) const
check if detector is inside any part of this layer