| [2615] | 1 | #include "sopnamsp.h" | 
|---|
| [295] | 2 | #include "machdefs.h" | 
|---|
|  | 3 | #include <stdlib.h> | 
|---|
|  | 4 | #include <typeinfo> | 
|---|
| [2322] | 5 | #include <iostream> | 
|---|
| [295] | 6 | #include <string> | 
|---|
|  | 7 |  | 
|---|
|  | 8 | #include "nomhistadapter.h" | 
|---|
|  | 9 | #include "pihisto.h" | 
|---|
| [3125] | 10 | #include "sohiswrap.h" | 
|---|
|  | 11 |  | 
|---|
| [295] | 12 | #include "pihisto2d.h" | 
|---|
|  | 13 | #include "pipodrw.h" | 
|---|
| [3139] | 14 |  | 
|---|
| [546] | 15 | #include "servnobjm.h" | 
|---|
| [3149] | 16 | #include "strutilxx.h" | 
|---|
| [295] | 17 |  | 
|---|
| [1207] | 18 | #ifndef SANS_EVOLPLANCK | 
|---|
|  | 19 | #include "objfitter.h" | 
|---|
| [2697] | 20 | // Pour les DataTable ( Depuis Avril 2005 ) | 
|---|
|  | 21 | #include "datatable.h" | 
|---|
| [2701] | 22 | #include "swppfdtable.h" | 
|---|
| [1207] | 23 | #endif | 
|---|
|  | 24 |  | 
|---|
| [2605] | 25 | //----------------------------------------------------------------------------- | 
|---|
| [3123] | 26 | // Class Adaptateur d'objet (Pour NamedObjMgr) d'objet Histo / HProf | 
|---|
| [2605] | 27 | //----------------------------------------------------------------------------- | 
|---|
| [295] | 28 |  | 
|---|
|  | 29 | /* --Methode-- */ | 
|---|
|  | 30 | NOMAdapter_Histo::NOMAdapter_Histo(Histo* o) | 
|---|
|  | 31 | : NObjMgrAdapter(o) | 
|---|
|  | 32 | { | 
|---|
|  | 33 | mHis = o; | 
|---|
|  | 34 | } | 
|---|
|  | 35 |  | 
|---|
|  | 36 | /* --Methode-- */ | 
|---|
|  | 37 | NOMAdapter_Histo::~NOMAdapter_Histo() | 
|---|
|  | 38 | { | 
|---|
|  | 39 | } | 
|---|
|  | 40 |  | 
|---|
|  | 41 | /* --Methode-- */ | 
|---|
|  | 42 | NObjMgrAdapter* NOMAdapter_Histo::Clone(AnyDataObj* o) | 
|---|
|  | 43 | { | 
|---|
|  | 44 | Histo* h = dynamic_cast<Histo *>(o); | 
|---|
|  | 45 | if (h) return ( new NOMAdapter_Histo(h) ); | 
|---|
|  | 46 | return ( new NObjMgrAdapter(o) ); | 
|---|
|  | 47 | } | 
|---|
|  | 48 |  | 
|---|
| [463] | 49 | /* --Methode-- */ | 
|---|
| [1165] | 50 | string NOMAdapter_Histo::GetDataObjType() | 
|---|
| [463] | 51 | { | 
|---|
| [1165] | 52 | HProf * hp = dynamic_cast<HProf *>(mHis); | 
|---|
| [2605] | 53 | if(hp) return("HProf "); | 
|---|
|  | 54 | else return("Histo "); | 
|---|
| [1165] | 55 | } | 
|---|
|  | 56 |  | 
|---|
|  | 57 | /* --Methode-- */ | 
|---|
| [2383] | 58 | string NOMAdapter_Histo::GetInfoString(int lev) | 
|---|
|  | 59 | { | 
|---|
|  | 60 | char buff[128]; | 
|---|
|  | 61 | string rs; | 
|---|
|  | 62 | if (lev > 2) { | 
|---|
|  | 63 | sprintf(buff, "Histo: NBin=%d XMin=%lg XMax=%lg\n", mHis->NBins(), | 
|---|
|  | 64 | mHis->XMin(), mHis->XMax()); | 
|---|
|  | 65 | rs += buff; | 
|---|
|  | 66 | } | 
|---|
| [2629] | 67 | sprintf(buff, "Entries= %llu \n",mHis->NEntries()); | 
|---|
| [2383] | 68 | rs += buff; | 
|---|
|  | 69 | if (lev > 0) { | 
|---|
|  | 70 | sprintf(buff, "Overflow= %lg \n", mHis->NOver()); | 
|---|
|  | 71 | rs += buff; | 
|---|
|  | 72 | sprintf(buff, "Underflow= %lg \n", mHis->NUnder()); | 
|---|
|  | 73 | rs += buff; | 
|---|
|  | 74 | } | 
|---|
|  | 75 | sprintf(buff, "Mean= %lg \n", mHis->Mean()); | 
|---|
|  | 76 | rs += buff; | 
|---|
|  | 77 | sprintf(buff, "Sigma= %lg \n", mHis->Sigma()); | 
|---|
|  | 78 | rs += buff; | 
|---|
|  | 79 | return rs; | 
|---|
|  | 80 | } | 
|---|
|  | 81 |  | 
|---|
|  | 82 | /* --Methode-- */ | 
|---|
| [3008] | 83 | string NOMAdapter_Histo::GetInfoString(vector<string>& opts) | 
|---|
|  | 84 | { | 
|---|
|  | 85 | string blabla = "Histo1D: nbin binw mean sigma over under nentries ndata"; | 
|---|
| [3197] | 86 | blabla += " xmin xmax vmin vmax imin imax sum sum2"; | 
|---|
| [3008] | 87 |  | 
|---|
|  | 88 | if(opts.size() == 0) return GetInfoString(3); | 
|---|
|  | 89 |  | 
|---|
|  | 90 | char buff[64]; | 
|---|
|  | 91 | if(opts[0] == "nbin") { | 
|---|
|  | 92 | sprintf(buff, "%d",mHis->NBins()); | 
|---|
|  | 93 | } else if(opts[0] == "binw") { | 
|---|
|  | 94 | sprintf(buff, "%lg",mHis->BinWidth()); | 
|---|
|  | 95 | } else if(opts[0] == "mean") { | 
|---|
|  | 96 | sprintf(buff, "%lg",mHis->Mean()); | 
|---|
|  | 97 | } else if(opts[0] == "sigma") { | 
|---|
|  | 98 | sprintf(buff, "%lg",mHis->Sigma()); | 
|---|
|  | 99 | } else if(opts[0] == "over") { | 
|---|
|  | 100 | sprintf(buff, "%lg",mHis->NOver()); | 
|---|
|  | 101 | } else if(opts[0] == "under") { | 
|---|
|  | 102 | sprintf(buff, "%lg",mHis->NUnder()); | 
|---|
|  | 103 | } else if(opts[0] == "nentries") { | 
|---|
|  | 104 | sprintf(buff, "%llu",mHis->NEntries()); | 
|---|
|  | 105 | } else if(opts[0] == "ndata") { | 
|---|
|  | 106 | sprintf(buff, "%lg",mHis->NData()); | 
|---|
|  | 107 | } else if(opts[0] == "xmin") { | 
|---|
|  | 108 | sprintf(buff, "%lg",mHis->XMin()); | 
|---|
|  | 109 | } else if(opts[0] == "xmax") { | 
|---|
|  | 110 | sprintf(buff, "%lg",mHis->XMax()); | 
|---|
|  | 111 | } else if(opts[0] == "vmin") { | 
|---|
|  | 112 | sprintf(buff, "%lg",mHis->VMin()); | 
|---|
|  | 113 | } else if(opts[0] == "vmax") { | 
|---|
|  | 114 | sprintf(buff, "%lg",mHis->VMax()); | 
|---|
|  | 115 | } else if(opts[0] == "imin") { | 
|---|
|  | 116 | sprintf(buff, "%d",mHis->IMin()); | 
|---|
|  | 117 | } else if(opts[0] == "imax") { | 
|---|
|  | 118 | sprintf(buff, "%d",mHis->IMax()); | 
|---|
| [3197] | 119 | } else if(opts[0] == "sum") { | 
|---|
|  | 120 | sprintf(buff, "%lg",mHis->Sum()); | 
|---|
|  | 121 | } else if(opts[0] == "sum2") { | 
|---|
|  | 122 | sprintf(buff, "%lg",mHis->Sum2()); | 
|---|
| [3008] | 123 | } else { | 
|---|
|  | 124 | return blabla; | 
|---|
|  | 125 | } | 
|---|
|  | 126 | return string(buff); | 
|---|
|  | 127 | } | 
|---|
|  | 128 |  | 
|---|
|  | 129 | /* --Methode-- */ | 
|---|
| [1315] | 130 | AnyDataObj* NOMAdapter_Histo::CloneDataObj(bool /*share*/) | 
|---|
| [1165] | 131 | { | 
|---|
| [1090] | 132 | mHis->UpdateHisto();  // pour le cas ou c'est un HProf | 
|---|
| [463] | 133 | HProf * hp = dynamic_cast<HProf *>(mHis); | 
|---|
| [2605] | 134 | if(hp) return( new HProf(*hp) ); | 
|---|
|  | 135 | else return( new Histo(*mHis) ); | 
|---|
| [463] | 136 | } | 
|---|
| [295] | 137 |  | 
|---|
|  | 138 | /* --Methode-- */ | 
|---|
|  | 139 | void NOMAdapter_Histo::SavePPF(POutPersist& pos, string const & nom) | 
|---|
|  | 140 | { | 
|---|
|  | 141 | #ifdef SANS_EVOLPLANCK | 
|---|
|  | 142 | // PEIDA-EROS L'histo est lui-meme PPersist | 
|---|
|  | 143 | string tag = nom;  // A cause de const | 
|---|
|  | 144 | mHis->Write(pos,0,tag); | 
|---|
|  | 145 | #else | 
|---|
| [584] | 146 | ObjFileIO<Histo> fio(mHis); | 
|---|
|  | 147 | fio.Write(pos, nom); | 
|---|
| [295] | 148 | #endif | 
|---|
|  | 149 | } | 
|---|
|  | 150 |  | 
|---|
|  | 151 | /* --Methode-- */ | 
|---|
| [2975] | 152 | void NOMAdapter_Histo::Print(ostream& os, int lev) | 
|---|
| [295] | 153 | { | 
|---|
| [2975] | 154 | mHis->Show(os); | 
|---|
|  | 155 | if (lev > 0)  mHis->Print(60); | 
|---|
| [295] | 156 | } | 
|---|
|  | 157 |  | 
|---|
|  | 158 | /* --Methode-- */ | 
|---|
|  | 159 | PIDrawer* NOMAdapter_Histo::GetDrawer(string & dopt) | 
|---|
|  | 160 | { | 
|---|
| [1971] | 161 | if (typeid(*mHis) == typeid(HProf))  dopt = "fcirclemarker5 " + dopt; | 
|---|
|  | 162 | else dopt = "thinline " + dopt; | 
|---|
| [3125] | 163 | HistoWrapper* hw = new HistoWrapper(mHis, false); // false: le Wrapper ne delete pas l'objet Histo mHis | 
|---|
|  | 164 | PIHisto * pih = new PIHisto(hw, true); // true: PIHisto delete l'objet HistoWrapper hw | 
|---|
| [546] | 165 | return( pih ); | 
|---|
| [295] | 166 | } | 
|---|
|  | 167 |  | 
|---|
|  | 168 | /* --Methode-- */ | 
|---|
| [344] | 169 | NTupleInterface* NOMAdapter_Histo::GetNTupleInterface(bool& adel) | 
|---|
| [295] | 170 | { | 
|---|
| [344] | 171 | adel = true; | 
|---|
| [295] | 172 | return( new NTupInt_Histo(mHis) ); | 
|---|
|  | 173 | } | 
|---|
|  | 174 |  | 
|---|
| [1207] | 175 | /* --Methode-- */ | 
|---|
|  | 176 | GeneralFitData* NOMAdapter_Histo::GetGeneralFitData(bool& adel | 
|---|
|  | 177 | ,GeneralFitData::FitErrType errtype,double errscale,double errmin | 
|---|
|  | 178 | ,int i1,int i2,int j1,int j2) | 
|---|
|  | 179 | { | 
|---|
|  | 180 | adel = false; | 
|---|
|  | 181 | if(!mHis) return(NULL); | 
|---|
| [295] | 182 |  | 
|---|
| [1207] | 183 | int nx = mHis->NBins(); | 
|---|
|  | 184 | if(nx<=0) return(NULL); | 
|---|
|  | 185 |  | 
|---|
|  | 186 | i1 = (i1<0||i1>=nx)? 0: i1; | 
|---|
|  | 187 | i2 = (i2<0||i2>=nx||i2<i1)? nx-1: i2; | 
|---|
|  | 188 |  | 
|---|
|  | 189 | GeneralFitData* mGData = new GeneralFitData(1,i2-i1+1,0); | 
|---|
|  | 190 | adel = true; | 
|---|
|  | 191 |  | 
|---|
|  | 192 | for(int i=i1;i<=i2;i++) { | 
|---|
|  | 193 | double x = mHis->BinCenter(i); | 
|---|
|  | 194 | double f = (*mHis)(i); | 
|---|
|  | 195 | double e = (mHis->HasErrors())? mHis->Error(i) : 1.; | 
|---|
|  | 196 | e = GeneralFitData::ComputeError(f,e,errtype,errscale,errmin); | 
|---|
|  | 197 | mGData->AddData1(x,f,e); | 
|---|
|  | 198 | } | 
|---|
|  | 199 |  | 
|---|
|  | 200 | return mGData; | 
|---|
|  | 201 | } | 
|---|
|  | 202 |  | 
|---|
|  | 203 | AnyDataObj* NOMAdapter_Histo::FitResidusObj(GeneralFit& mfit) | 
|---|
|  | 204 | { | 
|---|
|  | 205 | Histo* h = NULL; | 
|---|
|  | 206 | #ifdef SANS_EVOLPLANCK | 
|---|
|  | 207 | h = mHis->FitResidus(mfit); | 
|---|
|  | 208 | #else | 
|---|
|  | 209 | h = new Histo(ObjectFitter::FitResidus(*mHis,mfit)); | 
|---|
|  | 210 | #endif | 
|---|
|  | 211 | return h; | 
|---|
|  | 212 | } | 
|---|
|  | 213 |  | 
|---|
|  | 214 | AnyDataObj* NOMAdapter_Histo::FitFunctionObj(GeneralFit& mfit) | 
|---|
|  | 215 | { | 
|---|
|  | 216 | Histo* h = NULL; | 
|---|
|  | 217 | #ifdef SANS_EVOLPLANCK | 
|---|
|  | 218 | h = mHis->FitFunction(mfit); | 
|---|
|  | 219 | #else | 
|---|
|  | 220 | h = new Histo(ObjectFitter::FitFunction(*mHis,mfit)); | 
|---|
|  | 221 | #endif | 
|---|
|  | 222 | return h; | 
|---|
|  | 223 | } | 
|---|
|  | 224 |  | 
|---|
| [295] | 225 | // ------------------------------------------------------------- | 
|---|
|  | 226 |  | 
|---|
|  | 227 | /* --Methode-- */ | 
|---|
|  | 228 | NTupInt_Histo::NTupInt_Histo(Histo* h) | 
|---|
|  | 229 | { | 
|---|
| [3052] | 230 | mHis  = h; | 
|---|
|  | 231 | mHpr  = dynamic_cast<HProf *>(h); | 
|---|
| [295] | 232 | } | 
|---|
|  | 233 |  | 
|---|
|  | 234 | /* --Methode-- */ | 
|---|
|  | 235 | NTupInt_Histo::~NTupInt_Histo() | 
|---|
|  | 236 | { | 
|---|
|  | 237 | } | 
|---|
|  | 238 |  | 
|---|
|  | 239 | /* --Methode-- */ | 
|---|
| [2683] | 240 | sa_size_t NTupInt_Histo::NbLines() const | 
|---|
| [295] | 241 | { | 
|---|
|  | 242 | return(mHis->NBins()); | 
|---|
|  | 243 | } | 
|---|
|  | 244 |  | 
|---|
|  | 245 | /* --Methode-- */ | 
|---|
| [2683] | 246 | sa_size_t NTupInt_Histo::NbColumns() const | 
|---|
| [295] | 247 | { | 
|---|
| [3052] | 248 | return(5); | 
|---|
| [295] | 249 | } | 
|---|
|  | 250 |  | 
|---|
|  | 251 | /* --Methode-- */ | 
|---|
| [2683] | 252 | r_8* NTupInt_Histo::GetLineD(sa_size_t k) const | 
|---|
| [295] | 253 | { | 
|---|
|  | 254 | int i; | 
|---|
|  | 255 | if ((k < 0) || (k >= mHis->NBins())) | 
|---|
| [3052] | 256 | for(i=0; i<5; i++)  mRet[i] = 0.; | 
|---|
| [295] | 257 | else { | 
|---|
|  | 258 | mRet[0] = k;  mRet[1] = mHis->BinCenter(k); | 
|---|
| [3052] | 259 | mRet[2] = (*mHis)(k); mRet[3] = mHis->Error(k); | 
|---|
| [3123] | 260 | if(mHpr) mRet[4] = mHpr->SumW(k); else mRet[4] = 0.; | 
|---|
| [295] | 261 | } | 
|---|
|  | 262 | return(mRet); | 
|---|
|  | 263 | } | 
|---|
|  | 264 |  | 
|---|
|  | 265 | /* --Methode-- */ | 
|---|
| [326] | 266 | string NTupInt_Histo::VarList_C(const char* nx) const | 
|---|
| [295] | 267 | { | 
|---|
|  | 268 | string nomx; | 
|---|
|  | 269 | if (nx) nomx = nx; | 
|---|
|  | 270 | else nomx = "_xh_"; | 
|---|
| [3052] | 271 | string vardec = "double i,x,val,err,nb; \n"; | 
|---|
| [295] | 272 | vardec += "i = " + nomx + "[0];  x = " + nomx + "[1]; \n"; | 
|---|
|  | 273 | vardec += "val = " + nomx + "[2];  err = " + nomx + "[3]; \n"; | 
|---|
| [3052] | 274 | vardec += "nb = " + nomx + "[4]; \n"; | 
|---|
| [295] | 275 | return(vardec); | 
|---|
|  | 276 | } | 
|---|
|  | 277 |  | 
|---|
|  | 278 | //------------------------------------------------------------------------- | 
|---|
|  | 279 | // Class Adaptateur d'objet (Pour NamedObjMgr) d'objet Histo2D | 
|---|
|  | 280 | //------------------------------------------------------------------------- | 
|---|
|  | 281 |  | 
|---|
|  | 282 |  | 
|---|
|  | 283 | /* --Methode-- */ | 
|---|
|  | 284 | NOMAdapter_Histo2D::NOMAdapter_Histo2D(Histo2D* o) | 
|---|
|  | 285 | : NObjMgrAdapter(o) | 
|---|
|  | 286 | { | 
|---|
|  | 287 | mHis = o; | 
|---|
|  | 288 | } | 
|---|
|  | 289 |  | 
|---|
|  | 290 | /* --Methode-- */ | 
|---|
|  | 291 | NOMAdapter_Histo2D::~NOMAdapter_Histo2D() | 
|---|
|  | 292 | { | 
|---|
|  | 293 | } | 
|---|
|  | 294 |  | 
|---|
|  | 295 | /* --Methode-- */ | 
|---|
|  | 296 | NObjMgrAdapter* NOMAdapter_Histo2D::Clone(AnyDataObj* o) | 
|---|
|  | 297 | { | 
|---|
|  | 298 | Histo2D* h = dynamic_cast<Histo2D *>(o); | 
|---|
|  | 299 | if (h) return ( new NOMAdapter_Histo2D(h) ); | 
|---|
|  | 300 | return ( new NObjMgrAdapter(o) ); | 
|---|
|  | 301 | } | 
|---|
|  | 302 |  | 
|---|
| [463] | 303 | /* --Methode-- */ | 
|---|
| [1165] | 304 | string NOMAdapter_Histo2D::GetDataObjType() | 
|---|
| [463] | 305 | { | 
|---|
| [1165] | 306 | return ("Histo2D "); | 
|---|
|  | 307 | } | 
|---|
|  | 308 |  | 
|---|
|  | 309 | /* --Methode-- */ | 
|---|
| [1315] | 310 | AnyDataObj* NOMAdapter_Histo2D::CloneDataObj(bool /*share*/) | 
|---|
| [1165] | 311 | { | 
|---|
| [463] | 312 | return ( new Histo2D(*mHis) ); | 
|---|
|  | 313 | } | 
|---|
| [295] | 314 |  | 
|---|
|  | 315 | /* --Methode-- */ | 
|---|
|  | 316 | void NOMAdapter_Histo2D::SavePPF(POutPersist& pos, string const & nom) | 
|---|
|  | 317 | { | 
|---|
|  | 318 | #ifdef SANS_EVOLPLANCK | 
|---|
|  | 319 | // PEIDA-EROS L'histo est lui-meme PPersist | 
|---|
|  | 320 | string tag = nom;  // A cause de const | 
|---|
|  | 321 | mHis->Write(pos,0,tag); | 
|---|
|  | 322 | #else | 
|---|
| [584] | 323 | ObjFileIO<Histo2D> fio(mHis); | 
|---|
|  | 324 | fio.Write(pos, nom); | 
|---|
| [295] | 325 | #endif | 
|---|
|  | 326 | } | 
|---|
|  | 327 |  | 
|---|
|  | 328 | /* --Methode-- */ | 
|---|
| [2975] | 329 | void NOMAdapter_Histo2D::Print(ostream& os, int lev) | 
|---|
| [295] | 330 | { | 
|---|
| [2975] | 331 | mHis->Show(os); | 
|---|
|  | 332 | if (lev > 0)  mHis->Print(); | 
|---|
| [295] | 333 | } | 
|---|
|  | 334 |  | 
|---|
|  | 335 | /* --Methode-- */ | 
|---|
|  | 336 | PIDrawer* NOMAdapter_Histo2D::GetDrawer(string & dopt) | 
|---|
|  | 337 | { | 
|---|
| [3149] | 338 | dopt = "thinline " + dopt; | 
|---|
| [3145] | 339 | return( new PIHisto2D(new Histo2DWrapper(mHis, false), true) ); | 
|---|
| [295] | 340 | } | 
|---|
|  | 341 |  | 
|---|
|  | 342 | /* --Methode-- */ | 
|---|
|  | 343 | P2DArrayAdapter* NOMAdapter_Histo2D::Get2DArray(string & dopt) | 
|---|
|  | 344 | { | 
|---|
| [3145] | 345 | Histo2DWrapper* hwp = new Histo2DWrapper(mHis, false); | 
|---|
|  | 346 | return hwp; | 
|---|
| [295] | 347 | } | 
|---|
|  | 348 |  | 
|---|
|  | 349 | /* --Methode-- */ | 
|---|
| [344] | 350 | NTupleInterface* NOMAdapter_Histo2D::GetNTupleInterface(bool& adel) | 
|---|
| [295] | 351 | { | 
|---|
| [344] | 352 | adel = true; | 
|---|
| [295] | 353 | return( new NTupInt_Histo2D(mHis) ); | 
|---|
|  | 354 | } | 
|---|
|  | 355 |  | 
|---|
|  | 356 |  | 
|---|
| [1207] | 357 | /* --Methode-- */ | 
|---|
|  | 358 | GeneralFitData* NOMAdapter_Histo2D::GetGeneralFitData(bool& adel | 
|---|
|  | 359 | ,GeneralFitData::FitErrType errtype,double errscale,double errmin | 
|---|
|  | 360 | ,int i1,int i2,int j1,int j2) | 
|---|
|  | 361 | { | 
|---|
|  | 362 | adel = false; | 
|---|
|  | 363 | if(!mHis) return(NULL); | 
|---|
| [295] | 364 |  | 
|---|
| [1207] | 365 | int nx = mHis->NBinX(); | 
|---|
|  | 366 | int ny = mHis->NBinY(); | 
|---|
|  | 367 | if(nx<=0 || ny<=0) return(NULL); | 
|---|
|  | 368 |  | 
|---|
|  | 369 | i1 = (i1<0||i1>=nx)? 0: i1; | 
|---|
|  | 370 | i2 = (i2<0||i2>=nx||i2<i1)? nx-1: i2; | 
|---|
|  | 371 | j1 = (j1<0||j1>=ny)? 0: j1; | 
|---|
|  | 372 | j2 = (j2<0||j2>=ny||j2<j1)? ny-1: j2; | 
|---|
|  | 373 |  | 
|---|
|  | 374 | GeneralFitData* mGData = new GeneralFitData(2,(i2-i1+1)*(j2-j1+1),0); | 
|---|
|  | 375 | adel = true; | 
|---|
|  | 376 |  | 
|---|
|  | 377 | for(int i=i1;i<=i2;i++) for(int j=j1;j<=j2;j++) { | 
|---|
|  | 378 | double x,y; mHis->BinCenter(i,j,x,y); | 
|---|
|  | 379 | double f = (*mHis)(i,j); | 
|---|
|  | 380 | double e = (mHis->HasErrors())? mHis->Error(i,j) : 1.; | 
|---|
|  | 381 | e = GeneralFitData::ComputeError(f,e,errtype,errscale,errmin); | 
|---|
|  | 382 | mGData->AddData2(x,y,f,e); | 
|---|
|  | 383 | } | 
|---|
|  | 384 |  | 
|---|
|  | 385 | return mGData; | 
|---|
|  | 386 | } | 
|---|
|  | 387 |  | 
|---|
|  | 388 | AnyDataObj* NOMAdapter_Histo2D::FitResidusObj(GeneralFit& mfit) | 
|---|
|  | 389 | { | 
|---|
|  | 390 | Histo2D* h2 = NULL; | 
|---|
|  | 391 | #ifdef SANS_EVOLPLANCK | 
|---|
|  | 392 | h2 = mHis->FitFunction(mfit); | 
|---|
|  | 393 | #else | 
|---|
|  | 394 | h2 = new Histo2D(ObjectFitter::FitResidus(*mHis,mfit)); | 
|---|
|  | 395 | #endif | 
|---|
|  | 396 | return h2; | 
|---|
|  | 397 | } | 
|---|
|  | 398 |  | 
|---|
|  | 399 | AnyDataObj* NOMAdapter_Histo2D::FitFunctionObj(GeneralFit& mfit) | 
|---|
|  | 400 | { | 
|---|
|  | 401 | Histo2D* h2 = NULL; | 
|---|
|  | 402 | #ifdef SANS_EVOLPLANCK | 
|---|
|  | 403 | h2 = mHis->FitFunction(mfit); | 
|---|
|  | 404 | #else | 
|---|
|  | 405 | h2 = new Histo2D(ObjectFitter::FitFunction(*mHis,mfit)); | 
|---|
|  | 406 | #endif | 
|---|
|  | 407 | return h2; | 
|---|
|  | 408 | } | 
|---|
|  | 409 |  | 
|---|
|  | 410 |  | 
|---|
| [3008] | 411 | /* --Methode-- */ | 
|---|
|  | 412 | string NOMAdapter_Histo2D::GetInfoString(vector<string>& opts) | 
|---|
|  | 413 | { | 
|---|
|  | 414 | string blabla = "Histo2D: nbin binw nband nslice nentries ndata xmin xmax"; | 
|---|
|  | 415 | blabla += " ymin ymax vmin vmax ijmin ijmax"; | 
|---|
|  | 416 |  | 
|---|
|  | 417 | if(opts.size() == 0) return blabla; | 
|---|
|  | 418 |  | 
|---|
|  | 419 | char buff[128]; | 
|---|
|  | 420 | if(opts[0] == "nbin") { | 
|---|
|  | 421 | sprintf(buff, "%d %d",mHis->NBinX(),mHis->NBinY()); | 
|---|
|  | 422 | } else if(opts[0] == "binw") { | 
|---|
|  | 423 | sprintf(buff, "%lg %lg",mHis->WBinX(),mHis->WBinY()); | 
|---|
|  | 424 | } else if(opts[0] == "nband") { | 
|---|
|  | 425 | sprintf(buff, "%d %d",mHis->NBandX(),mHis->NBandY()); | 
|---|
|  | 426 | } else if(opts[0] == "nslice") { | 
|---|
|  | 427 | sprintf(buff, "%d %d",mHis->NSliX(),mHis->NSliY()); | 
|---|
|  | 428 | } else if(opts[0] == "nentries") { | 
|---|
|  | 429 | sprintf(buff, "%d",mHis->NEntries()); | 
|---|
|  | 430 | } else if(opts[0] == "ndata") { | 
|---|
|  | 431 | sprintf(buff, "%lg",mHis->NData()); | 
|---|
|  | 432 | } else if(opts[0] == "xmin") { | 
|---|
|  | 433 | sprintf(buff, "%lg",mHis->XMin()); | 
|---|
|  | 434 | } else if(opts[0] == "xmax") { | 
|---|
|  | 435 | sprintf(buff, "%lg",mHis->XMax()); | 
|---|
|  | 436 | } else if(opts[0] == "ymin") { | 
|---|
|  | 437 | sprintf(buff, "%lg",mHis->YMin()); | 
|---|
|  | 438 | } else if(opts[0] == "ymax") { | 
|---|
|  | 439 | sprintf(buff, "%lg",mHis->YMax()); | 
|---|
|  | 440 | } else if(opts[0] == "vmin") { | 
|---|
|  | 441 | sprintf(buff, "%lg",mHis->VMin()); | 
|---|
|  | 442 | } else if(opts[0] == "vmax") { | 
|---|
|  | 443 | sprintf(buff, "%lg",mHis->VMax()); | 
|---|
|  | 444 | } else if(opts[0] == "ijmin") { | 
|---|
|  | 445 | int_4 i,j; | 
|---|
|  | 446 | mHis->IJMin(i,j); | 
|---|
|  | 447 | sprintf(buff, "%d %d",i,j); | 
|---|
|  | 448 | } else if(opts[0] == "ijmax") { | 
|---|
|  | 449 | int_4 i,j; | 
|---|
|  | 450 | mHis->IJMax(i,j); | 
|---|
|  | 451 | sprintf(buff, "%d %d",i,j); | 
|---|
|  | 452 | } else { | 
|---|
|  | 453 | return blabla; | 
|---|
|  | 454 | } | 
|---|
|  | 455 | return string(buff); | 
|---|
|  | 456 | } | 
|---|
|  | 457 |  | 
|---|
| [295] | 458 | // ------------------------------------------------------------- | 
|---|
|  | 459 |  | 
|---|
|  | 460 | /* --Methode-- */ | 
|---|
|  | 461 | NTupInt_Histo2D::NTupInt_Histo2D(Histo2D* h) | 
|---|
|  | 462 | { | 
|---|
|  | 463 | mHis = h; | 
|---|
|  | 464 | } | 
|---|
|  | 465 |  | 
|---|
|  | 466 | /* --Methode-- */ | 
|---|
|  | 467 | NTupInt_Histo2D::~NTupInt_Histo2D() | 
|---|
|  | 468 | { | 
|---|
|  | 469 | } | 
|---|
|  | 470 |  | 
|---|
|  | 471 | /* --Methode-- */ | 
|---|
| [2683] | 472 | sa_size_t NTupInt_Histo2D::NbLines() const | 
|---|
| [295] | 473 | { | 
|---|
|  | 474 | return(mHis->NBinX()*mHis->NBinY()); | 
|---|
|  | 475 | } | 
|---|
|  | 476 |  | 
|---|
|  | 477 | /* --Methode-- */ | 
|---|
| [2683] | 478 | sa_size_t NTupInt_Histo2D::NbColumns() const | 
|---|
| [295] | 479 | { | 
|---|
|  | 480 | return(6); | 
|---|
|  | 481 | } | 
|---|
|  | 482 |  | 
|---|
|  | 483 | /* --Methode-- */ | 
|---|
| [2683] | 484 | r_8* NTupInt_Histo2D::GetLineD(sa_size_t n) const | 
|---|
| [295] | 485 | { | 
|---|
|  | 486 | int i,j; | 
|---|
| [1091] | 487 | r_8 f2,f3; | 
|---|
| [295] | 488 | if ((n < 0) || (n >= mHis->NBinX()*mHis->NBinY())) | 
|---|
|  | 489 | for(i=0; i<6; i++)  mRet[i] = 0.; | 
|---|
|  | 490 | else { | 
|---|
|  | 491 | i = n%mHis->NBinX();  j = n/mHis->NBinX(); | 
|---|
|  | 492 | mRet[0] = i;  mRet[1] = j; | 
|---|
|  | 493 | mHis->BinCenter(i,j,f2,f3); | 
|---|
|  | 494 | mRet[2] = f2;  mRet[3] = f3; | 
|---|
|  | 495 | mRet[4] =  (*mHis)(i,j);  mRet[5] = mHis->Error(i, j); | 
|---|
|  | 496 | } | 
|---|
|  | 497 | return(mRet); | 
|---|
|  | 498 | } | 
|---|
|  | 499 |  | 
|---|
|  | 500 | /* --Methode-- */ | 
|---|
| [326] | 501 | string NTupInt_Histo2D::VarList_C(const char* nx) const | 
|---|
| [295] | 502 | { | 
|---|
|  | 503 | string nomx; | 
|---|
|  | 504 | if (nx) nomx = nx; | 
|---|
|  | 505 | else nomx = "_xh_"; | 
|---|
|  | 506 | string vardec = "double i,j,x,y,val,err; \n"; | 
|---|
|  | 507 | vardec += "i = " + nomx + "[0];  j = " + nomx + "[1]; \n"; | 
|---|
|  | 508 | vardec += "x = " + nomx + "[2];  y = " + nomx + "[3]; \n"; | 
|---|
|  | 509 | vardec += "val = " + nomx + "[4];  err = " + nomx + "[5]; \n"; | 
|---|
|  | 510 | return(vardec); | 
|---|
|  | 511 | } | 
|---|
|  | 512 |  | 
|---|
|  | 513 |  | 
|---|
|  | 514 |  | 
|---|
|  | 515 | //------------------------------------------------------------------------- | 
|---|
|  | 516 | // Class Adaptateur d'objet (Pour NamedObjMgr) d'objet NTuple | 
|---|
|  | 517 | //------------------------------------------------------------------------- | 
|---|
|  | 518 |  | 
|---|
|  | 519 | /* --Methode-- */ | 
|---|
|  | 520 | NOMAdapter_NTuple::NOMAdapter_NTuple(NTuple* o) | 
|---|
|  | 521 | : NObjMgrAdapter(o) | 
|---|
|  | 522 | { | 
|---|
|  | 523 | mNt = o; | 
|---|
|  | 524 | } | 
|---|
|  | 525 |  | 
|---|
|  | 526 | /* --Methode-- */ | 
|---|
|  | 527 | NOMAdapter_NTuple::~NOMAdapter_NTuple() | 
|---|
|  | 528 | { | 
|---|
|  | 529 | } | 
|---|
|  | 530 |  | 
|---|
|  | 531 | /* --Methode-- */ | 
|---|
|  | 532 | NObjMgrAdapter* NOMAdapter_NTuple::Clone(AnyDataObj* o) | 
|---|
|  | 533 | { | 
|---|
|  | 534 | NTuple* nt = dynamic_cast<NTuple *>(o); | 
|---|
|  | 535 | if (nt) return ( new NOMAdapter_NTuple(nt) ); | 
|---|
|  | 536 | return ( new NObjMgrAdapter(o) ); | 
|---|
|  | 537 | } | 
|---|
|  | 538 |  | 
|---|
| [1165] | 539 |  | 
|---|
| [463] | 540 | /* --Methode-- */ | 
|---|
| [1165] | 541 | string NOMAdapter_NTuple::GetDataObjType() | 
|---|
| [463] | 542 | { | 
|---|
| [1165] | 543 | return ("NTuple "); | 
|---|
|  | 544 | } | 
|---|
|  | 545 |  | 
|---|
|  | 546 | /* --Methode-- */ | 
|---|
| [1315] | 547 | AnyDataObj* NOMAdapter_NTuple::CloneDataObj(bool /*share*/) | 
|---|
| [1165] | 548 | { | 
|---|
| [463] | 549 | return ( new NTuple(*mNt) ); | 
|---|
|  | 550 | } | 
|---|
| [295] | 551 |  | 
|---|
| [1321] | 552 |  | 
|---|
|  | 553 |  | 
|---|
|  | 554 | /* --Methode-- */ | 
|---|
| [295] | 555 | void NOMAdapter_NTuple::SavePPF(POutPersist& pos, string const & nom) | 
|---|
|  | 556 | { | 
|---|
|  | 557 | #ifdef SANS_EVOLPLANCK | 
|---|
|  | 558 | // PEIDA-EROS L'histo est lui-meme PPersist | 
|---|
|  | 559 | string tag = nom;  // A cause de const | 
|---|
|  | 560 | mNt->Write(pos,0,tag); | 
|---|
|  | 561 | #else | 
|---|
| [584] | 562 | ObjFileIO<NTuple> fio(mNt); | 
|---|
|  | 563 | fio.Write(pos, nom); | 
|---|
| [295] | 564 | #endif | 
|---|
|  | 565 | } | 
|---|
|  | 566 |  | 
|---|
|  | 567 | /* --Methode-- */ | 
|---|
| [3033] | 568 | string NOMAdapter_NTuple::GetInfoString(vector<string>& opts) | 
|---|
|  | 569 | { | 
|---|
|  | 570 | if (opts.size() == 0) return NObjMgrAdapter::GetInfoString(opts); | 
|---|
|  | 571 | char buff[128]; | 
|---|
|  | 572 | if (opts[0] == "sizes") { | 
|---|
|  | 573 | sprintf(buff, "%ld %ld", mNt->NEntry(), mNt->NVar()); | 
|---|
|  | 574 | return string(buff); | 
|---|
|  | 575 | } | 
|---|
|  | 576 | else if ((opts[0] == "nlines") || (opts[0] == "nentry") || (opts[0] == "nrows")) { | 
|---|
|  | 577 | sprintf(buff, "%ld", mNt->NEntry()); | 
|---|
|  | 578 | return string(buff); | 
|---|
|  | 579 | } | 
|---|
|  | 580 | else if ((opts[0] == "nvar") || (opts[0] == "ncols")) { | 
|---|
|  | 581 | sprintf(buff, "%ld", mNt->NVar()); | 
|---|
|  | 582 | return string(buff); | 
|---|
|  | 583 | } | 
|---|
| [3432] | 584 | else if (opts[0] == "info") { // Acces aux valeurs stockes ds le DVList Info() | 
|---|
|  | 585 | if (opts.size() < 2)  return string(""); | 
|---|
|  | 586 | else if (mNt->Info().HasKey(opts[1]) == false) return string(""); | 
|---|
|  | 587 | else return mNt->Info().GetS(opts[1]); | 
|---|
| [3033] | 588 | } | 
|---|
| [3432] | 589 | else if (opts[0] == "row") { // Pour recuperer une ligne de la table | 
|---|
|  | 590 | if (opts.size() < 2)  return string(""); | 
|---|
|  | 591 | sa_size_t num = atol(opts[1].c_str()); | 
|---|
|  | 592 | return mNt->LineToString(num); | 
|---|
|  | 593 | } | 
|---|
|  | 594 | else return "NTuple.Att: nlines/nentry/nrows nvar/ncols info.varname row.num"; | 
|---|
|  | 595 | } | 
|---|
| [3033] | 596 |  | 
|---|
|  | 597 | /* --Methode-- */ | 
|---|
| [2975] | 598 | void NOMAdapter_NTuple::Print(ostream& os, int lev) | 
|---|
| [295] | 599 | { | 
|---|
| [2975] | 600 | mNt->Show(os); | 
|---|
| [3033] | 601 | if (lev > 2) os << mNt->Info(); | 
|---|
|  | 602 | if (lev > 0) mNt->Print(0, 10*lev); | 
|---|
| [295] | 603 | } | 
|---|
|  | 604 |  | 
|---|
|  | 605 |  | 
|---|
|  | 606 | /* --Methode-- */ | 
|---|
| [344] | 607 | NTupleInterface* NOMAdapter_NTuple::GetNTupleInterface(bool& adel) | 
|---|
| [295] | 608 | { | 
|---|
| [344] | 609 | adel = false; | 
|---|
|  | 610 | return(mNt); | 
|---|
|  | 611 | // return( new NTupInt_NTuple(mNt) ); | 
|---|
| [295] | 612 | } | 
|---|
|  | 613 |  | 
|---|
| [361] | 614 | //------------------------------------------------------------------------- | 
|---|
|  | 615 | // Class Adaptateur d'objet (Pour NamedObjMgr) d'objet XNTuple | 
|---|
|  | 616 | //------------------------------------------------------------------------- | 
|---|
| [295] | 617 |  | 
|---|
| [361] | 618 | /* --Methode-- */ | 
|---|
|  | 619 | NOMAdapter_XNTuple::NOMAdapter_XNTuple(XNTuple* o) | 
|---|
|  | 620 | : NObjMgrAdapter(o) | 
|---|
|  | 621 | { | 
|---|
|  | 622 | mNt = o; | 
|---|
|  | 623 | } | 
|---|
|  | 624 |  | 
|---|
|  | 625 | /* --Methode-- */ | 
|---|
|  | 626 | NOMAdapter_XNTuple::~NOMAdapter_XNTuple() | 
|---|
|  | 627 | { | 
|---|
|  | 628 | } | 
|---|
|  | 629 |  | 
|---|
|  | 630 | /* --Methode-- */ | 
|---|
|  | 631 | NObjMgrAdapter* NOMAdapter_XNTuple::Clone(AnyDataObj* o) | 
|---|
|  | 632 | { | 
|---|
|  | 633 | XNTuple* nt = dynamic_cast<XNTuple *>(o); | 
|---|
|  | 634 | if (nt) return ( new NOMAdapter_XNTuple(nt) ); | 
|---|
|  | 635 | return ( new NObjMgrAdapter(o) ); | 
|---|
|  | 636 | } | 
|---|
|  | 637 |  | 
|---|
| [1165] | 638 | /* --Methode-- */ | 
|---|
|  | 639 | string NOMAdapter_XNTuple::GetDataObjType() | 
|---|
|  | 640 | { | 
|---|
|  | 641 | return ("XNTuple "); | 
|---|
|  | 642 | } | 
|---|
| [361] | 643 |  | 
|---|
|  | 644 | /* --Methode-- */ | 
|---|
| [1315] | 645 | AnyDataObj* NOMAdapter_XNTuple::CloneDataObj(bool /*share*/) | 
|---|
| [1165] | 646 | { | 
|---|
|  | 647 | return ( new XNTuple(*mNt) ); | 
|---|
|  | 648 | } | 
|---|
|  | 649 |  | 
|---|
|  | 650 | /* --Methode-- */ | 
|---|
| [361] | 651 | void NOMAdapter_XNTuple::SavePPF(POutPersist& pos, string const & nom) | 
|---|
|  | 652 | { | 
|---|
|  | 653 | #ifdef SANS_EVOLPLANCK | 
|---|
|  | 654 | // PEIDA-EROS L'histo est lui-meme PPersist | 
|---|
|  | 655 | string tag = nom;  // A cause de const | 
|---|
|  | 656 | mNt->Write(pos,0,tag); | 
|---|
|  | 657 | #else | 
|---|
| [719] | 658 | ObjFileIO<XNTuple> fio(mNt); | 
|---|
|  | 659 | fio.Write(pos, nom); | 
|---|
| [361] | 660 | #endif | 
|---|
|  | 661 | } | 
|---|
|  | 662 |  | 
|---|
|  | 663 | /* --Methode-- */ | 
|---|
| [2975] | 664 | void NOMAdapter_XNTuple::Print(ostream& os, int lev) | 
|---|
| [361] | 665 | { | 
|---|
|  | 666 | // os << mNt->Info(); | 
|---|
|  | 667 | mNt->Show(os); | 
|---|
|  | 668 | } | 
|---|
|  | 669 |  | 
|---|
|  | 670 |  | 
|---|
|  | 671 | /* --Methode-- */ | 
|---|
|  | 672 | NTupleInterface* NOMAdapter_XNTuple::GetNTupleInterface(bool& adel) | 
|---|
|  | 673 | { | 
|---|
|  | 674 | adel = false; | 
|---|
|  | 675 | return(mNt); | 
|---|
|  | 676 | } | 
|---|
| [2697] | 677 |  | 
|---|
|  | 678 |  | 
|---|
|  | 679 | //------------------------------------------------------------------------- | 
|---|
|  | 680 | // Class Adaptateur d'objet (Pour NamedObjMgr) d'objet BaseDataTable | 
|---|
|  | 681 | //------------------------------------------------------------------------- | 
|---|
|  | 682 |  | 
|---|
|  | 683 | /* --Methode-- */ | 
|---|
|  | 684 | NOMAdapter_DataTable::NOMAdapter_DataTable(BaseDataTable* o) | 
|---|
|  | 685 | : NObjMgrAdapter(o) | 
|---|
|  | 686 | { | 
|---|
|  | 687 | mDT = o; | 
|---|
|  | 688 | } | 
|---|
|  | 689 |  | 
|---|
|  | 690 | /* --Methode-- */ | 
|---|
|  | 691 | NOMAdapter_DataTable::~NOMAdapter_DataTable() | 
|---|
|  | 692 | { | 
|---|
|  | 693 | } | 
|---|
|  | 694 |  | 
|---|
|  | 695 | /* --Methode-- */ | 
|---|
|  | 696 | NObjMgrAdapter* NOMAdapter_DataTable::Clone(AnyDataObj* o) | 
|---|
|  | 697 | { | 
|---|
|  | 698 | BaseDataTable* dt = dynamic_cast<BaseDataTable *>(o); | 
|---|
|  | 699 | if (dt) return ( new NOMAdapter_DataTable(dt) ); | 
|---|
|  | 700 | else return ( new NObjMgrAdapter(o) ); | 
|---|
|  | 701 | } | 
|---|
|  | 702 |  | 
|---|
|  | 703 | /* --Methode-- */ | 
|---|
|  | 704 | string NOMAdapter_DataTable::GetDataObjType() | 
|---|
|  | 705 | { | 
|---|
|  | 706 | DataTable* dt = dynamic_cast<DataTable *>(mDT); | 
|---|
|  | 707 | if (dt) return ("DataTable "); | 
|---|
| [2701] | 708 | else { | 
|---|
|  | 709 | SwPPFDataTable* swdt = dynamic_cast<SwPPFDataTable *>(mDT); | 
|---|
|  | 710 | if (swdt) return ("SwPPFDataTable "); | 
|---|
|  | 711 | return  ("BaseDataTable "); | 
|---|
|  | 712 | } | 
|---|
| [2697] | 713 | } | 
|---|
|  | 714 |  | 
|---|
|  | 715 | /* --Methode-- */ | 
|---|
|  | 716 | AnyDataObj* NOMAdapter_DataTable::CloneDataObj(bool share) | 
|---|
|  | 717 | { | 
|---|
|  | 718 | DataTable* dt = dynamic_cast<DataTable *>(mDT); | 
|---|
|  | 719 | if (dt) return new DataTable(*dt, share); | 
|---|
| [2701] | 720 | else { | 
|---|
|  | 721 | SwPPFDataTable* swdt = dynamic_cast<SwPPFDataTable *>(mDT); | 
|---|
|  | 722 | if (swdt) cout << "NOMAdapter_DataTable::CloneDataObj() Object type SwPPFDataTable can not be cloned !" << endl; | 
|---|
|  | 723 | return NULL; | 
|---|
|  | 724 | } | 
|---|
| [2697] | 725 | } | 
|---|
|  | 726 |  | 
|---|
|  | 727 |  | 
|---|
|  | 728 | /* --Methode-- */ | 
|---|
|  | 729 | void NOMAdapter_DataTable::SavePPF(POutPersist& pos, string const & nom) | 
|---|
|  | 730 | { | 
|---|
|  | 731 | DataTable* dt = dynamic_cast<DataTable *>(mDT); | 
|---|
| [2701] | 732 | SwPPFDataTable* swdt = dynamic_cast<SwPPFDataTable *>(mDT); | 
|---|
|  | 733 | if (dt) { | 
|---|
|  | 734 | ObjFileIO<BaseDataTable> fio(dt); | 
|---|
| [2697] | 735 | fio.Write(pos, nom); | 
|---|
|  | 736 | } | 
|---|
| [2701] | 737 | else if (swdt) { | 
|---|
|  | 738 | ObjFileIO<BaseDataTable> fio(swdt); | 
|---|
|  | 739 | fio.Write(pos, nom); | 
|---|
|  | 740 | } | 
|---|
| [2697] | 741 | else { | 
|---|
| [2701] | 742 | cerr << " NOMAdapter_DataTable::SavePPF() Objet pas de type DataTable/SwPPFDataTable (nom=" | 
|---|
| [2697] | 743 | << nom << ")" << endl; | 
|---|
|  | 744 | } | 
|---|
|  | 745 | } | 
|---|
|  | 746 |  | 
|---|
|  | 747 | /* --Methode-- */ | 
|---|
| [3033] | 748 | string NOMAdapter_DataTable::GetInfoString(vector<string>& opts) | 
|---|
|  | 749 | { | 
|---|
|  | 750 | if (opts.size() == 0) return NObjMgrAdapter::GetInfoString(opts); | 
|---|
|  | 751 | char buff[128]; | 
|---|
|  | 752 | if (opts[0] == "sizes") { | 
|---|
|  | 753 | sprintf(buff, "%ld %ld", mDT->NEntry(), mDT->NVar()); | 
|---|
|  | 754 | return string(buff); | 
|---|
|  | 755 | } | 
|---|
|  | 756 | else if ((opts[0] == "nlines") || (opts[0] == "nentry") || (opts[0] == "nrows")) { | 
|---|
|  | 757 | sprintf(buff, "%ld", mDT->NEntry()); | 
|---|
|  | 758 | return string(buff); | 
|---|
|  | 759 | } | 
|---|
|  | 760 | else if ((opts[0] == "nvar") || (opts[0] == "ncols")) { | 
|---|
|  | 761 | sprintf(buff, "%ld", mDT->NVar()); | 
|---|
|  | 762 | return string(buff); | 
|---|
|  | 763 | } | 
|---|
| [3221] | 764 | else if (opts[0] == "info") { // Acces aux valeurs stockes ds le DVList Info() | 
|---|
|  | 765 | if (opts.size() < 2)  return string(""); | 
|---|
|  | 766 | else if (mDT->Info().HasKey(opts[1]) == false) return string(""); | 
|---|
|  | 767 | else return mDT->Info().GetS(opts[1]); | 
|---|
| [3033] | 768 | } | 
|---|
| [3221] | 769 | else if (opts[0] == "row") { // Pour recuperer une ligne de la table | 
|---|
|  | 770 | if (opts.size() < 2)  return string(""); | 
|---|
|  | 771 | long num = atol(opts[1].c_str()); | 
|---|
|  | 772 | return mDT->TableRowToString(num, true); | 
|---|
|  | 773 | } | 
|---|
| [3033] | 774 |  | 
|---|
| [3432] | 775 | else return "BaseDataTable.Att: nlines/nentry/nrows nvar/ncols info.varname row.num"; | 
|---|
| [3221] | 776 | } | 
|---|
|  | 777 |  | 
|---|
| [3033] | 778 | /* --Methode-- */ | 
|---|
| [2975] | 779 | void NOMAdapter_DataTable::Print(ostream& os, int lev) | 
|---|
| [2697] | 780 | { | 
|---|
|  | 781 | mDT->Show(os); | 
|---|
| [2975] | 782 | if (lev < 1) return; | 
|---|
|  | 783 | if (lev < 5)  mDT->Print(os, 0, lev*10); | 
|---|
|  | 784 | else mDT->Print(os); | 
|---|
| [2697] | 785 | } | 
|---|
|  | 786 |  | 
|---|
|  | 787 |  | 
|---|
|  | 788 | /* --Methode-- */ | 
|---|
|  | 789 | NTupleInterface* NOMAdapter_DataTable::GetNTupleInterface(bool& adel) | 
|---|
|  | 790 | { | 
|---|
|  | 791 | adel = false; | 
|---|
|  | 792 | return(mDT); | 
|---|
|  | 793 | } | 
|---|