/** * Cross-match positionnel avec ellipses * * @param p1 * @param p2 * @param seuils * @param method * @param aladin */ public void posXMatchEllipses( Plan p1, Plan p2, String label, int[] coordTab1, int[] coordTab2, int[] paramEllipses1, int[] paramEllipses2, double nbSigmaMin, double nbSigmaMax, int method, Aladin aladin) { double begin = System.currentTimeMillis(); if (coordTab1 == null) { coordTab1 = findCoord(p1); if (coordTab1 == null) { Aladin.warning("Coordinates columns not found for plane " + p1.label); return; } } if (coordTab2 == null) { coordTab2 = findCoord(p2); if (coordTab2 == null) { Aladin.warning("Coordinates columns not found for plane " + p2.label); return; } } // création dès le début du calcul du plan résultat PlanCatalog pc = initPlaneCreation(p1, label); double[][] array1 = new double[p1.getCounts()][2]; boolean[] ignoreFlag1 = new boolean[p1.getCounts()]; fillXMatchArray(p1.pcat, array1, coordTab1, ignoreFlag1); double[][] array2 = new double[p2.getCounts()][2]; boolean[] ignoreFlag2 = new boolean[p2.getCounts()]; fillXMatchArray(p2.pcat, array2, coordTab2, ignoreFlag2); double[] maj1 = new double[p1.getCounts()]; double[] min1 = new double[p1.getCounts()]; double[] pa1 = new double[p1.getCounts()]; fillEllipsesParamArray(p1.pcat, maj1, min1, pa1, paramEllipses1, ignoreFlag1); double[] maj2 = new double[p2.getCounts()]; double[] min2 = new double[p2.getCounts()]; double[] pa2 = new double[p2.getCounts()]; fillEllipsesParamArray(p2.pcat, maj2, min2, pa2, paramEllipses2, ignoreFlag2); // TODO : faire la commande script correspondante !! // if( !fromScript ) aladin.pad.setCmd("xmatch "+Tok.quote(p1.label)+" // "+Tok.quote(p2.label)+" "+seuils[1]); double beginXmatch = System.currentTimeMillis(); Aladin.trace(3, "Total time for extracting coordinates : " + (beginXmatch - begin)); // TODO : faut il permettre de passer le minimum pour nbSigma ? XMatchResult[] result = LocalXMatch.xMatchEllipse( array1, array2, maj1, min1, pa1, maj2, min2, pa2, ignoreFlag1, ignoreFlag2, new double[] {nbSigmaMin, nbSigmaMax}, method); double end = System.currentTimeMillis(); Aladin.trace(3, "Total time for ellipses xmatch : " + (end - beginXmatch)); fillResultPlane(pc, result, p1, p2, coordTab1, array1, POSXMATCH_ELLIPSES); // log aladin.log("xmatch", "ellipses"); }