ra4_draw  4bd0201e3d922d42bd545d4b045ed44db33454a4
Classes | Public Member Functions | Public Attributes | Private Member Functions | Private Attributes | Static Private Attributes | List of all members
Hist1D Class Referencefinal

A full 1D plot with stacked/overlayed histograms. More...

#include <hist1d.hpp>

Inheritance diagram for Hist1D:
Figure

Classes

class  SingleHist1D
 Container for a TH1D associated with a single Process. More...
 

Public Member Functions

 Hist1D (const Axis &xaxis, const NamedFunc &cut, const std::vector< std::shared_ptr< Process > > &processes, const std::vector< PlotOpt > &plot_options={PlotOpt()})
 Standard constructor. More...
 
 Hist1D (Hist1D &&)=default
 
Hist1Doperator= (Hist1D &&)=default
 
 ~Hist1D ()=default
 
void Print (double luminosity, const std::string &subdir) final
 Produce and save formatted plots at given luminosity. More...
 
std::set< const Process * > GetProcesses () const final
 
FigureComponentGetComponent (const Process *process) final
 
std::string Name () const
 
std::string Title () const
 
Hist1DWeight (const NamedFunc &weight)
 
Hist1DTag (const std::string &tag)
 
Hist1DRatioTitle (const std::string &numerator, const std::string &denominator)
 
- Public Member Functions inherited from Figure
 Figure ()=default
 
 Figure (const Figure &)=default
 
Figureoperator= (const Figure &)=default
 
 Figure (Figure &&)=default
 
Figureoperator= (Figure &&)=default
 
virtual ~Figure ()=default
 

Public Attributes

Axis xaxis_
 Specification of content: plotted variable, binning, etc. More...
 
NamedFunc cut_
 Event selection. More...
 
NamedFunc weight_
 Event weight. More...
 
std::string tag_
 Filename tag to identify plot. More...
 
std::string ratio_numerator_
 Label for numerator in ratio plot. More...
 
std::string ratio_denominator_
 Label for denominator in ratio plot. More...
 
std::vector< PlotOptplot_options_
 Styles with which to draw plot. More...
 

Private Member Functions

 Hist1D (const Hist1D &)=delete
 
Hist1Doperator= (const Hist1D &)=delete
 
 Hist1D ()=delete
 
void RefreshScaledHistos ()
 Generates stacked and scaled histograms from unstacked and unscaled ones. More...
 
void InitializeHistos () const
 Sets all Hist1D::SingleHist1D::scaled_hist_ to corresponding Hist1D::SingleHist1D::raw_hist_. More...
 
void MergeOverflow () const
 Moves overflow (underflow) contents into last (first) visible bin. More...
 
void ScaleHistos () const
 Scales histograms to required luminosity. More...
 
void StackHistos () const
 Stacks histograms if necessary for current plot style. More...
 
void NormalizeHistos () const
 Normalize histograms to data or 100%*(bin width) if needed for current style. More...
 
void SetRanges () const
 Set y-axis plotting range. More...
 
void ApplyStyles () const
 Set label styles and title for all histograms. More...
 
void StyleHisto (TH1D &h) const
 Set label styles and title for a histogram. More...
 
void AdjustFillStyles () const
 Make histograms a hollow line for unstacked styles. More...
 
void GetPads (std::unique_ptr< TCanvas > &c, std::unique_ptr< TPad > &top, std::unique_ptr< TPad > &bottom) const
 Generated canvas and pads for top and bottom plots. More...
 
void FixYAxis (std::vector< TH1D > &bottom_plots) const
 Adjust y-axis title offset based on y-axis range. More...
 
std::vector< std::shared_ptr< TLatex > > GetTitleTexts () const
 Get text to print at top of plot. More...
 
TGraphAsymmErrors GetBackgroundError () const
 Get uncertainty on total background. More...
 
std::vector< TLine > GetCutLines (double y_min, double y_max, bool adjust_bottom) const
 Get vertical lines at cut values. More...
 
std::vector< TH1D > GetBottomPlots (double &the_min, double &the_max) const
 Get ratio or other plots drawn on the lower pad. More...
 
TLine GetBottomHorizontal () const
 Get horizontal line drawn at "agreement" value for bottom plots. More...
 
void StripTopPlotLabels () const
 
double GetMaxDraw (double max_bound=std::numeric_limits< double >::infinity()) const
 Get highest drawn point below max_bound across all component histograms. More...
 
double GetMinDraw (double min_bound=0.) const
 Get lowest drawn point above min_bound across all component histograms. More...
 
std::vector< std::shared_ptr< TLegend > > GetLegends ()
 Get list of legends emulating single legend with multiple columns. More...
 
void AddEntries (std::vector< std::shared_ptr< TLegend > > &legends, const std::vector< std::unique_ptr< SingleHist1D > > &hists, const std::string &style, std::size_t n_entries, std::size_t &entries_added) const
 Distribute processes from list of histograms across legends. More...
 
double GetLegendRatio () const
 Get factor by which to expand y-axis range to fit legend. More...
 
double GetYield (std::vector< std::unique_ptr< SingleHist1D > >::const_iterator h) const
 Get integrated number of weighted entries in histogram. More...
 
double GetMean (std::vector< std::unique_ptr< SingleHist1D > >::const_iterator h) const
 Get mean of histogram. More...
 
void GetTitleSize (double &width, double &height, bool in_pixels) const
 Get width and height of title region. More...
 
const std::vector< std::unique_ptr< SingleHist1D > > & GetComponentList (const Process *process)
 

Private Attributes

std::vector< std::unique_ptr< SingleHist1D > > backgrounds_
 Background components of the figure. More...
 
std::vector< std::unique_ptr< SingleHist1D > > signals_
 Signal components of the figure. More...
 
std::vector< std::unique_ptr< SingleHist1D > > datas_
 Data components of the figure. More...
 
PlotOpt this_opt_
 Plot style currently being drawn. More...
 
double luminosity_
 Luminosity currently being drawn. More...
 
double mc_scale_
 data/MC normalization More...
 
double mc_scale_error_
 data/MC normalization uncertainty More...
 

Static Private Attributes

static TH1D blank_ = TH1D()
 

Detailed Description

A full 1D plot with stacked/overlayed histograms.

Hist1D contains all the information necessary to produce a single 1D plot containing a combination of background MC, signal MC, and data histograms. The content and style of the plot are maintained (mostly) independently, so that once the histograms have been filled with data, redrawing with multiple styles has minimal overhead.

To produce a plot, the component histograms in Hist1D::backgrounds_, Hist1D::signals_, and Hist1D::datas_ must be filled (e.g., by PlotMaker). Once the data is ready, a call to Hist1D::Print() will generate the formatted plot for each style contained in Hist1D::plot_options_.

Definition at line 23 of file hist1d.hpp.

Constructor & Destructor Documentation

Hist1D::Hist1D ( const Axis xaxis,
const NamedFunc cut,
const std::vector< std::shared_ptr< Process > > &  processes,
const std::vector< PlotOpt > &  plot_options = {PlotOpt()} 
)

Standard constructor.

Parameters
[in]processesList of process for the component histograms
[in]definitionSpecification of contents (plotted variable, binning, etc.)
[in]plot_optionsStyles with which to draw plot

Definition at line 273 of file hist1d.cpp.

References Process::background, backgrounds_, Axis::Bins(), blank_, Process::data, datas_, Axis::Nbins(), plot_options_, Hist1D::SingleHist1D::raw_hist_, Process::signal, signals_, this_opt_, Axis::title_, Axis::units_, and xaxis_.

Hist1D::Hist1D ( Hist1D &&  )
default
Hist1D::~Hist1D ( )
default
Hist1D::Hist1D ( const Hist1D )
privatedelete
Hist1D::Hist1D ( )
privatedelete

Member Function Documentation

void Hist1D::AddEntries ( std::vector< std::shared_ptr< TLegend > > &  legends,
const std::vector< std::unique_ptr< SingleHist1D > > &  hists,
const std::string &  style,
std::size_t  n_entries,
std::size_t &  entries_added 
) const
private

Distribute processes from list of histograms across legends.

Parameters
[in,out]legendsLegends to which entries are added
[in]histsComponent histograms whose processes go in legends
[in]styleOption string specifying legend marker type. Subset of "flep"
[in]n_entriesNumber of entries that need to fit in legends
[in,out]entries_addedEntries already in legend

Definition at line 1270 of file hist1d.cpp.

References PlotOpt::CanvasHeight(), PlotOpt::CanvasWidth(), DBG, FixedDigits(), anonymous_namespace{hist1d.cpp}::GetLegendIndex(), GetMean(), GetYield(), PlotOpt::LegendDensity(), PlotOpt::LegendMarkerWidth(), PlotOpt::Stack(), this_opt_, PlotOpt::Title(), PlotOpt::TrueLegendEntryHeight(), and PlotOpt::TrueLegendWidth().

Referenced by GetLegends().

void Hist1D::AdjustFillStyles ( ) const
private

Make histograms a hollow line for unstacked styles.

Definition at line 761 of file hist1d.cpp.

References backgrounds_, PlotOpt::BackgroundsStacked(), anonymous_namespace{plot_ratios.cxx}::bkg, and this_opt_.

Referenced by Print().

void Hist1D::ApplyStyles ( ) const
private

Set label styles and title for all histograms.

Definition at line 698 of file hist1d.cpp.

References backgrounds_, datas_, signals_, and StyleHisto().

Referenced by Print().

void Hist1D::FixYAxis ( std::vector< TH1D > &  bottom_plots) const
private

Adjust y-axis title offset based on y-axis range.

Parameters
[in,out]bottom_plotsRatio or other bottom-half plots whose title offsets also need to be adjusted

Definition at line 823 of file hist1d.cpp.

References backgrounds_, PlotOpt::Bottom(), datas_, GetLegendRatio(), GetMaxDraw(), signals_, this_opt_, PlotOpt::YAxis(), and PlotOpt::YTitleOffset().

Referenced by Print().

TGraphAsymmErrors Hist1D::GetBackgroundError ( ) const
private

Get uncertainty on total background.

Returns
Graph representing the MC background error band

Definition at line 917 of file hist1d.cpp.

References backgrounds_, Axis::Bins(), Axis::Nbins(), and xaxis_.

Referenced by Print().

TLine Hist1D::GetBottomHorizontal ( ) const
private

Get horizontal line drawn at "agreement" value for bottom plots.

E.g. Line is at 1 for ratio plots, 0 for difference plots, etc.

Returns
Line at appropriate height depending on plot style

Definition at line 1105 of file hist1d.cpp.

References Axis::Bins(), PlotOpt::Bottom(), DBG, this_opt_, and xaxis_.

Referenced by Print().

std::vector< TH1D > Hist1D::GetBottomPlots ( double &  the_min,
double &  the_max 
) const
private

Get ratio or other plots drawn on the lower pad.

Parameters
[out]the_minY-axis minimum across plots for lower pad
[out]the_maxY-axis maximum across plots for lower pad
Returns
Set of plots to be drawn on lower pad. These may be ratio plots or something else depending on the current plot style

Definition at line 973 of file hist1d.cpp.

References backgrounds_, PlotOpt::Bottom(), anonymous_namespace{hist1d.cpp}::counter, datas_, ERROR, PlotOpt::NDivisionsBottom(), ratio_denominator_, ratio_numerator_, PlotOpt::RatioMaximum(), PlotOpt::RatioMinimum(), signals_, PlotOpt::Stack(), and this_opt_.

Referenced by Print().

Figure::FigureComponent * Hist1D::GetComponent ( const Process process)
finalvirtual

Implements Figure.

Definition at line 468 of file hist1d.cpp.

References DBG, GetComponentList(), and Process::name_.

const vector< unique_ptr< Hist1D::SingleHist1D > > & Hist1D::GetComponentList ( const Process process)
private
vector< TLine > Hist1D::GetCutLines ( double  y_min,
double  y_max,
bool  adjust_bottom 
) const
private

Get vertical lines at cut values.

Parameters
[in]y_minLower bound of y-axis
[in]y_maxUpper bound of y-axis
Returns
Lines at x-coordinate of cut value and y-coordinates running from bottom of plot to bottom of legend

Definition at line 942 of file hist1d.cpp.

References Axis::cut_vals_, DBG, PlotOpt::LogMinimum(), this_opt_, xaxis_, and PlotOpt::YAxis().

Referenced by Print().

double Hist1D::GetLegendRatio ( ) const
private

Get factor by which to expand y-axis range to fit legend.

Returns
Factor by which the upper bound of the top plot's y-axis needs to be expanded to make room for the legend

Definition at line 1328 of file hist1d.cpp.

References backgrounds_, PlotOpt::Bottom(), PlotOpt::BottomHeight(), PlotOpt::BottomMargin(), datas_, PlotOpt::DisplayLumiEntry(), PlotOpt::LegendPad(), signals_, this_opt_, PlotOpt::TopMargin(), and PlotOpt::TrueLegendHeight().

Referenced by FixYAxis(), and SetRanges().

vector< shared_ptr< TLegend > > Hist1D::GetLegends ( )
private

Get list of legends emulating single legend with multiple columns.

Legends are filled down-columns first, then across rows. Data samples are added first, then signals, then backgrounds, with the order within each group preserved from Hist1D::Hist1D()

Returns
Legends with all processes and possibly MC normalization if plot style requires it

Definition at line 1213 of file hist1d.cpp.

References AddEntries(), backgrounds_, PlotOpt::BackgroundsStacked(), blank_, datas_, PlotOpt::DisplayLumiEntry(), PlotOpt::Font(), anonymous_namespace{hist1d.cpp}::GetLegendIndex(), PlotOpt::LeftMargin(), PlotOpt::LegendColumns(), PlotOpt::LegendMarkerWidth(), PlotOpt::LegendPad(), luminosity_, mc_scale_, mc_scale_error_, signals_, PlotOpt::Stack(), this_opt_, PlotOpt::TopMargin(), PlotOpt::TrueLegendEntryHeight(), PlotOpt::TrueLegendHeight(), and PlotOpt::TrueLegendWidth().

Referenced by Print().

double Hist1D::GetMaxDraw ( double  max_bound = std::numeric_limits<double>::infinity()) const
private

Get highest drawn point below max_bound across all component histograms.

Parameters
[in]max_boundOnly consider points below this value in finding the maximum
Returns
The highest drawn point below max_bound across all component histograms

Definition at line 1150 of file hist1d.cpp.

References backgrounds_, datas_, PlotOpt::ShowBackgroundError(), signals_, and this_opt_.

Referenced by FixYAxis(), Print(), and SetRanges().

double Hist1D::GetMean ( std::vector< std::unique_ptr< SingleHist1D > >::const_iterator  h) const
private

Get mean of histogram.

Possibly varying bin widths are accounted for.

Parameters
[in]hIterator to histogram in one of Hist1D::datas_, Hist1D::signals_, Hist1D::backgrounds_ for which mean will be found

Definition at line 1376 of file hist1d.cpp.

References Process::background, backgrounds_, PlotOpt::BackgroundsStacked(), and this_opt_.

Referenced by AddEntries().

double Hist1D::GetMinDraw ( double  min_bound = 0.) const
private

Get lowest drawn point above min_bound across all component histograms.

Parameters
[in]min_boundOnly consider points above this value in finding the minimum
Returns
The lowest drawn point greater than min_bound across all component histograms

Definition at line 1181 of file hist1d.cpp.

References backgrounds_, datas_, PlotOpt::ShowBackgroundError(), signals_, and this_opt_.

Referenced by Print(), and SetRanges().

void Hist1D::GetPads ( std::unique_ptr< TCanvas > &  c,
std::unique_ptr< TPad > &  top,
std::unique_ptr< TPad > &  bottom 
) const
private

Generated canvas and pads for top and bottom plots.

To make object positioning simpler, the top and bottom pads span the entire canvas and only the margins are adjusted. This has the added bonus of making the "0" on the top y-axis visible for free.

Parameters
[out]cFull plot canvas
[out]topPad for main plot
[out]bottomPad for bottom plot (e.g. ratio plot)

Definition at line 784 of file hist1d.cpp.

References PlotOpt::Bottom(), PlotOpt::BottomHeight(), PlotOpt::BottomMargin(), PlotOpt::CanvasHeight(), PlotOpt::CanvasWidth(), anonymous_namespace{hist1d.cpp}::counter, PlotOpt::LeftMargin(), PlotOpt::RightMargin(), this_opt_, and PlotOpt::TopMargin().

Referenced by Print().

set< const Process * > Hist1D::GetProcesses ( ) const
finalvirtual

Implements Figure.

Definition at line 454 of file hist1d.cpp.

References backgrounds_, datas_, and signals_.

void Hist1D::GetTitleSize ( double &  width,
double &  height,
bool  in_pixels 
) const
private

Get width and height of title region.

Parameters
[out]widthWidth of title region
[out]heightHeight of title region
[in]in_pixelsIf true, measure dimensions in pixels. If false, measure in NDC.

Definition at line 1398 of file hist1d.cpp.

References PlotOpt::CanvasHeight(), PlotOpt::CanvasWidth(), PlotOpt::LeftMargin(), PlotOpt::RightMargin(), this_opt_, and PlotOpt::TopMargin().

Referenced by GetTitleTexts().

vector< shared_ptr< TLatex > > Hist1D::GetTitleTexts ( ) const
private

Get text to print at top of plot.

Depending on current plot style, this may be the CMS {Preliminary, Simulation, etc...} with luminosity or the cut and weight for the plot

Returns
List of text items to be printed in title region of plot

Definition at line 857 of file hist1d.cpp.

References ERROR, PlotOpt::Font(), GetTitleSize(), PlotOpt::LeftMargin(), luminosity_, PlotOpt::RightMargin(), this_opt_, PlotOpt::Title(), Title(), and PlotOpt::TopMargin().

Referenced by Print().

double Hist1D::GetYield ( std::vector< std::unique_ptr< SingleHist1D > >::const_iterator  h) const
private

Get integrated number of weighted entries in histogram.

Possibly varying bin widths are accounted for.

Parameters
[in]hIterator to histogram in one of Hist1D::datas_, Hist1D::signals_, Hist1D::backgrounds_ for which total yield will be found

Definition at line 1349 of file hist1d.cpp.

References Process::background, backgrounds_, PlotOpt::BackgroundsStacked(), and this_opt_.

Referenced by AddEntries().

void Hist1D::InitializeHistos ( ) const
private
void Hist1D::MergeOverflow ( ) const
private

Moves overflow (underflow) contents into last (first) visible bin.

Definition at line 559 of file hist1d.cpp.

References backgrounds_, datas_, PlotOptTypes::overflow, PlotOpt::Overflow(), signals_, this_opt_, and PlotOptTypes::underflow.

Referenced by RefreshScaledHistos().

string Hist1D::Name ( ) const

Definition at line 479 of file hist1d.cpp.

References CodeToPlainText(), cut_, NamedFunc::Name(), tag_, Axis::var_, weight_, and xaxis_.

Referenced by main(), and Print().

void Hist1D::NormalizeHistos ( ) const
private

Normalize histograms to data or 100%*(bin width) if needed for current style.

Definition at line 628 of file hist1d.cpp.

References backgrounds_, PlotOptTypes::data_norm, datas_, mc_scale_, mc_scale_error_, Axis::Nbins(), Normalize(), signals_, PlotOpt::Stack(), this_opt_, and xaxis_.

Referenced by RefreshScaledHistos().

Hist1D& Hist1D::operator= ( Hist1D &&  )
default
Hist1D& Hist1D::operator= ( const Hist1D )
privatedelete
void Hist1D::Print ( double  luminosity,
const std::string &  subdir 
)
finalvirtual
Hist1D & Hist1D::RatioTitle ( const std::string &  numerator,
const std::string &  denominator 
)

Definition at line 517 of file hist1d.cpp.

References ratio_denominator_, and ratio_numerator_.

Referenced by main().

void Hist1D::RefreshScaledHistos ( )
private

Generates stacked and scaled histograms from unstacked and unscaled ones.

Sets bin contents for all required Hist1D::SingleHist1D::scaled_hist_ to the appropriate values using the Hist1D::SingleHist1D::raw_hist_ containing the unstacked contents at 1 fb^{-1}

Definition at line 531 of file hist1d.cpp.

References InitializeHistos(), MergeOverflow(), NormalizeHistos(), ScaleHistos(), and StackHistos().

Referenced by Print().

void Hist1D::ScaleHistos ( ) const
private

Scales histograms to required luminosity.

Definition at line 594 of file hist1d.cpp.

References AdjustDensityForBinWidth(), backgrounds_, datas_, luminosity_, and signals_.

Referenced by RefreshScaledHistos().

void Hist1D::SetRanges ( ) const
private
void Hist1D::StackHistos ( ) const
private

Stacks histograms if necessary for current plot style.

Definition at line 610 of file hist1d.cpp.

References backgrounds_, signals_, PlotOpt::Stack(), and this_opt_.

Referenced by RefreshScaledHistos().

void Hist1D::StripTopPlotLabels ( ) const
private

Remove x-axis labels and title from plots in top pad if necessary

Definition at line 1128 of file hist1d.cpp.

References backgrounds_, PlotOpt::Bottom(), datas_, signals_, anonymous_namespace{hist1d.cpp}::StripXLabels(), and this_opt_.

Referenced by Print().

void Hist1D::StyleHisto ( TH1D &  h) const
private

Set label styles and title for a histogram.

Parameters
[in,out]hHistogram to be adjusted

Definition at line 714 of file hist1d.cpp.

References Axis::AvgBinWidth(), DBG, PlotOpt::Font(), PlotOpt::LabelSize(), PlotOpt::NDivisions(), PlotOpt::Stack(), this_opt_, PlotOpt::TitleSize(), Axis::units_, xaxis_, PlotOpt::XTitleOffset(), and PlotOpt::YTitleOffset().

Referenced by ApplyStyles().

Hist1D & Hist1D::Tag ( const std::string &  tag)

Definition at line 512 of file hist1d.cpp.

References run_2016-06-03_freeze_preapp_all_preds::tag, and tag_.

Referenced by addSlices(), and main().

string Hist1D::Title ( ) const

Definition at line 493 of file hist1d.cpp.

References CodeToRootTex(), cut_, NamedFunc::Name(), and weight_.

Referenced by GetTitleTexts().

Hist1D & Hist1D::Weight ( const NamedFunc weight)

Definition at line 507 of file hist1d.cpp.

References weight_.

Referenced by main().

Member Data Documentation

std::vector<std::unique_ptr<SingleHist1D> > Hist1D::backgrounds_
private
TH1D Hist1D::blank_ = TH1D()
staticprivate

Definition at line 94 of file hist1d.hpp.

Referenced by anonymous_namespace{hist1d.cpp}::GetLegendIndex(), GetLegends(), and Hist1D().

NamedFunc Hist1D::cut_

Event selection.

Definition at line 78 of file hist1d.hpp.

Referenced by Name(), and Title().

std::vector<std::unique_ptr<SingleHist1D> > Hist1D::datas_
private
double Hist1D::luminosity_
mutableprivate

Luminosity currently being drawn.

Definition at line 91 of file hist1d.hpp.

Referenced by GetLegends(), GetTitleTexts(), Print(), and ScaleHistos().

double Hist1D::mc_scale_
mutableprivate

data/MC normalization

Definition at line 92 of file hist1d.hpp.

Referenced by GetLegends(), and NormalizeHistos().

double Hist1D::mc_scale_error_
mutableprivate

data/MC normalization uncertainty

Definition at line 93 of file hist1d.hpp.

Referenced by GetLegends(), and NormalizeHistos().

std::vector<PlotOpt> Hist1D::plot_options_

Styles with which to draw plot.

Definition at line 83 of file hist1d.hpp.

Referenced by Hist1D(), and Print().

std::string Hist1D::ratio_denominator_

Label for denominator in ratio plot.

Definition at line 82 of file hist1d.hpp.

Referenced by GetBottomPlots(), and RatioTitle().

std::string Hist1D::ratio_numerator_

Label for numerator in ratio plot.

Definition at line 81 of file hist1d.hpp.

Referenced by GetBottomPlots(), and RatioTitle().

std::vector<std::unique_ptr<SingleHist1D> > Hist1D::signals_
private
std::string Hist1D::tag_

Filename tag to identify plot.

Definition at line 80 of file hist1d.hpp.

Referenced by Name(), and Tag().

PlotOpt Hist1D::this_opt_
mutableprivate
NamedFunc Hist1D::weight_

Event weight.

Definition at line 79 of file hist1d.hpp.

Referenced by Name(), Hist1D::SingleHist1D::RecordEvent(), Title(), and Weight().

Axis Hist1D::xaxis_

Specification of content: plotted variable, binning, etc.

Definition at line 77 of file hist1d.hpp.

Referenced by GetBackgroundError(), GetBottomHorizontal(), GetCutLines(), Hist1D(), Name(), NormalizeHistos(), Hist1D::SingleHist1D::RecordEvent(), and StyleHisto().


The documentation for this class was generated from the following files: