5 #pragma warning(disable:2259)
11 #pragma warning(disable:4996)
21 Histogram2D* p =
new Histogram2D(
new TH2D(title.c_str(),title.c_str(),binsX, iminX, imaxX, binsY, iminY, imaxY));
26 Histogram2D* p =
new Histogram2D(
new TH2D(title.c_str(),title.c_str(),eX.size()-1,&eX.front(),eY.size()-1,&eY.front()));
31 Histogram2D* p =
new Histogram2D(rep);
36 TH2D *h = getRepresentation<AIDA::IHistogram2D,TH2D>(hist);
37 Histogram2D *n = h ?
new Histogram2D(
new TH2D(*h)) : 0;
43 TH2 *r = getRepresentation<IHistogram2D,TH2>(hist);
44 TH1D *t = r ? r->ProjectionX(
"_px",first,last,
"e") : 0;
45 if ( t ) t->SetName(nam.c_str());
46 Histogram1D* p = t ?
new Histogram1D(t) : 0;
52 TH2 *r = getRepresentation<IHistogram2D,TH2>(hist);
53 TH1D *t = r ? r->ProjectionY(
"_py",first,last,
"e") : 0;
54 if ( t ) t->SetName(nam.c_str());
55 Histogram1D* p = t ?
new Histogram1D(t) : 0;
61 TH2 *r = getRepresentation<IHistogram2D,TH2>(hist);
62 TH1D *t = r ? r->ProjectionY(
"_px",first,last,
"e") : 0;
63 if ( t ) t->SetName(nam.c_str());
64 Histogram1D* p = t ?
new Histogram1D(t) : 0;
70 TH2 *r = Gaudi::getRepresentation<IHistogram2D,TH2>(hist);
71 TProfile *t = r ? r->ProfileX(
"_pfx",first,last,
"e") : 0;
72 if ( t ) t->SetName(nam.c_str());
73 Profile1D* p = t ?
new Profile1D(t) : 0;
79 TH2 *r = getRepresentation<IHistogram2D,TH2>(hist);
80 TProfile *t = r ? r->ProfileY(
"_pfx",first,last,
"e") : 0;
81 if ( t ) t->SetName(nam.c_str());
82 Profile1D* p = t ?
new Profile1D(t) : 0;
90 if (className ==
"AIDA::IHistogram2D")
91 return (IHistogram2D*)
this;
92 else if (className ==
"AIDA::IHistogram")
93 return (IHistogram*)
this;
99 if (binHeight(indexX, indexY)<=0)
return 0;
100 double xx = binHeight(indexX, indexY)/binError(indexX, indexY);
101 return int(xx*xx+0.5);
106 TH2D* imp =
dynamic_cast<TH2D*
>(rep);
108 if ( m_rep )
delete m_rep;
110 m_xAxis.initialize(m_rep->GetXaxis(),
true);
111 m_yAxis.initialize(m_rep->GetYaxis(),
true);
112 const TArrayD* a = m_rep->GetSumw2();
113 if ( 0 == a || (a && a->GetSize()==0) ) m_rep->Sumw2();
114 setTitle(m_rep->GetTitle());
125 m_sumwx = m_sumwy = 0;
127 m_rep->SetDirectory(0);
132 adoptRepresentation(rep);
134 m_sumwx = m_sumwy = 0;
135 m_rep->SetDirectory(0);
139 m_rep->SetBinContent(rIndexX(i), rIndexY(j), height);
140 m_rep->SetBinError(rIndexX(i), rIndexY(j), error);
142 if (i >=0 && j >= 0) {
143 m_sumwx += centreX*height;
144 m_sumwy += centreY*height;
146 m_sumEntries += entries;
153 return Base::reset();
159 #pragma warning(push)
160 #pragma warning(disable:1572)
163 (weight==1.) ? m_rep->Fill(x,y) : m_rep->Fill(x,y,weight );
168 m_rep->SetEntries(m_sumEntries);
170 stat[0] = sumBinHeights();
172 if(equivalentBinEntries() != 0)
173 stat[1] = (sumBinHeights() * sumBinHeights()) / equivalentBinEntries();
176 if(sumBinHeights() != 0) meanX = m_sumwx/ sumBinHeights();
177 stat[3] = (meanX*meanX + rmsX*rmsX) * sumBinHeights();
180 if(sumBinHeights() != 0) meanY = m_sumwy/ sumBinHeights();
181 stat[5] = (meanY*meanY + rmsY*rmsY) * sumBinHeights();
183 m_rep->PutStats(&stat.
front());
190 const char* tit = h.title().c_str();
191 if (h.xAxis().isFixedBinning() && h.yAxis().isFixedBinning() )
192 m_rep =
new TH2D(tit,tit,
193 h.xAxis().bins(),h.xAxis().lowerEdge(),h.xAxis().upperEdge(),
194 h.yAxis().bins(),h.yAxis().lowerEdge(),h.yAxis().upperEdge() );
197 for (
int i =0;
i < h.xAxis().bins(); ++
i)
198 eX.push_back(h.xAxis().binLowerEdge(
i));
200 eX.push_back(h.xAxis().upperEdge() );
201 for (
int i =0;
i < h.yAxis().bins(); ++
i)
202 eY.push_back(h.yAxis().binLowerEdge(
i));
204 eY.push_back(h.yAxis().upperEdge() );
205 m_rep =
new TH2D(tit,tit,eX.size()-1,&eX.front(),eY.size()-1,&eY.front());
207 m_xAxis.initialize(m_rep->GetXaxis(),
true);
208 m_yAxis.initialize(m_rep->GetYaxis(),
true);
214 double sumw = h.sumBinHeights();
216 if (h.equivalentBinEntries() != 0)
217 sumw2 = ( sumw * sumw ) /h.equivalentBinEntries();
218 double sumwx = h.meanX()*h.sumBinHeights();
219 double sumwx2 = (h.meanX()*h.meanX() + h.rmsX()*h.rmsX() )*h.sumBinHeights();
220 double sumwy = h.meanY()*h.sumBinHeights();
221 double sumwy2 = (h.meanY()*h.meanY() + h.rmsY()*h.rmsY() )*h.sumBinHeights();
225 for (
int i=-2;
i < xAxis().bins(); ++
i) {
226 for (
int j=-2; j < yAxis().bins(); ++j) {
228 m_rep->SetBinContent(rIndexX(
i), rIndexY(j), h.binHeight(
i,j) );
229 m_rep->SetBinError(rIndexX(
i), rIndexY(j), h.binError(
i,j) );
231 if (
i >= 0 && j >= 0) {
232 sumwxy += h.binHeight(
i,j)*h.binMeanX(
i,j)*h.binMeanY(
i,j);
238 m_rep->SetEntries(h.allEntries());
248 m_rep->PutStats(&stat.
front());
251 typedef Gaudi::Histogram2D
H2D;