IPP Software Navigation Tools IPP Links Communication Pan-STARRS Links

Changeset 39143


Ignore:
Timestamp:
Nov 15, 2015, 7:30:43 PM (11 years ago)
Author:
eugene
Message:

update dvomerge to merge measure, lensing, starpar, galphot with the same method

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/Ohana/src/dvomerge/src/build_links.c

    r39142 r39143  
    3636
    3737  ALLOCATE (next_meas, off_t, Nmeasure);
    38   for (i = 0; i < Naverage; i++, N++) {
     38  for (i = 0; i < Naverage; i++) {
     39    if (!average[i].Nmeasure) continue;
     40    off_t m = average[i].measureOffset;
     41    myAssert (measure[m].averef == i, "not sorted");
    3942    for (j = 0; j < average[i].Nmeasure - 1; j++, N++) {
     43      myAssert (measure[m+j+1].averef == i, "not sorted");
    4044      next_meas[N] = N + 1;
    4145      if (N >= Nmeasure) {
     
    5256      abort ();
    5357    }
     58    N++;
    5459  }
    5560  return (next_meas);
     
    124129  }
    125130
    126   if (m == -1) {
     131  // if Nmeasure is 0, m may have been mis-set; add to the end
     132  if ((average[0].Nmeasure == 0) || (m == -1)) {
    127133    average[0].measureOffset = Nmeasure;
    128134  } else {
     
    138144Measure *sort_measure (Average *average, off_t Naverage, Measure *measure, off_t Nmeasure, off_t *next_meas) {
    139145
    140   off_t i, k, n, N;
     146  off_t i, k, n, np, N;
    141147  Measure *tmpmeasure;
    142148
    143149  /* fix order of Measure (memory intensive, but fast) */
     150  np = -1; // previous entry in case of errors
    144151  N = 0;
    145152  ALLOCATE (tmpmeasure, Measure, Nmeasure);
    146153  for (i = 0; i < Naverage; i++) {
     154    if (!average[i].Nmeasure) continue;
    147155    n = average[i].measureOffset;
    148156    average[i].measureOffset = N;
    149157    int myObjID = average[i].objID;
    150158    for (k = 0; k < average[i].Nmeasure; k++, N++) {
    151       if (n == -1) abort();
     159      if (n == -1) {
     160        fprintf (stderr, "entry after %d has a problem\n", (int) np);
     161        abort();
     162      }
    152163      tmpmeasure[N] = measure[n];
    153164      myAssert (measure[n].averef == i, "error in averef?");
    154165      myAssert (measure[n].objID == myObjID, "error in objID?");
    155166      tmpmeasure[N].averef = i;
     167      np = n;
    156168      n = next_meas[n];
    157169    }
     
    354366  Lensing *tmplensing;
    355367
    356   /*
    357   for (i = 0; i < Naverage; i++) {
    358     if (average[i].Nlensing != 4) {
    359       fprintf (stderr, "check %d %d %d\n", (int) i, (int) average[i].Nlensing, (int) average[i].lensingOffset);
    360     }
    361   }
    362   */
    363 
    364368  /* fix order of Lensing (memory intensive, but fast) */
    365369  np = -1;
     
    370374    n = average[i].lensingOffset;
    371375    average[i].lensingOffset = N;
     376    int myObjID = average[i].objID;
    372377    for (k = 0; k < average[i].Nlensing; k++, N++) {
    373378      if (n == -1) {
     
    376381      }
    377382      tmplensing[N] = lensing[n];
    378       if (lensing[n].averef != i) abort();
     383      myAssert (lensing[n].averef == i, "error in averef");
     384      myAssert (lensing[n].objID == myObjID, "error in objID?");
    379385      tmplensing[N].averef = i;
    380386      np = n;
     
    400406  for (i = 0; i < Naverage; i++) {
    401407    if (!average[i].Nstarpar) continue;
     408    off_t m = average[i].starparOffset;
     409    myAssert (starpar[m].averef == i, "not sorted");
    402410    for (j = 0; j < average[i].Nstarpar - 1; j++, N++) {
     411      myAssert (starpar[m+j+1].averef == i, "not sorted");
    403412      next_star[N] = N + 1;
    404413      if (N >= Nstarpar) {
     
    488497  }
    489498
    490   if (m == -1) {
     499  // if Nmeasure is 0, m may have been mis-set; add to the end
     500  if ((average[0].Nstarpar == 0) || (m == -1)) {
    491501    average[0].starparOffset = Nstarpar;
    492502  } else {
     
    505515  StarPar *tmpstarpar;
    506516
    507   /*
    508   for (i = 0; i < Naverage; i++) {
    509     if (average[i].Nstarpar != 4) {
    510       fprintf (stderr, "check %d %d %d\n", (int) i, (int) average[i].Nstarpar, (int) average[i].starparOffset);
    511     }
    512   }
    513   */
    514 
    515517  /* fix order of StarPar (memory intensive, but fast) */
    516   np = -1;
     518  np = -1; // previous entry in case of errors
    517519  N = 0;
    518520  ALLOCATE (tmpstarpar, StarPar, Nstarpar);
     
    521523    n = average[i].starparOffset;
    522524    average[i].starparOffset = N;
     525    int myObjID = average[i].objID;
    523526    for (k = 0; k < average[i].Nstarpar; k++, N++) {
    524527      if (n == -1) {
     
    527530      }
    528531      tmpstarpar[N] = starpar[n];
    529       if (starpar[n].averef != i) abort();
     532      myAssert (starpar[n].averef == i, "error in averef?");
     533      myAssert (starpar[n].objID == myObjID, "error in objID?");
    530534      tmpstarpar[N].averef = i;
    531535      np = n;
     
    660664  GalPhot *tmpgalphot;
    661665
    662   /*
    663   for (i = 0; i < Naverage; i++) {
    664     if (average[i].Ngalphot != 4) {
    665       fprintf (stderr, "check %d %d %d\n", (int) i, (int) average[i].Ngalphot, (int) average[i].galphotOffset);
    666     }
    667   }
    668   */
    669 
    670666  /* fix order of GalPhot (memory intensive, but fast) */
    671667  np = -1;
     
    676672    n = average[i].galphotOffset;
    677673    average[i].galphotOffset = N;
     674    int myObjID = average[i].objID;
    678675    for (k = 0; k < average[i].Ngalphot; k++, N++) {
    679676      if (n == -1) {
     
    682679      }
    683680      tmpgalphot[N] = galphot[n];
    684       if (galphot[n].averef != i) abort();
     681      myAssert (galphot[n].averef == i, "error in averef?");
     682      myAssert (galphot[n].objID == myObjID, "error in objID?");
    685683      tmpgalphot[N].averef = i;
    686684      np = n;
Note: See TracChangeset for help on using the changeset viewer.