(file) Return to copy_me_keys.c CVS log (file) (dir) Up to [Development] / JSOC / proj / sharp / apps

  1 xudong 1.1 #include "jsoc_main.h"
  2            #include "drms_types.h"
  3            
  4            /*	Populate keywords from ME inversion results to 
  5             *	ME_patch, B, B_patch, ME_HARP, B_HARP, etc.
  6             *
  7             *	Upon success, return 0
  8             *	Otherwise return number of keywords failed to populate
  9             *	If record fails, return -1
 10             *
 11             *	Prime keys like T_REC, PNUM needs to be set upfront in the main code
 12             *
 13             *	Usage:
 14             *	For full disk image population, use:
 15             *		copy_me_keys() and copy_geo_keys()
 16             *	For patch population without remapping, use:
 17             *		copy_me_keys() and copy_geo_keys() and copy_patch_keys()
 18             *	For patch with remapping, use:
 19             *		copy_me_keys() and copy_patch_keys()
 20             *	For B series, additionally use:
 21             *		copy_ambig_keys()
 22 xudong 1.1  *
 23             *	Written by X. Sun, Mar 01 2011
 24             * 
 25             *      Added keywords DATE, BLD_VERS, QUIET, OFFDISK, INVNFCTI, 
 26             *                     INVNFCTQ, INVNFCTU, INVNFCTV
 27             */
 28            
 29 xudong 1.3 // Removed BUNIT_XXX, Dec 30 XS
 30            
 31 xudong 1.1 #define ARRLENGTH(ARR) (sizeof(ARR) / sizeof(ARR[0]))
 32            
 33            const char *meKeys[] =
 34            {
 35            	"QUALITY", "QUAL_S", "QUALLEV1", "INSTRUME", "CAMERA",		// info
 36            	"T_OBS", "CADENCE", "DATE_S", "DATE__OBS", "DATE", "DATE_M",											// time
 37            	"DSUN_OBS", "CRLN_OBS", "CRLT_OBS", "CAR_ROT",
 38            	"OBS_VR", "OBS_VW", "OBS_VN", "RSUN_OBS",			// geometry
 39            	"INVCODEV", "INVDOCU", "INVITERA", "INVLMBDA", "INVLMBDF",
 40            	"INVTUNEN", "INVSVDTL", "INVCHIST", "INVPOLTH",
 41            	"INVPJUMP", "INVLMBDM", "INVLMBD0", "INVLMBDB",
 42            	"INVDLTLA", "INVLMBDS", "INVLMBMS",
 43                    "INVLYOTW", "INVWNARW", "INVWSPAC",
 44            	"INVINTTH", "INVNOISE", "INVCONTI", "INVWGHTI",
 45            	"INVWGHTQ", "INVWGHTU", "INVWGHTV", "INVSTLGT", "INVFREEP",
 46            	"INVFLPRF", "INVPHMAP", "INVVLAVE", "INVBLAVE", "INVBBAVE",
 47            	"INVNPRCS", "INVNCNVG",
 48            	"INVKEYS1", "INVKEYS2", "INVKEYS3", 
 49            	"INVKEYI1", "INVKEYI2", "INVKEYI3", 
 50            	"INVKEYD1", "INVKEYD2", "INVKEYD3", 				 // inversion
 51 xudong 1.3 	"INVNFCTI", "INVNFCTQ", "INVNFCTU", "INVNFCTV",
 52 xudong 1.1 	"HFLID", "HCFTID", "QLOOK", "TINTNUM", "SINTNUM",
 53            	"DISTCOEF", "ROTCOEF", "POLCALM", "SOURCE",
 54 xudong 1.2 	"CODEVER0", "CODEVER1", "CODEVER2", "CODEVER3", "CODEVER4", "CODEVER5", "CODEVER6","BLD_VERS","CALVER64"	// misc
 55 xudong 1.1 };
 56            
 57            const char *patchKeys[] = 
 58            {
 59            	"PATCHNUM","ARMCODEV","ARMDOCU","HRPCODEV","HRPDOCU",
 60            	"CRSIZE1","CRSIZE2","ACTIVE","NCLASS","ON_PATCH","MASK","ARM_QUAL","ARM_NCLN","H_MERGE","H_FAINT",
 61            	"ARM_MODL","ARM_EDGE","ARM_BETA","TKP_KWID","TKP_KLAT","TKP_TAU","TKP_TAU2",
 62            	"TKP_ACTV","TKP_FNUM","TKP_FTIM","TKP_MAPR","TKP_RUNN","TKP_RUNT",
 63            	"LATDTMIN","LONDTMIN","LATDTMAX","LONDTMAX","OMEGA_DT",
 64            	"NPIX","SIZE","AREA","NACR","SIZE_ACR","AREA_ACR",
 65            	"MTOT","MNET","MPOS_TOT","MNEG_TOT","MMEAN","MSTDEV","MSKEW","MKURT",
 66            	"LAT_MIN","LON_MIN","LAT_MAX","LON_MAX","LAT_FWT","LON_FWT","LAT_FWTPOS","LON_FWTPOS","LAT_FWTNEG","LON_FWTNEG",
 67            	"T_FRST","T_FRST1","T_LAST1","T_LAST","N_PATCH","N_PATCH1","N_PATCHM","NOAA_AR","NOAA_NUM","NOAA_ARS","OFFDISK", "QUIET"
 68            };
 69            
 70            const char *geoKeys[] =
 71            {
 72            	"CRPIX1", "CRPIX2", "CRVAL1", "CRVAL2",
 73            	"CDELT1", "CDELT2", "CROTA2",
 74            	"CRDER1", "CRDER2", "CSYSER1", "CSYSER2",
 75            	"IMCRPIX1", "IMCRPIX2"
 76 xudong 1.1 };
 77            
 78            const char *ambigKeys[] =
 79            {
 80              "AMBCODEV", "AMBDOCU",
 81            	"AMBGMTRY", "AMBWEAK", "AMBNEROD", "AMBNGROW",
 82            	"AMBNPAD", "AMBNAP", "AMBNTX", "AMBNTY",
 83            	"AMBBTHR0", "AMBBTHR1", "AMBSEED", "AMBNEQ",
 84 xudong 1.3 	"AMBLMBDA", "AMBTFCT0", "AMBTFCTR", "AMBPATCH",
 85            	"DOFFSET"		// Feb 12 2014
 86 xudong 1.1 };
 87            
 88            
 89            
 90            int copy_me_keys (DRMS_Record_t *inRec, DRMS_Record_t *outRec)
 91            
 92            {
 93            	int failCount = 0;
 94            	int iKey, nKeys = ARRLENGTH(meKeys);
 95            	
 96            	if (inRec == NULL || outRec == NULL) {
 97            		return -1;
 98            	}
 99            	
100            	for (iKey = 0; iKey < nKeys; iKey++)
101            	{
102            		failCount += drms_copykey(outRec, inRec, meKeys[iKey]);
103            	}
104            	
105            	return failCount;
106            }
107 xudong 1.1 
108            
109            
110            int copy_patch_keys (DRMS_Record_t *inRec, DRMS_Record_t *outRec)
111            
112            {
113            	int failCount = 0;
114            	int iKey, nKeys = ARRLENGTH(patchKeys);
115            	
116            	if (inRec == NULL || outRec == NULL) {
117            		return -1;
118            	}
119            	
120            	for (iKey = 0; iKey < nKeys; iKey++)
121            	{
122            		failCount += drms_copykey(outRec, inRec, patchKeys[iKey]);
123            	}
124            	
125            	return failCount;
126            }
127            
128 xudong 1.1 
129            
130            int copy_geo_keys (DRMS_Record_t *inRec, DRMS_Record_t *outRec)
131            
132            {
133            	int failCount = 0;
134            	int iKey, nKeys = ARRLENGTH(geoKeys);
135            	
136            	if (inRec == NULL || outRec == NULL) {
137            		return -1;
138            	}
139            	
140            	for (iKey = 0; iKey < nKeys; iKey++)
141            	{
142            		failCount += drms_copykey(outRec, inRec, geoKeys[iKey]);
143            	}
144            	
145            	return failCount;
146            }
147            
148            
149 xudong 1.1 
150            int copy_ambig_keys (DRMS_Record_t *inRec, DRMS_Record_t *outRec)
151            
152            {
153            	int failCount = 0;
154            	int iKey, nKeys = ARRLENGTH(ambigKeys);
155            	
156            	if (inRec == NULL || outRec == NULL) {
157            		return -1;
158            	}
159            	
160            	for (iKey = 0; iKey < nKeys; iKey++)
161            	{
162            		failCount += drms_copykey(outRec, inRec, ambigKeys[iKey]);
163            	}
164            	
165            	return failCount;
166            }

Karen Tian
Powered by
ViewCVS 0.9.4