Index: trunk/psastro/src/psastroDemoPlot.c
===================================================================
--- trunk/psastro/src/psastroDemoPlot.c	(revision 10864)
+++ trunk/psastro/src/psastroDemoPlot.c	(revision 11468)
@@ -20,5 +20,5 @@
 
     graphdata.color = KapaColorByName ("black");
-    graphdata.ptype = 0;
+    graphdata.ptype = 7;
     graphdata.size = 0.5;
     graphdata.style = 2;
@@ -29,4 +29,5 @@
     psVector *xVec = psVectorAlloc (rawstars->n, PS_TYPE_F32);
     psVector *yVec = psVectorAlloc (rawstars->n, PS_TYPE_F32);
+    psVector *zVec = psVectorAlloc (rawstars->n, PS_TYPE_F32);
 
     section.x = 0.0;
@@ -37,10 +38,15 @@
     psFree (section.name);
 
+    int n = 0;
     for (int i = 0; i < rawstars->n; i++) {
 	pmAstromObj *raw = rawstars->data[i];
-	xVec->data.F32[i] = raw->chip->x;
-	yVec->data.F32[i] = raw->chip->y;
-    }
-    pmKapaPlotVectorPair_AutoLimits_OpenGraph (kapa, &graphdata, xVec, yVec);
+	if (!isfinite(raw->Mag)) continue;
+	xVec->data.F32[n] = raw->chip->x;
+	yVec->data.F32[n] = raw->chip->y;
+	zVec->data.F32[n] = raw->Mag;
+	n++;
+    }
+    xVec->n = yVec->n = zVec->n = n;
+    pmKapaPlotVectorTriple_AutoLimits_OpenGraph (kapa, &graphdata, xVec, yVec, zVec, false);
 
     section.x = 0.5;
@@ -51,10 +57,15 @@
     psFree (section.name);
 
+    n = 0;
     for (int i = 0; i < rawstars->n; i++) {
 	pmAstromObj *raw = rawstars->data[i];
-	xVec->data.F32[i] = raw->FP->x;
-	yVec->data.F32[i] = raw->FP->y;
-    }
-    pmKapaPlotVectorPair_AutoLimits_OpenGraph (kapa, &graphdata, xVec, yVec);
+	if (!isfinite(raw->Mag)) continue;
+	xVec->data.F32[n] = raw->FP->x;
+	yVec->data.F32[n] = raw->FP->y;
+	zVec->data.F32[n] = raw->Mag;
+	n++;
+    }
+    xVec->n = yVec->n = zVec->n = n;
+    pmKapaPlotVectorTriple_AutoLimits_OpenGraph (kapa, &graphdata, xVec, yVec, zVec, false);
 
     section.x = 0.0;
@@ -65,10 +76,15 @@
     psFree (section.name);
 
+    n = 0;
     for (int i = 0; i < rawstars->n; i++) {
 	pmAstromObj *raw = rawstars->data[i];
-	xVec->data.F32[i] = raw->TP->x;
-	yVec->data.F32[i] = raw->TP->y;
-    }
-    pmKapaPlotVectorPair_AutoLimits_OpenGraph (kapa, &graphdata, xVec, yVec);
+	if (!isfinite(raw->Mag)) continue;
+	xVec->data.F32[n] = raw->TP->x;
+	yVec->data.F32[n] = raw->TP->y;
+	zVec->data.F32[n] = raw->Mag;
+	n++;
+    }
+    xVec->n = yVec->n = zVec->n = n;
+    pmKapaPlotVectorTriple_AutoLimits_OpenGraph (kapa, &graphdata, xVec, yVec, zVec, false);
 
     section.x = 0.5;
@@ -79,17 +95,23 @@
     psFree (section.name);
 
+    n = 0;
     for (int i = 0; i < rawstars->n; i++) {
 	pmAstromObj *raw = rawstars->data[i];
-	xVec->data.F32[i] = raw->sky->r;
-	yVec->data.F32[i] = raw->sky->d;
-    }
-    pmKapaPlotVectorPair_AutoLimits_OpenGraph (kapa, &graphdata, xVec, yVec);
+	if (!isfinite(raw->Mag)) continue;
+	xVec->data.F32[n] = raw->sky->r;
+	yVec->data.F32[n] = raw->sky->d;
+	zVec->data.F32[n] = raw->Mag;
+	n++;
+    }
+    xVec->n = yVec->n = zVec->n = n;
+    pmKapaPlotVectorTriple_AutoLimits_OpenGraph (kapa, &graphdata, xVec, yVec, zVec, false);
 
     // pause and wait for user input: 
     // continue, save (provide name), ??
-    char key, name[80];
+    char key[10], name[80];
     fprintf (stdout, "(s)ave plot or [c]ontinue? ");
-    fscanf (stdin, "%c", &key);
-    if (key == 's') {
+    fscanf (stdin, "%s", key);
+    fprintf (stderr, "got: %s\n", key);
+    if (key[0] == 's') {
 	fprintf (stdout, "enter plot name [rawstars.png]: ");
 	fscanf (stdin, "%s", name);
@@ -100,4 +122,5 @@
     psFree (xVec);
     psFree (yVec);
+    psFree (zVec);
     return true;
 }
@@ -118,5 +141,5 @@
 
     graphdata.color = KapaColorByName ("black");
-    graphdata.ptype = 0;
+    graphdata.ptype = 7;
     graphdata.size = 0.5;
     graphdata.style = 2;
@@ -124,18 +147,25 @@
     psVector *xVec = psVectorAlloc (refstars->n, PS_TYPE_F32);
     psVector *yVec = psVectorAlloc (refstars->n, PS_TYPE_F32);
-
+    psVector *zVec = psVectorAlloc (refstars->n, PS_TYPE_F32);
+
+    int n = 0;
     for (int i = 0; i < refstars->n; i++) {
 	pmAstromObj *ref = refstars->data[i];
-	xVec->data.F32[i] = ref->sky->r;
-	yVec->data.F32[i] = ref->sky->d;
-    }
-    pmKapaPlotVectorPair_AutoLimits_OpenGraph (kapa, &graphdata, xVec, yVec);
+	if (!isfinite(ref->Mag)) continue;
+	xVec->data.F32[n] = ref->sky->r;
+	yVec->data.F32[n] = ref->sky->d;
+	zVec->data.F32[n] = ref->Mag;
+	n++;
+    }
+    xVec->n = yVec->n = zVec->n = n;
+    pmKapaPlotVectorTriple_AutoLimits_OpenGraph (kapa, &graphdata, xVec, yVec, zVec, false);
 
     // pause and wait for user input: 
     // continue, save (provide name), ??
-    char key, name[80];
+    char key[10], name[80];
     fprintf (stdout, "(s)ave plot or [c]ontinue? ");
-    fscanf (stdin, "%c", &key);
-    if (key == 's') {
+    fscanf (stdin, "%s", key);
+    fprintf (stderr, "got: %s\n", key);
+    if (key[0] == 's') {
 	fprintf (stdout, "enter plot name [refstars.png]: ");
 	fscanf (stdin, "%s", name);
@@ -146,4 +176,5 @@
     psFree (xVec);
     psFree (yVec);
+    psFree (zVec);
     return true;
 }
@@ -165,5 +196,5 @@
 
     graphdata.color = KapaColorByName ("black");
-    graphdata.ptype = 0;
+    graphdata.ptype = 7;
     graphdata.size = 0.5;
     graphdata.style = 2;
@@ -174,4 +205,5 @@
     psVector *xVec = psVectorAlloc (match->n, PS_TYPE_F32);
     psVector *yVec = psVectorAlloc (match->n, PS_TYPE_F32);
+    psVector *zVec = psVectorAlloc (match->n, PS_TYPE_F32);
 
     // X vs dX
@@ -183,4 +215,5 @@
     psFree (section.name);
 
+    int n = 0;
     for (int i = 0; i < match->n; i++) {
         pmAstromMatch *pair = match->data[i];
@@ -188,8 +221,11 @@
         pmAstromObj *ref = refstars->data[pair->ref];
 	
-	xVec->data.F32[i] = raw->chip->x;
-	yVec->data.F32[i] = raw->chip->x - ref->chip->x;
+	xVec->data.F32[n] = raw->chip->x;
+	yVec->data.F32[n] = raw->chip->x - ref->chip->x;
+	zVec->data.F32[n] = raw->Mag;
+	n++;
     }	
-    pmKapaPlotVectorPair_AutoLimits_OpenGraph (kapa, &graphdata, xVec, yVec);
+    xVec->n = yVec->n = zVec->n = n;
+    pmKapaPlotVectorTriple_AutoLimits_OpenGraph (kapa, &graphdata, xVec, yVec, zVec, false);
 
     // X vs dY
@@ -201,4 +237,5 @@
     psFree (section.name);
 
+    n = 0;
     for (int i = 0; i < match->n; i++) {
         pmAstromMatch *pair = match->data[i];
@@ -206,8 +243,12 @@
         pmAstromObj *ref = refstars->data[pair->ref];
 	
-	xVec->data.F32[i] = raw->chip->x;
-	yVec->data.F32[i] = raw->chip->y - ref->chip->y;
+	if (!isfinite(raw->Mag)) continue;
+	xVec->data.F32[n] = raw->chip->x;
+	yVec->data.F32[n] = raw->chip->y - ref->chip->y;
+	zVec->data.F32[n] = raw->Mag;
+	n++;
     }	
-    pmKapaPlotVectorPair_AutoLimits_OpenGraph (kapa, &graphdata, xVec, yVec);
+    xVec->n = yVec->n = zVec->n = n;
+    pmKapaPlotVectorTriple_AutoLimits_OpenGraph (kapa, &graphdata, xVec, yVec, zVec, false);
 
     // Y vs dX
@@ -219,4 +260,5 @@
     psFree (section.name);
 
+    n = 0;
     for (int i = 0; i < match->n; i++) {
         pmAstromMatch *pair = match->data[i];
@@ -224,8 +266,12 @@
         pmAstromObj *ref = refstars->data[pair->ref];
 	
-	xVec->data.F32[i] = raw->chip->y;
-	yVec->data.F32[i] = raw->chip->x - ref->chip->x;
+	if (!isfinite(raw->Mag)) continue;
+	xVec->data.F32[n] = raw->chip->y;
+	yVec->data.F32[n] = raw->chip->x - ref->chip->x;
+	zVec->data.F32[n] = raw->Mag;
+	n++;
     }	
-    pmKapaPlotVectorPair_AutoLimits_OpenGraph (kapa, &graphdata, xVec, yVec);
+    xVec->n = yVec->n = zVec->n = n;
+    pmKapaPlotVectorTriple_AutoLimits_OpenGraph (kapa, &graphdata, xVec, yVec, zVec, false);
 
     // Y vs dY
@@ -237,4 +283,5 @@
     psFree (section.name);
 
+    n = 0;
     for (int i = 0; i < match->n; i++) {
         pmAstromMatch *pair = match->data[i];
@@ -242,15 +289,20 @@
         pmAstromObj *ref = refstars->data[pair->ref];
 	
-	xVec->data.F32[i] = raw->chip->y;
-	yVec->data.F32[i] = raw->chip->y - ref->chip->y;
+	if (!isfinite(raw->Mag)) continue;
+	xVec->data.F32[n] = raw->chip->y;
+	yVec->data.F32[n] = raw->chip->y - ref->chip->y;
+	zVec->data.F32[n] = raw->Mag;
+	n++;
     }	
-    pmKapaPlotVectorPair_AutoLimits_OpenGraph (kapa, &graphdata, xVec, yVec);
+    xVec->n = yVec->n = zVec->n = n;
+    pmKapaPlotVectorTriple_AutoLimits_OpenGraph (kapa, &graphdata, xVec, yVec, zVec, false);
 
     // pause and wait for user input: 
     // continue, save (provide name), ??
-    char key, name[80];
+    char key[10], name[80];
     fprintf (stdout, "(s)ave plot or [c]ontinue? ");
-    fscanf (stdin, "%c", &key);
-    if (key == 's') {
+    fscanf (stdin, "%s", key);
+    fprintf (stderr, "got: %s\n", key);
+    if (key[0] == 's') {
 	fprintf (stdout, "enter plot name [chipfit.png]: ");
 	fscanf (stdin, "%s", name);
@@ -261,4 +313,5 @@
     psFree (xVec);
     psFree (yVec);
+    psFree (zVec);
     return true;
 }
