(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            #define ARRLENGTH(ARR) (sizeof(ARR) / sizeof(ARR[0]))
 30            
 31            const char *meKeys[] =
 32            {
 33            	"QUALITY", "QUAL_S", "QUALLEV1", "INSTRUME", "CAMERA",		// info
 34            	"T_OBS", "CADENCE", "DATE_S", "DATE__OBS", "DATE", "DATE_M",											// time
 35            	"DSUN_OBS", "CRLN_OBS", "CRLT_OBS", "CAR_ROT",
 36            	"OBS_VR", "OBS_VW", "OBS_VN", "RSUN_OBS",			// geometry
 37            	"INVCODEV", "INVDOCU", "INVITERA", "INVLMBDA", "INVLMBDF",
 38            	"INVTUNEN", "INVSVDTL", "INVCHIST", "INVPOLTH",
 39            	"INVPJUMP", "INVLMBDM", "INVLMBD0", "INVLMBDB",
 40            	"INVDLTLA", "INVLMBDS", "INVLMBMS",
 41                    "INVLYOTW", "INVWNARW", "INVWSPAC",
 42            	"INVINTTH", "INVNOISE", "INVCONTI", "INVWGHTI",
 43 xudong 1.1 	"INVWGHTQ", "INVWGHTU", "INVWGHTV", "INVSTLGT", "INVFREEP",
 44            	"INVFLPRF", "INVPHMAP", "INVVLAVE", "INVBLAVE", "INVBBAVE",
 45            	"INVNPRCS", "INVNCNVG",
 46            	"INVKEYS1", "INVKEYS2", "INVKEYS3", 
 47            	"INVKEYI1", "INVKEYI2", "INVKEYI3", 
 48            	"INVKEYD1", "INVKEYD2", "INVKEYD3", 				 // inversion
 49            	"BUNIT", "INVNFCTI", "INVNFCTQ", "INVNFCTU", "INVNFCTV",
 50            	"BUNIT_000", "BUNIT_001", "BUNIT_002", "BUNIT_003", "BUNIT_004",
 51            	"BUNIT_005", "BUNIT_006", "BUNIT_007", "BUNIT_008", "BUNIT_009",
 52            	"BUNIT_010", "BUNIT_011", "BUNIT_012", "BUNIT_013", "BUNIT_014",
 53            	"BUNIT_015", "BUNIT_016", "BUNIT_017", "BUNIT_018", "BUNIT_019",
 54            	"BUNIT_020", "BUNIT_021", "BUNIT_022", "BUNIT_023", "BUNIT_024",
 55                    "BUNIT_025", "BUNIT_026", "BUNIT_027",
 56            	"HFLID", "HCFTID", "QLOOK", "TINTNUM", "SINTNUM",
 57            	"DISTCOEF", "ROTCOEF", "POLCALM", "SOURCE",
 58            	"CODEVER0", "CODEVER1", "CODEVER2", "CODEVER3", "CODEVER4", "CODEVER5", "CODEVER6","BLD_VERS"	// misc
 59            };
 60            
 61            const char *patchKeys[] = 
 62            {
 63            	"PATCHNUM","ARMCODEV","ARMDOCU","HRPCODEV","HRPDOCU",
 64 xudong 1.1 	"CRSIZE1","CRSIZE2","ACTIVE","NCLASS","ON_PATCH","MASK","ARM_QUAL","ARM_NCLN","H_MERGE","H_FAINT",
 65            	"ARM_MODL","ARM_EDGE","ARM_BETA","TKP_KWID","TKP_KLAT","TKP_TAU","TKP_TAU2",
 66            	"TKP_ACTV","TKP_FNUM","TKP_FTIM","TKP_MAPR","TKP_RUNN","TKP_RUNT",
 67            	"LATDTMIN","LONDTMIN","LATDTMAX","LONDTMAX","OMEGA_DT",
 68            	"NPIX","SIZE","AREA","NACR","SIZE_ACR","AREA_ACR",
 69            	"MTOT","MNET","MPOS_TOT","MNEG_TOT","MMEAN","MSTDEV","MSKEW","MKURT",
 70            	"LAT_MIN","LON_MIN","LAT_MAX","LON_MAX","LAT_FWT","LON_FWT","LAT_FWTPOS","LON_FWTPOS","LAT_FWTNEG","LON_FWTNEG",
 71            	"T_FRST","T_FRST1","T_LAST1","T_LAST","N_PATCH","N_PATCH1","N_PATCHM","NOAA_AR","NOAA_NUM","NOAA_ARS","OFFDISK", "QUIET"
 72            };
 73            
 74            const char *geoKeys[] =
 75            {
 76            	"CRPIX1", "CRPIX2", "CRVAL1", "CRVAL2",
 77            	"CDELT1", "CDELT2", "CROTA2",
 78            	"CRDER1", "CRDER2", "CSYSER1", "CSYSER2",
 79            	"IMCRPIX1", "IMCRPIX2"
 80            };
 81            
 82            const char *ambigKeys[] =
 83            {
 84              "AMBCODEV", "AMBDOCU",
 85 xudong 1.1 	"AMBGMTRY", "AMBWEAK", "AMBNEROD", "AMBNGROW",
 86            	"AMBNPAD", "AMBNAP", "AMBNTX", "AMBNTY",
 87            	"AMBBTHR0", "AMBBTHR1", "AMBSEED", "AMBNEQ",
 88            	"AMBLMBDA", "AMBTFCT0", "AMBTFCTR", "AMBPATCH"
 89            };
 90            
 91            
 92            
 93            int copy_me_keys (DRMS_Record_t *inRec, DRMS_Record_t *outRec)
 94            
 95            {
 96            	int failCount = 0;
 97            	int iKey, nKeys = ARRLENGTH(meKeys);
 98            	
 99            	if (inRec == NULL || outRec == NULL) {
100            		return -1;
101            	}
102            	
103            	for (iKey = 0; iKey < nKeys; iKey++)
104            	{
105            		failCount += drms_copykey(outRec, inRec, meKeys[iKey]);
106 xudong 1.1 	}
107            	
108            	return failCount;
109            }
110            
111            
112            
113            int copy_patch_keys (DRMS_Record_t *inRec, DRMS_Record_t *outRec)
114            
115            {
116            	int failCount = 0;
117            	int iKey, nKeys = ARRLENGTH(patchKeys);
118            	
119            	if (inRec == NULL || outRec == NULL) {
120            		return -1;
121            	}
122            	
123            	for (iKey = 0; iKey < nKeys; iKey++)
124            	{
125            		failCount += drms_copykey(outRec, inRec, patchKeys[iKey]);
126            	}
127 xudong 1.1 	
128            	return failCount;
129            }
130            
131            
132            
133            int copy_geo_keys (DRMS_Record_t *inRec, DRMS_Record_t *outRec)
134            
135            {
136            	int failCount = 0;
137            	int iKey, nKeys = ARRLENGTH(geoKeys);
138            	
139            	if (inRec == NULL || outRec == NULL) {
140            		return -1;
141            	}
142            	
143            	for (iKey = 0; iKey < nKeys; iKey++)
144            	{
145            		failCount += drms_copykey(outRec, inRec, geoKeys[iKey]);
146            	}
147            	
148 xudong 1.1 	return failCount;
149            }
150            
151            
152            
153            int copy_ambig_keys (DRMS_Record_t *inRec, DRMS_Record_t *outRec)
154            
155            {
156            	int failCount = 0;
157            	int iKey, nKeys = ARRLENGTH(ambigKeys);
158            	
159            	if (inRec == NULL || outRec == NULL) {
160            		return -1;
161            	}
162            	
163            	for (iKey = 0; iKey < nKeys; iKey++)
164            	{
165            		failCount += drms_copykey(outRec, inRec, ambigKeys[iKey]);
166            	}
167            	
168            	return failCount;
169 xudong 1.1 }

Karen Tian
Powered by
ViewCVS 0.9.4