Changeset 295 in Sophya for trunk/SophyaPI/PIext/servnobjm.cc
- Timestamp:
- May 13, 1999, 12:12:51 PM (26 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/SophyaPI/PIext/servnobjm.cc
r293 r295 3 3 #include <ctype.h> 4 4 5 #include <typeinfo> 5 6 #include <iostream.h> 6 7 #include <string> … … 14 15 15 16 #include "strutil.h" 16 #include "datatypes.h"17 17 18 18 #include "nobjmgr.h" … … 20 20 #include "pistdimgapp.h" 21 21 22 #include "pclassids.h"23 22 #include "histos.h" 24 23 #include "histos2.h" 25 24 #include "ntuple.h" 26 25 #include "hisprof.h" 27 #include "generaldata.h" 28 29 #include "cimage.h" 30 #include "cvector.h" 31 #include "matrix.h" 32 33 // Si le module StarReco++ a ete compile (Pour les StarList, Transfo, etc ... 34 #ifdef SANS_EVOLPLANCK 35 #include "stlist.h" 36 #include "star.h" 37 #endif 26 38 27 39 28 … … 55 44 56 45 /* --Methode-- */ 57 void Services2NObjMgr::Nobj_ComputeExpressions(PPersist* obj, string& expx, string& expy, string& expz, 46 void Services2NObjMgr::RegisterClass(AnyDataObj* o, NObjMgrAdapter* oa) 47 { 48 ObjAdaptList::iterator it; 49 for(it = objadaplist.begin(); it != objadaplist.end(); it++) 50 if (typeid(*o) == typeid(*((*it).obj))) THROW(dupIdErr); 51 52 dataobj_adapter oba; 53 oba.obj = o; 54 oba.obja = oa; 55 objadaplist.push_back(oba); 56 } 57 58 /* --Methode-- */ 59 NObjMgrAdapter* Services2NObjMgr::GetAdapter(AnyDataObj* o) 60 { 61 ObjAdaptList::iterator it; 62 for(it = objadaplist.begin(); it != objadaplist.end(); it++) 63 if (typeid(*o) == typeid(*((*it).obj))) return((*it).obja->Clone(o)); 64 return(new NObjMgrAdapter(o)); 65 } 66 67 /* --Methode-- */ 68 void Services2NObjMgr::Nobj_ComputeExpressions(NObjMgrAdapter* obja, string& expx, string& expy, string& expz, 58 69 string& expwt, string& expcut, NTuple* nt, Histo* h1, Histo2D* h2, HProf* hp) 59 70 { 60 int cid = obj->ClassId(); 61 62 string vardec; 63 switch (cid) { 64 case ClassId_Vector : 65 vardec = "double i,val; \n"; 66 vardec += "i = _zz61qq_[0]; val = _zz61qq_[1]; \n"; 67 break; 68 69 case ClassId_Matrix : 70 vardec = "double i,j,val; \n"; 71 vardec += "i = _zz61qq_[0]; j = _zz61qq_[1]; val = _zz61qq_[2]; \n"; 72 break; 73 74 case ClassId_Histo1D : 75 case ClassId_HProf : 76 vardec = "double i,x,val,err; \n"; 77 vardec += "i = _zz61qq_[0]; x = _zz61qq_[1]; val = _zz61qq_[2]; err = _zz61qq_[3]; \n"; 78 break; 79 80 case ClassId_Histo2D : 81 vardec = "double i,j,x,y,val,err; \n"; 82 vardec += "i = _zz61qq_[0]; j = _zz61qq_[1]; \n"; 83 vardec += "x = _zz61qq_[2]; y = _zz61qq_[3]; \n"; 84 vardec += "val = _zz61qq_[4]; err = _zz61qq_[5]; \n"; 85 break; 86 87 case ClassId_Image : 88 case ClassId_Image + kuint_1 : 89 case ClassId_Image + kint_1 : 90 case ClassId_Image + kr_8 : 91 case ClassId_Image + kuint_4 : 92 case ClassId_Image + kuint_2 : 93 case ClassId_Image + kint_2 : 94 case ClassId_Image + kint_4 : 95 case ClassId_Image + kr_4 : 96 vardec = "double x,y,pix,i,j,val; \n"; 97 vardec += "x = i = _zz61qq_[0]; y = j = _zz61qq_[1]; pix = val = _zz61qq_[2]; \n"; 98 break; 99 100 #ifdef SANS_EVOLPLANCK 101 case ClassId_StarList : 102 vardec = "double x,y,flux,fond; \n"; 103 vardec += "x = _zz61qq_[0]; y = _zz61qq_[1]; flux = _zz61qq_[2]; fond = _zz61qq_[3]; \n"; 104 break; 105 #endif 106 107 case ClassId_NTuple : 108 vardec = ((NTuple*)obj)->VarList_C("_zz61qq_"); 109 break; 110 111 case ClassId_GeneralFitData : 112 vardec = ((GeneralFitData*)obj)->VarList_C("_zz61qq_"); 113 break; 114 115 default : 116 cerr << "NamedObjMgr_ComputeExpressions() Error , N/A to " << PClassIdToClassName(cid) << endl; 117 return; 118 } 71 if (obja == NULL) return; 72 NTupleInterface* objnt = obja->GetNTupleInterface(); 73 if (objnt == NULL) return; 74 string vardec = objnt->VarList_C("_zz61qq_"); 119 75 120 76 PlotExprFunc f = LinkExprFunc(vardec, expx, expy, expz, expwt, expcut); … … 124 80 } 125 81 126 float x[10], xnt[10]; 82 double xnt[10]; 83 float fxnt[10]; 127 84 128 85 int i,j,k; 129 for(i=0; i<10; i++) x[i] = xnt[i] = 0.; 130 131 TRY { 132 switch (cid) { 133 case ClassId_Vector : 134 { 135 Vector* vv = (Vector*)obj; 136 for(k=0; k<vv->NElts(); k++) { 137 x[0] = k; x[1] = (*vv)(k); 138 if (f(x, xnt, xnt+1, xnt+2, xnt+3) != 0) { 139 if (nt) nt->Fill(xnt); 140 if (h1) h1->Add(xnt[0], xnt[3]); 141 if (h2) h2->Add(xnt[0], xnt[1], xnt[3]); 142 if (hp) hp->Add(xnt[0], xnt[1], xnt[3]); 143 } 86 for(i=0; i<10; i++) xnt[i] = 0.; 87 88 TRY { 89 double* xn; 90 for(k=0; k<objnt->NbLines(); k++) { 91 xn = objnt->GetLineD(k); 92 if (f(xn, xnt, xnt+1, xnt+2, xnt+3) != 0) { 93 if (nt) { 94 for(i=0; i<4; i++) fxnt[i] = xnt[i]; 95 nt->Fill(fxnt); 96 } 97 if (h1) h1->Add(xnt[0], xnt[3]); 98 if (h2) h2->Add(xnt[0], xnt[1], xnt[3]); 99 if (hp) hp->Add(xnt[0], xnt[1], xnt[3]); 144 100 } 145 101 } 146 break; 147 148 case ClassId_Matrix : 149 { 150 Matrix* mm = (Matrix*)obj; 151 for(j=0; j<mm->NCol(); j++) 152 for(i=0; i<mm->NRows(); i++) { 153 x[0] = i; x[1] = j; x[2] = (*mm)(i,j); 154 if (f(x, xnt, xnt+1, xnt+2, xnt+3) != 0) { 155 if (nt) nt->Fill(xnt); 156 if (h1) h1->Add(xnt[0], xnt[3]); 157 if (h2) h2->Add(xnt[0], xnt[1], xnt[3]); 158 if (hp) hp->Add(xnt[0], xnt[1], xnt[3]); 159 } 160 } 161 } 162 break; 163 164 case ClassId_Histo1D : 165 case ClassId_HProf : 166 { 167 Histo* hh = (Histo*)obj; 168 for(k=0; k<hh->NBins(); k++) { 169 x[0] = k; x[1] = hh->BinCenter(k); 170 x[2] = (*hh)(k); x[3] = hh->Error(k); 171 if (f(x, xnt, xnt+1, xnt+2, xnt+3) != 0) { 172 if (nt) nt->Fill(xnt); 173 if (h1) h1->Add(xnt[0], xnt[3]); 174 if (h2) h2->Add(xnt[0], xnt[1], xnt[3]); 175 if (hp) hp->Add(xnt[0], xnt[1], xnt[3]); 176 } 177 } 178 } 179 break; 180 181 case ClassId_Histo2D : 182 { 183 Histo2D* hh = (Histo2D*)obj; 184 for(j=0; j<hh->NBinY(); j++) 185 for(i=0; i<hh->NBinX(); i++) { 186 x[0] = i; x[1] = j; 187 hh->BinCenter(i,j,x[2],x[3]); 188 x[4] = (*hh)(i,j); x[5] = hh->Error(i, j); 189 if (f(x, xnt, xnt+1, xnt+2, xnt+3) != 0) { 190 if (nt) nt->Fill(xnt); 191 if (h1) h1->Add(xnt[0], xnt[3]); 192 if (h2) h2->Add(xnt[0], xnt[1], xnt[3]); 193 if (hp) hp->Add(xnt[0], xnt[1], xnt[3]); 194 } 195 } 196 } 197 break; 198 199 200 case ClassId_Image : 201 case ClassId_Image + kuint_1 : 202 case ClassId_Image + kint_1 : 203 case ClassId_Image + kr_8 : 204 case ClassId_Image + kuint_4 : 205 case ClassId_Image + kuint_2 : 206 case ClassId_Image + kint_2 : 207 case ClassId_Image + kint_4 : 208 case ClassId_Image + kr_4 : 209 { 210 RzImage* img = (RzImage*)obj; 211 for(j=0; j<img->YSize(); j++) 212 for(i=0; i<img->XSize(); i++) { 213 x[0] = i; x[1] = j; x[2] = img->FValue(i, j); 214 if (f(x, xnt, xnt+1, xnt+2, xnt+3) != 0) { 215 if (nt) nt->Fill(xnt); 216 if (h1) h1->Add(xnt[0], xnt[3]); 217 if (h2) h2->Add(xnt[0], xnt[1], xnt[3]); 218 if (hp) hp->Add(xnt[0], xnt[1], xnt[3]); 219 } 220 } 221 } 222 break; 223 224 #ifdef SANS_EVOLPLANCK 225 case ClassId_StarList : 226 { 227 StarList* stl = (StarList*)obj; 228 BStar *sti; 229 for(k=0; k<stl->NbStars(); k++) { 230 sti = stl->Star(k); 231 if ( (!sti) || !(sti->Nice(BStar::flagOK)) ) continue; 232 x[0] = sti->PosX(); x[1] = sti->PosY(); 233 x[2] = sti->Flux(); x[3] = sti->Fond(); 234 if (f(x, xnt, xnt+1, xnt+2, xnt+3) != 0) { 235 if (nt) nt->Fill(xnt); 236 if (h1) h1->Add(xnt[0], xnt[3]); 237 if (h2) h2->Add(xnt[0], xnt[1], xnt[3]); 238 if (hp) hp->Add(xnt[0], xnt[1], xnt[3]); 239 } 240 } 241 } 242 break; 243 #endif 244 245 case ClassId_NTuple : 246 { 247 NTuple* ntp = (NTuple*)obj; 248 r_4* xn; 249 for(k=0; k<ntp->NEntry(); k++) { 250 xn = ntp->GetVec(k); 251 if (f(xn, xnt, xnt+1, xnt+2, xnt+3) != 0) { 252 if (nt) nt->Fill(xnt); 253 if (h1) h1->Add(xnt[0], xnt[3]); 254 if (h2) h2->Add(xnt[0], xnt[1], xnt[3]); 255 if (hp) hp->Add(xnt[0], xnt[1], xnt[3]); 256 } 257 } 258 } 259 break; 260 261 case ClassId_GeneralFitData : 262 { 263 GeneralFitData* data = (GeneralFitData*)obj; 264 r_4* xn; 265 int iok = 2*data->NVar()+2; 266 for(k=0; k<data->NData(); k++) { 267 xn = data->GetVecR4(k); 268 if(xn[iok]<0.001) continue; 269 if (f(xn, xnt, xnt+1, xnt+2, xnt+3) != 0) { 270 if (nt) nt->Fill(xnt); 271 if (h1) h1->Add(xnt[0], xnt[3]); 272 if (h2) h2->Add(xnt[0], xnt[1], xnt[3]); 273 if (hp) hp->Add(xnt[0], xnt[1], xnt[3]); 274 } 275 } 276 } 277 break; 278 279 default : 280 cout << "NamedObjMgr_ComputeExpressions() Erreur: N/A to " << PClassIdToClassName(cid) << endl; 281 return; 282 } 283 } CATCH(merr) { 102 } 103 CATCH(merr) { 284 104 fflush(stdout); 285 105 cout << endl; … … 318 138 // constitution du fichier a compiler 319 139 fputs("#include <math.h> \n", fip); 320 fputs("int expf_pia_dl_func( float* _zz61qq_, float* _rx_61qq_, float* _ry_61qq_, float* _rz_61qq_, float* _wt_61qq_) \n{\n", fip);140 fputs("int expf_pia_dl_func(double* _zz61qq_, double* _rx_61qq_, double* _ry_61qq_, double* _rz_61qq_, double* _wt_61qq_) \n{\n", fip); 321 141 fprintf(fip,"%s \n", vardec.c_str()); 322 142 fprintf(fip, "if (!(%s)) { *_rx_61qq_ = *_ry_61qq_ = *_rz_61qq_ = *_wt_61qq_ = 0.; return(0); } \n", cut.c_str()); … … 465 285 } 466 286 467 /* --Methode-- */ 468 char* Services2NObjMgr::PClassIdToClassName(int cid) 469 { 470 switch (cid) { 471 case ClassId_Poly1 : 472 return("Poly1"); 473 case ClassId_Poly2 : 474 return("Poly2"); 475 case ClassId_Matrix : 476 return("Matrix"); 477 case ClassId_Vector : 478 return("Vector"); 479 480 case ClassId_DVList : 481 return("DVList"); 482 483 case ClassId_Histo1D : 484 return("Histo1D"); 485 case ClassId_Histo2D : 486 return("Histo2D"); 487 case ClassId_HProf : 488 return("HProf"); 489 case ClassId_NTuple : 490 return("NTuple"); 491 case ClassId_GeneralFitData : 492 return("GeneralFitData"); 493 494 case ClassId_Image : 495 return("RzImage"); 496 case ClassId_Image + kuint_1 : 497 return("ImageU1"); 498 case ClassId_Image + kint_1 : 499 return("ImageI1"); 500 case ClassId_Image + kuint_2 : 501 return("ImageU2"); 502 case ClassId_Image + kint_2 : 503 return("ImageI2"); 504 case ClassId_Image + kuint_4 : 505 return("ImageU4"); 506 case ClassId_Image + kint_4 : 507 return("ImageI4"); 508 case ClassId_Image + kr_4 : 509 return("ImageR4"); 510 case ClassId_Image + kr_8 : 511 return("ImageR8"); 512 513 case ClassId_ZFidu : 514 return("ZFidu"); 515 516 #ifdef SANS_EVOLPLANCK 517 case ClassId_StarList : 518 return("StarList"); 519 case ClassId_Transfo : 520 return("Transfo"); 521 case ClassId_PSF : 522 return("PSF"); 523 524 case ClassId_Star + BStar_Type : 525 return("BStar"); 526 case ClassId_Star + RzStar_Type : 527 return("RzStar"); 528 case ClassId_Star + PSFStar_Type : 529 return("PSFStar"); 530 case ClassId_Star + MCStar_Type : 531 return("MCStar"); 532 case ClassId_Star + CircRFixStar_Type : 533 return("CircRFixStar"); 534 case ClassId_Star + PSFDHStar_Type : 535 return("PSFDHStar"); 536 case ClassId_Star + PSFSEStar_Type : 537 return("PSFSEStar"); 538 case ClassId_Star + MCDHStar_Type : 539 return("MCDHStar"); 540 #endif 541 542 // - Ajout objet PPF 543 default: 544 return("Unknown"); 545 } 546 } 547 548 /* --Methode-- */ 549 char* Services2NObjMgr::PClassIdToShortClassName(int cid) 550 { 551 switch (cid) { 552 case ClassId_Poly1 : 553 case ClassId_Poly2 : 554 return("Poly"); 555 case ClassId_Matrix : 556 return("Mtx"); 557 case ClassId_Vector : 558 return("Vec"); 559 case ClassId_DVList : 560 return("Dvl"); 561 562 case ClassId_Histo1D : 563 return("H1D"); 564 case ClassId_Histo2D : 565 return("H2D"); 566 case ClassId_HProf : 567 return("HPF"); 568 case ClassId_NTuple : 569 return("NT"); 570 case ClassId_GeneralFitData : 571 return("GFD"); 572 573 case ClassId_Image : 574 case ClassId_Image + kuint_1 : 575 case ClassId_Image + kint_1 : 576 case ClassId_Image + kuint_2 : 577 case ClassId_Image + kint_2 : 578 case ClassId_Image + kuint_4 : 579 case ClassId_Image + kint_4 : 580 case ClassId_Image + kr_4 : 581 case ClassId_Image + kr_8 : 582 return("Img"); 583 584 case ClassId_ZFidu : 585 return("Fidu"); 586 587 #ifdef SANS_EVOLPLANCK 588 case ClassId_StarList : 589 return("Stl"); 590 case ClassId_Transfo : 591 return("Tr"); 592 case ClassId_PSF : 593 return("PSF"); 594 595 case ClassId_Star + BStar_Type : 596 case ClassId_Star + RzStar_Type : 597 case ClassId_Star + PSFStar_Type : 598 case ClassId_Star + MCStar_Type : 599 case ClassId_Star + CircRFixStar_Type : 600 case ClassId_Star + PSFDHStar_Type : 601 case ClassId_Star + PSFSEStar_Type : 602 case ClassId_Star + MCDHStar_Type : 603 return("Star"); 604 #endif 605 606 // - Ajout objet PPF 607 default: 608 return("U"); 609 } 610 } 287 611 288 612 289 // !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
Note:
See TracChangeset
for help on using the changeset viewer.