14 #  pragma warning( disable : 2259 ) 
   20 #  pragma warning( disable : 4996 ) 
   30   auto p = 
new Histogram1D( 
new TH1D( title.
c_str(), title.
c_str(), nBins, xlow, xup ) );
 
   35   auto p = 
new Histogram1D( 
new TH1D( title.
c_str(), title.
c_str(), e.size() - 1, &e.front() ) );
 
   40   TH1D* 
h = getRepresentation<AIDA::IHistogram1D, TH1D>( hist );
 
   41   auto  n = ( 
h ? 
new Histogram1D( 
new TH1D( *
h ) ) : 
nullptr );
 
   48     if ( className == 
"AIDA::IHistogram1D" ) 
return const_cast<AIDA::IHistogram1D*
>( (AIDA::IHistogram1D*)
this );
 
   49     if ( className == 
"AIDA::IHistogram" ) 
return const_cast<AIDA::IHistogram*
>( (AIDA::IHistogram*)
this );
 
   55     if ( binHeight( index ) <= 0 ) 
return 0;
 
   56     double xx = binHeight( index ) / binError( index );
 
   57     return int( xx * xx + 0.5 );
 
   62     TH1D* imp = 
dynamic_cast<TH1D*
>( rep );
 
   63     if ( !imp ) 
throw std::runtime_error( 
"Cannot adopt native histogram representation." );
 
   72   init( m_rep->GetTitle() );
 
   77   m_classType = 
"IHistogram1D";
 
   78   if ( initialize_axis ) { m_axis.initialize( m_rep->GetXaxis(), 
false ); }
 
   79   const TArrayD* a = m_rep->GetSumw2();
 
   80   if ( !a || ( a && a->GetSize() == 0 ) ) m_rep->Sumw2();
 
   82   m_rep->SetDirectory( 
nullptr );
 
   90   for ( 
int i = 1, 
n = m_rep->GetNbinsX(); i <= 
n; ++i ) {
 
   91     m_sumwx += m_rep->GetBinContent( i ) * m_rep->GetBinCenter( i );
 
   92     m_sumEntries += m_rep->GetBinContent( i );
 
  106     init( m_rep->GetTitle() );
 
  112   m_rep->SetBinContent( rIndex( i ), height );
 
  113   m_rep->SetBinError( rIndex( i ), error );
 
  115   if ( i != AIDA::IAxis::UNDERFLOW_BIN && i != AIDA::IAxis::OVERFLOW_BIN ) m_sumwx += centre * height;
 
  116   m_sumEntries += entries;
 
  123 #  pragma warning( push ) 
  124 #  pragma warning( disable : 1572 ) 
  127   m_rep->SetEntries( m_sumEntries );
 
  130   stat[0] = sumBinHeights();
 
  132   if ( equivalentBinEntries() != 0 ) stat[1] = ( sumBinHeights() * sumBinHeights() ) / equivalentBinEntries();
 
  135   if ( sumBinHeights() != 0 ) 
mean = m_sumwx / sumBinHeights();
 
  137   m_rep->PutStats( &stat.
front() );
 
  143   m_rep->SetEntries( allEntries );
 
  147   stat[0] = sumBinHeights();
 
  150   if ( eqBinEntries != 0 ) stat[1] = ( sumBinHeights() * sumBinHeights() ) / eqBinEntries;
 
  152   stat[2] = 
mean * sumBinHeights();
 
  155   m_rep->PutStats( &stat.
front() );
 
  161   auto guard = std::scoped_lock{m_fillSerialization};
 
  162   ( weight == 1. ) ? m_rep->Fill( x ) : m_rep->Fill( x, weight );
 
  169   if ( 
h.axis().isFixedBinning() ) {
 
  171         new TH1D( title.
c_str(), title.
c_str(), 
h.axis().bins(), 
h.axis().lowerEdge(), 
h.axis().upperEdge() ) );
 
  174     for ( 
int i = 0; i < 
h.axis().bins(); ++i ) { e.
push_back( 
h.axis().binLowerEdge( i ) ); }
 
  176     e.push_back( 
h.axis().upperEdge() );
 
  177     m_rep.reset( 
new TH1D( title.
c_str(), title.
c_str(), e.size() - 1, &e.front() ) );
 
  179   m_axis.initialize( m_rep->GetXaxis(), 
false );
 
  184   double sumw = 
h.sumBinHeights();
 
  187   if ( 
h.equivalentBinEntries() != 0 ) sumw2 = ( sumw * sumw ) / 
h.equivalentBinEntries();
 
  189   double sumwx  = 
h.mean() * 
h.sumBinHeights();
 
  190   double sumwx2 = ( 
h.mean() * 
h.mean() + 
h.rms() * 
h.rms() ) * 
h.sumBinHeights();
 
  193   for ( 
int i = -2; i < axis().bins(); ++i ) {
 
  195     m_rep->SetBinContent( rIndex( i ), 
h.binHeight( i ) );
 
  196     m_rep->SetBinError( rIndex( i ), 
h.binError( i ) );
 
  200   m_rep->SetEntries( 
h.allEntries() );
 
  207   m_rep->PutStats( &stat.
front() );
 
  212 #  pragma warning( pop ) 
  220   for ( 
int j = 0; j < 
size; j++ ) {
 
  223     if ( !annotation().addItem( 
key, value ) ) { annotation().setValue( 
key, value ); };
 
  224     if ( 
"Title" == 
key ) { title = value; }
 
  226   double lowerEdge, upperEdge, binHeight, binError;
 
  227   int    isFixedBinning, bins;
 
  228   s >> isFixedBinning >> bins;
 
  230   if ( isFixedBinning ) {
 
  231     s >> lowerEdge >> upperEdge;
 
  232     m_rep.reset( 
new TH1D( title.
c_str(), title.
c_str(), bins, lowerEdge, upperEdge ) );
 
  236     for ( 
int i = 0; i <= bins; ++i ) s >> edges[i];
 
  237     m_rep.reset( 
new TH1D( title.
c_str(), title.
c_str(), edges.size() - 1, &edges.front() ) );
 
  239   m_axis.initialize( m_rep->GetXaxis(), 
true );
 
  244   for ( 
int i = 0; i <= bins + 1; ++i ) {
 
  245     s >> binHeight >> binError;
 
  246     m_rep->SetBinContent( i, binHeight );
 
  247     m_rep->SetBinError( i, binError );
 
  251   m_rep->SetEntries( allEntries );
 
  253   s >> stats[0] >> stats[1] >> stats[2] >> stats[3];
 
  254   m_rep->PutStats( stats );
 
  260   s << static_cast<int>( annotation().
size() );
 
  261   for ( 
int i = 0; i < annotation().size(); i++ ) {
 
  262     s << annotation().key( i );
 
  263     s << annotation().value( i );
 
  265   const AIDA::IAxis& axis( this->axis() );
 
  266   const int          isFixedBinning = axis.isFixedBinning();
 
  267   const int          bins           = axis.bins();
 
  268   s << isFixedBinning << bins;
 
  269   if ( isFixedBinning ) {
 
  270     s << axis.lowerEdge();
 
  272     for ( 
int i = 0; i < bins; ++i ) 
s << axis.binLowerEdge( i );
 
  274   s << axis.upperEdge();
 
  275   for ( 
int i = 0; i <= bins + 1; ++i ) 
s << m_rep->GetBinContent( i ) << m_rep->GetBinError( i );
 
  277   s << m_rep->GetEntries();
 
  279   m_rep->GetStats( stats );
 
  280   s << stats[0] << stats[1] << stats[2] << stats[3];