34 if (TString(
name.c_str()).Contains(
"Tracker")) {
36 }
else if (TString(
name.c_str()).Contains(
"HGCal")) {
38 }
else if (TString(
name.c_str()).Contains(
"HFNose")) {
41 LogTrace(
"MaterialAccountingGroup") <<
name << std::endl;
42 edm::LogError(
"MaterialAccountingGroup") <<
"Only Tracker , HGCal and HFNose are supported" << std::endl;
47 LogTrace(
"MaterialAccountingGroup") <<
"Elements within: " <<
name << std::endl;
51 LogTrace(
"MaterialAccountingGroup") <<
"Adding element at(r,z): (" 72 m_dedx_vs_eta =
new TProfile((
m_name +
"_dedx_vs_eta").c_str(),
"Energy loss vs. eta", 600, -3, 3);
73 m_dedx_vs_z =
new TProfile((
m_name +
"_dedx_vs_z").c_str(),
"Energy loss vs. Z", 6000, -300, 300);
74 m_dedx_vs_r =
new TProfile((
m_name +
"_dedx_vs_r").c_str(),
"Energy loss vs. R", 1200, 0, 120);
75 m_radlen_vs_eta =
new TProfile((
m_name +
"_radlen_vs_eta").c_str(),
"Radiation lengths vs. eta", 600, -3, 3);
76 m_radlen_vs_z =
new TProfile((
m_name +
"_radlen_vs_z").c_str(),
"Radiation lengths vs. Z", 6000, -300, 300);
77 m_radlen_vs_r =
new TProfile((
m_name +
"_radlen_vs_r").c_str(),
"Radiation lengths vs. R", 1200, 0, 120);
169 plot->SetFillColor(15);
170 plot->SetLineColor(1);
172 canvas.GetFrame()->SetFillColor(kWhite);
187 new TH1F((
name +
"_par").c_str(),
"Parametrization", 1,
plot->GetXaxis()->GetXmin(),
plot->GetXaxis()->GetXmax());
191 plot->SetFillColor(15);
192 plot->SetLineColor(1);
193 plot->SetLineWidth(2);
195 line->SetLineColor(2);
196 line->SetLineWidth(2);
198 canvas.GetFrame()->SetFillColor(kWhite);
209 std::stringstream
out;
221 m_file =
new TFile((
m_name +
".root").c_str(),
"RECREATE");
double averageRadiationLengths(void) const
return the average normalized number of radiation lengths
bool inside(const MaterialAccountingDetector &detector) const
check if detector is inside any part of this layer
MaterialAccountingGroup(const std::string &name, const DDCompactView &geometry)
explicit constructors
void endOfTrack(void)
commit the buffer and reset the "already hit by this track" flag
MaterialAccountingStep m_errors
MaterialAccountingStep m_buffer
std::vector< GlobalPoint > m_elements
Global3DPoint GlobalPoint
Log< level::Error, false > LogError
BoundingBox m_boundingbox
Compact representation of the geometrical detector hierarchy.
const GlobalPoint & in(void) const
std::pair< double, double > range_r() const
bool next()
set current node to the next node in the filtered tree
void savePlot(TH1F *plot, const std::string &name)
std::string info(void) const
get some infos
bool inside(double r, double z) const
void grow(double r, double z)
std::string toString() const
T perp() const
Magnitude of transverse component.
std::pair< double, double > range_z() const
static double const s_tolerance
const DDLogicalPart & logicalPart() const
The logical-part of the current node in the filtered-view.
T mag() const
The vector magnitude. Equivalent to sqrt(vec.mag2())
XYZVectorD XYZVector
spatial vector with cartesian internal representation
void savePlots(void)
save the plots
double averageEnergyLoss(void) const
return the average normalized energy loss density factor for Bethe-Bloch
const GlobalPoint & out(void) 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
double radiationLengths(void) const
MaterialAccountingStep m_accounting
const std::string & name(void) const
get the layer name
const DDTranslation & translation() const
The absolute translation of the current node.
double energyLoss(void) const
MaterialAccountingStep average(void) const
return the average normalized material accounting informations