73 Int_t size = dat.GetSize();
74 if(start < 0 || start+1 >= size || start >= end ) start = 0;
75 if(end < 0 || end+1 >= size || end <= start ) end = size;
78 Int_t
n = end - start;
79 for(Int_t i = start+1; i < end+1; i ++){
80 if (ct%nvals == 0 && ct > 1 && ct != n ) {
81 cout<<setw(width)<<dat.GetAt(i-1)<<
" \\ "<<endl;
84 else if (ct == n ) cout<<setw(width)<<dat.GetAt(i-1)<<flush;
85 else cout<<setw(width)<<dat.GetAt(i-1)<<
" "<<flush;
98 Int_t maxbin = dat.GetSize();
99 out<<name.Data()<<
": Double_t \\"<<endl;
101 for(Int_t i = 1; i < maxbin+1; i ++){
102 if ( (i%(nvals) == 0) && i > 1 && i != maxbin ) {
103 out<<dat.GetAt(i-1)<<
" \\ "<<endl;
106 else if (i == maxbin ) {out<<dat.GetAt(i-1)<<flush; }
107 else {out<<dat.GetAt(i-1)<<
" "<<flush; }
120 Int_t dim = (Int_t)linData[0];
121 Int_t xbin = (Int_t)linData[1];
122 Int_t ybin = (Int_t)linData[2];
123 Int_t zbin = (Int_t)linData[3];
125 Int_t offsetData = 0;
127 Int_t offsety = offsetx + (xbin + 1);
128 Int_t offsetz = offsety + (ybin + 1);
131 if(dim == 1) { maxbin = xbin; offsetData = offsetx + (xbin + 1);}
132 if(dim == 2) { maxbin = xbin * ybin; offsetData = offsety + (ybin + 1);}
133 if(dim == 3) { maxbin = xbin * ybin * zbin; offsetData = offsetz + (zbin + 1);}
135 cout<<
"---------------------------------------------------------------"<<endl;
136 if(dim == 1) cout<<
"info : "<<name.Data()<<
", nBin = "<<xbin <<endl;
137 if(dim == 2) cout<<
"info : "<<name.Data()
138 <<
", nBin = "<<maxbin
140 <<
", ny = " <<ybin<<
", stored linear : ind = x * ybin + y"<<endl;
141 if(dim == 3) cout<<
"info : "<<name.Data()
142 <<
", nBin = "<<maxbin
145 <<
", nz = " <<zbin<<
", stored linear : ind = x * (ybin*zbin) + y*zbin + z"<<endl;
148 cout<<
"x axis : "<<endl;
149 printArray(linData,nvals,width,offsetx,offsetx + xbin + 1);
152 cout<<
"y axis : "<<endl;
153 printArray(linData,nvals,width,offsety,offsety + ybin + 1);
156 cout<<
"z axis : "<<endl;
157 printArray(linData,nvals,width,offsetz,offsetz + zbin + 1);
159 cout<<
"data : "<<endl;
160 printArray(linData,nvals,width,offsetData,offsetData + maxbin);
170 TArrayD& linDat = (TArrayD&)linData;
171 Int_t dim = (Int_t)linData[0];
172 Int_t xbin = (Int_t)linData[1];
173 Int_t ybin = (Int_t)linData[2];
174 Int_t zbin = (Int_t)linData[3];
176 Int_t offsetData = 0;
178 Int_t offsety = offsetx + (xbin + 1);
179 Int_t offsetz = offsety + (ybin + 1);
181 if(dim == 1) { offsetData = offsetx + (xbin + 1);}
182 if(dim == 2) { offsetData = offsety + (ybin + 1);}
183 if(dim == 3) { offsetData = offsetz + (zbin + 1);}
187 h = (TH1*)
new TH1D(name.Data(),name.Data(),xbin,&linDat[offsetx]);
189 for(Int_t i = 0; i < xbin; i ++){
190 h->SetBinContent(i+1,linData.At(offsetData + i));
192 }
else if(dim == 2) {
193 h = (TH1*)
new TH2D(name.Data(),name.Data()
194 ,xbin,&linDat[offsetx]
195 ,ybin,&linDat[offsety]
198 for(Int_t i = 0; i < xbin; i ++){
199 for(Int_t j = 0; j < ybin; j ++){
201 h->SetBinContent(i+1,j+1,linData.At(offsetData + ind) );
204 }
else if(dim == 3) {
206 h = (TH1*)
new TH3D(name.Data(),name.Data()
207 ,xbin,&linDat[offsetx]
208 ,ybin,&linDat[offsety]
209 ,zbin,&linDat[offsetz]
212 for(Int_t i = 0; i < xbin; i ++){
213 for(Int_t j = 0; j < ybin; j ++){
214 for(Int_t k = 0; k < zbin; k ++){
215 ind = i * ybin*zbin + j*ybin + j;
216 h->SetBinContent(i+1,j+1,k+1,linData.At(offsetData + ind) );
232 Int_t dim = h->GetDimension();
233 Int_t xbin = h->GetNbinsX();
234 Int_t ybin = h->GetNbinsY();
235 Int_t zbin = h->GetNbinsZ();
237 Int_t offsetData = 0;
239 Int_t offsety = offsetx + (xbin + 1);
240 Int_t offsetz = offsety + (ybin + 1);
243 if(dim == 1) { maxbin = xbin; offsetData = offsetx + (xbin + 1); ybin = zbin = 0;}
244 if(dim == 2) { maxbin = xbin * ybin; offsetData = offsety + (ybin + 1); zbin = 0;}
245 if(dim == 3) { maxbin = xbin * ybin * zbin; offsetData = offsetz + (zbin + 1);}
247 linData.Set(offsetData + maxbin);
256 for(Int_t i = 0; i < xbin; i ++){
257 linData.SetAt(h->GetXaxis()->GetBinLowEdge(i + 1),offsetx + i);
259 linData.SetAt(h->GetXaxis()->GetBinUpEdge(xbin),offsetx + xbin);
263 for(Int_t i = 0; i < ybin; i ++){
264 linData.SetAt(h->GetYaxis()->GetBinLowEdge(i + 1),offsety + i);
266 linData.SetAt(h->GetYaxis()->GetBinUpEdge(ybin),offsety + ybin);
269 for(Int_t i = 0; i < zbin; i ++){
270 linData.SetAt(h->GetZaxis()->GetBinLowEdge(i + 1),offsetz + i);
272 linData.SetAt(h->GetZaxis()->GetBinUpEdge(zbin),offsetz + zbin);
278 for(Int_t i = 0; i < xbin; i ++){
279 linData.SetAt(h->GetBinContent(i + 1),offsetData + i);
281 }
else if (dim == 2){
284 for(Int_t i = 0; i < xbin; i ++){
285 for(Int_t j = 0; j < ybin; j ++){
287 linData.SetAt(h->GetBinContent(i + 1,j + 1),offsetData + ind);
290 }
else if (dim == 3){
293 for(Int_t i = 0; i < xbin; i ++){
294 for(Int_t j = 0; j < ybin; j ++){
295 for(Int_t k = 0; k < zbin; k ++){
296 ind = i * ybin * zbin + j * ybin + k;
297 linData.SetAt(h->GetBinContent(i + 1,j + 1,k + 1),offsetData + ind);
303 printArrayInfo(linData,name,nvals,width);
static void printArrayInfo(const TArrayD &linData, TString name, Int_t nvals, Int_t width)
static void printArray(const TArray &dat, Int_t nvals=10, Int_t width=0, Int_t start=-1, Int_t end=-1)
static void writeArray(std::ostream &out, TString name, const TArray &dat, Int_t nvals=10)
static TH1 * createHist(TString name, const TArrayD &linData)
ClassImp(HHistConverter) HHistConverter
static void fillArray(const TH1 *h, TArrayD &linData, TString name="", Int_t nvals=10, Int_t width=0, Bool_t print=kTRUE)