- Timestamp:
- Sep 19, 2014, 4:05:27 PM (12 years ago)
- Location:
- branches/eam_branches/ps2-tc3-20130727
- Files:
-
- 3 edited
Legend:
- Unmodified
- Added
- Removed
-
branches/eam_branches/ps2-tc3-20130727
- Property svn:mergeinfo changed
-
branches/eam_branches/ps2-tc3-20130727/Ohana
- Property svn:mergeinfo changed
-
branches/eam_branches/ps2-tc3-20130727/Ohana/src/libdvo/include/dvo.h
r36680 r37403 28 28 DVO_FORMAT_PS1_V3, 29 29 DVO_FORMAT_PS1_V4, 30 DVO_FORMAT_PS1_V5, 30 31 } DVOTableFormat; 31 32 … … 78 79 79 80 /* catalog values to be loaded */ 80 # define LOAD_NONE 0x00 81 # define LOAD_AVES 0x01 82 # define LOAD_MEAS 0x02 83 # define LOAD_MISS 0x04 84 # define LOAD_SECF 0x08 85 # define SKIP_AVES 0x10 86 # define SKIP_MEAS 0x20 87 # define SKIP_MISS 0x40 88 # define SKIP_SECF 0x80 89 90 // # define LOAD_MEAS_META 0x100 -- is this used?? 81 # define LOAD_NONE 0x000 82 # define LOAD_AVES 0x001 83 # define LOAD_MEAS 0x002 84 # define LOAD_MISS 0x004 85 # define LOAD_SECF 0x008 86 # define SKIP_AVES 0x010 87 # define SKIP_MEAS 0x020 88 # define SKIP_MISS 0x040 89 # define SKIP_SECF 0x080 90 # define LOAD_LENSING 0x100 91 # define LOAD_LENSOBJ 0x200 92 # define SKIP_LENSING 0x400 93 # define SKIP_LENSOBJ 0x800 91 94 92 95 /* photometry code types */ … … 125 128 ID_MEAS_BLEND_MEAS = 0x00000100, // detection is within radius of multiple objects 126 129 ID_MEAS_BLEND_OBJ = 0x00000200, // multiple detections within radius of object 127 ID_MEAS_ UNDEF_3 = 0x00000400, // unused130 ID_MEAS_WARP_USED = 0x00000400, // measurement used to find mean warp photometry 128 131 ID_MEAS_UNDEF_4 = 0x00000800, // unused 129 132 ID_MEAS_BLEND_MEAS_X = 0x00001000, // detection is within radius of multiple objects across catalogs … … 171 174 ID_STAR_USE_PAR = 0x00200000, // parallax used (not AVE or PM) 172 175 ID_STAR_NO_ASTROM = 0x00400000, // mean astrometry could not be measured 176 ID_STAR_BAD_PM = 0x00800000, // mean astrometry could not be measured 173 177 ID_OBJ_EXT = 0x01000000, // extended in our data (eg, PS) 174 178 ID_OBJ_EXT_ALT = 0x02000000, // extended in external data (eg, 2MASS) … … 333 337 // another special case : does not match byte-boundaries 334 338 # include "cmf-ps1-dv3.h" 339 # include "cmf-ps1-sv3.h" 340 # include "cmf-ps1-v5.h" 341 # include "cmf-ps1-v5-lensing.h" 335 342 336 343 typedef struct { … … 376 383 char ***name; // projection cell name 377 384 378 int NX_SUB;379 int NY_SUB;385 float NX_SUB; 386 float NY_SUB; 380 387 double dPix; 381 388 382 389 double **Xo; 383 390 double **Yo; 384 int **dX;385 int **dY;391 float **dX; 392 float **dY; 386 393 } BoundaryTree; 387 394 … … 404 411 double Do; 405 412 double dPix; 406 int dX;407 int dY;408 409 int NX_SUB;410 int NY_SUB;413 float dX; 414 float dY; 415 416 float NX_SUB; 417 float NY_SUB; 411 418 412 419 char *basename; … … 433 440 // a reduced-subset structure for relphot & relastro 434 441 typedef struct { 435 float dR;436 float dD;442 double R; 443 double D; 437 444 float M; 438 445 float Mcal; … … 457 464 } MeasureTiny; 458 465 459 / ** STRUCT DEFINITION **/466 // alternate version of PS1_V4 (old dev version) 460 467 typedef struct { 461 468 double R; // RA (decimal degrees ) … … 481 488 uint32_t measureOffset; // offset to first psf measurement 482 489 uint32_t missingOffset; // offset to first missing obs 483 uint32_t extendOffset;// offset to first extended measurement490 float refColor; // offset to first extended measurement 484 491 uint32_t flags; // average object flags (star; ghost; etc) 485 492 uint32_t photFlagsUpper; // upper bit of 2 bit summary of per-measure photflags … … 493 500 Average *Average_PS1_V4alt_ToInternal (Average_PS1_V4alt *in, off_t Nvalues); 494 501 495 / ** STRUCT DEFINITION **/502 // alternate version of PS1_V4 (old dev version) 496 503 typedef struct { 497 504 float dR; // RA offset (arcsec) … … 547 554 548 555 Measure_PS1_V4alt *gfits_table_get_Measure_PS1_V4alt (FTable *table, off_t *Ndata, char *swapped); 549 Measure *Measure_PS1_V4alt_ToInternal (Measure_PS1_V4alt *in, off_t Nvalues); 556 Measure *Measure_PS1_V4alt_ToInternal (Average *ave, Measure_PS1_V4alt *in, off_t Nvalues); 557 558 // alternate version of PS1_V5 (old dev version) 559 typedef struct { 560 float M; // average mag in this band (mags) 561 float dM; // formal error on average mag (mags) 562 float Map; // ave aperture mag in this band (mags) 563 float dMap; // ave aperture mag in this band (mags) 564 float sMap; // standard deviation of ap mags (mags) 565 float Mkron; // ave kron mag in this band (mags) 566 float dMkron; // formal error on average kron mag (mags) 567 float sMkron; // standard deviation of kron mags (mags) 568 float Mstdev; // standard deviation of measurements (mags) 569 float Mmin; // min accepted mag (mags) 570 float Mmax; // max accepted mag (mags) 571 float Mchisq; // chisq on average mag (value) 572 short Ncode; // number of detections in band 573 short Nused; // number of detections used in average 574 short NusedKron; // number of detections used in average 575 short NusedAp; // number of detections used in average 576 uint32_t flags; // photometry flags 577 float MpsfStk; // magnitude from stack (primary if available) 578 float FpsfStk; // flux from stack (primary if available) 579 float dFpsfStk; // mean flux psf error 580 float MkronStk; // magnitude from stack (primary if available) 581 float FkronStk; // flux from stack (primary if available) 582 float dFkronStk; // mean flux kron error 583 float MapStk; // magnitude from stack (primary if available) 584 float FapStk; // flux from stack (primary if available) 585 float dFapStk; // mean flux ap error 586 int stackPrmryOff; // measure entry which is primary stack detection 587 int stackBestOff; // measure entry which is best stack detection 588 float MpsfWrp; // psf magnitude from stack (primary if available) 589 float FpsfWrp; // psf flux from stack (primary if available) 590 float dFpsfWrp; // mean flux psf error 591 float sFpsfWrp; // mean flux psf stdev 592 float MkronWrp; // kron magnitude from stack (primary if available) 593 float FkronWrp; // kron flux from stack (primary if available) 594 float dFkronWrp; // mean flux kron error 595 float sFkronWrp; // mean flux kron stdev 596 float MapWrp; // aper magnitude from stack (primary if available) 597 float FapWrp; // aper flux from stack (primary if available) 598 float dFapWrp; // mean flux ap error 599 float sFapWrp; // mean flux ap stdev 600 short NusedWrp; // number of detections used in average 601 short NusedKronWrp; // number of detections used in average 602 short NusedApWrp; // number of detections used in average 603 short ubercalDist; // number of images from an ubercal-image 604 } SecFilt_PS1_V5alt; 605 606 SecFilt_PS1_V5alt *gfits_table_get_SecFilt_PS1_V5alt (FTable *table, off_t *Ndata, char *swapped); 607 int gfits_convert_SecFilt_PS1_V5alt (SecFilt_PS1_V5alt *data, off_t size, off_t nitems); 608 SecFilt *SecFilt_PS1_V5alt_ToInternal (SecFilt_PS1_V5alt *in, off_t Nvalues); 609 610 // alternate version of PS1_V5alt (old dev version) 611 typedef struct { 612 double R; // RA (decimal degrees ) 613 double D; // DEC (decimal degrees ) 614 float dR; // RA error (arcsec) 615 float dD; // DEC error (arcsec) 616 float uR; // RA*cos(D) proper-motion (arcsec/year) 617 float uD; // DEC proper-motion (arcsec/year) 618 float duR; // RA*cos(D) p-m error (arcsec/year) 619 float duD; // DEC p-m error (arcsec/year) 620 float P; // parallax (arcsec) 621 float dP; // parallax error (arcsec) 622 double Rstk; // RA on stack (decimal degrees ) 623 double Dstk; // DEC on stack (decimal degrees ) 624 float dRstk; // RA error on stack (arcsec) 625 float dDstk; // DEC error on stack (arcsec) 626 float ChiSqAve; // astrometry analysis chisq 627 float ChiSqPM; // astrometry analysis chisq 628 float ChiSqPar; // astrometry analysis chisq 629 int Tmean; // mean epoch (PM,PAR ref) (unix time seconds) 630 int Trange; // mean epoch (PM,PAR ref) (unix time seconds) 631 float psfQF; // psf coverage (bad masks) 632 float psfQFperf; // psf coverage (all masks) 633 float stargal; // star / galaxy separator (1/100 arcsec) 634 unsigned short Npos; // number of detections used for astrometry 635 unsigned short Nmeasure; // number of psf measurements 636 unsigned short Nmissing; // number of missings 637 unsigned short Nlensing; // number of lensing measurements 638 unsigned short Nlensobj; // number of lensing measurements 639 unsigned short Nextend; // number of extended measurements 640 int measureOffset; // offset to first psf measurement 641 int missingOffset; // offset to first missing obs 642 int lensingOffset; // offset to first lensing obs 643 int lensobjOffset; // offset to mean lensing data 644 int extendOffset; // offset to extended object entry 645 int paramsOffset; // offset to stellar parameter data 646 float refColorBlue; // color of astrometry ref stars 647 float refColorRed; // color of astrometry ref stars 648 uint32_t flags; // average object flags (star; ghost; etc) 649 uint32_t photFlagsUpper; // upper bit of 2 bit summary of per-measure photflags 650 uint32_t photFlagsLower; // lower bit of 2 bit summary of per-measure photflags 651 unsigned int objID; // unique ID for object in table 652 unsigned int catID; // unique ID for table in which object was first realized 653 uint64_t extID; // external ID for object (eg PSPS objID) 654 uint64_t extIDgc; // external ID for object in galactic coords 655 } Average_PS1_V5alt; 656 657 Average_PS1_V5alt *gfits_table_get_Average_PS1_V5alt (FTable *table, off_t *Ndata, char *swapped); 658 int gfits_convert_Average_PS1_V5alt (Average_PS1_V5alt *data, off_t size, off_t nitems); 659 Average *Average_PS1_V5alt_ToInternal (Average_PS1_V5alt *in, off_t Nvalues); 660 661 /* for some reason I have merged the set of tables and the file description, 662 so I need to have an internal structure to point to the separate files */ 550 663 551 664 /* a catalog contains this data */ … … 561 674 SecFilt *secfilt; 562 675 676 // lensing data (optional?) 677 Lensing *lensing; 678 Lensobj *lensobj; 679 563 680 int Nsecfilt; /* number of secfilt entries for each average entry */ 564 off_t Naverage, Nmeasure, Nmissing, N secf_mem; /* current number of each component in memory */565 off_t Naves_disk, Nmeas_disk, Nmiss_disk, N secf_disk; /* current number of each component on disk */566 off_t Naves_off, Nmeas_off, Nmiss_off, N secf_off; /* index of first loaded data value */681 off_t Naverage, Nmeasure, Nmissing, Nlensing, Nlensobj, Nsecf_mem; /* current number of each component in memory */ 682 off_t Naves_disk, Nmeas_disk, Nmiss_disk, Nlensing_disk, Nlensobj_disk, Nsecf_disk; /* current number of each component on disk */ 683 off_t Naves_off, Nmeas_off, Nmiss_off, Nlensing_off, Nlensobj_off, Nsecf_off; /* index of first loaded data value */ 567 684 568 685 // note that we use these for the full-sky relphot analysis … … 583 700 struct Catalog *missing_catalog; /* missing catalog data (split) */ 584 701 struct Catalog *secfilt_catalog; /* secfilt catalog data (split) */ 702 struct Catalog *lensing_catalog; /* lensing catalog data (split) */ 703 struct Catalog *lensobj_catalog; /* lensobj catalog data (split) */ 585 704 586 705 unsigned int objID; … … 591 710 char catmode; /* storage mode (raw, mef, split, mysql) */ 592 711 char catformat; /* storage format (elixir, panstarrs, etc) */ 593 char catflags; /* choices to be loaded */ 594 char sorted; /* is measure table average-sorted? */ 712 int sorted; /* is measure table average-sorted? (NOTE this is an int only because gfits_scan %t requires it) */ 595 713 714 short catflags; /* choices to be loaded */ 715 596 716 /* pointers for data manipulation */ 597 off_t *found; 598 off_t *image; 599 off_t *mosaic; 600 float *X; 601 float *Y; 602 int *nOwn; // relastro uses this to count owned detections per object 717 off_t *found_t; 718 off_t *foundWarp_t; 719 // off_t *image_t; 720 // off_t *mosaic_t; 721 // float *X_t; 722 // float *Y_t; 723 int *nOwn_t; // relastro uses this to count owned detections per object 603 724 604 725 } Catalog; … … 660 781 char *GetPhotcodeNamebyCode (int code); 661 782 662 float PhotInst (Measure *measure); 663 float PhotCat (Measure *measure); 664 float PhotSys (Measure *measure, Average *average, SecFilt *secfilt); 665 float PhotRel (Measure *measure, Average *average, SecFilt *secfilt); 666 float PhotCal (Measure *thisone, Average *average, SecFilt *secfilt, Measure *measure, PhotCode *code); 667 float PhotAve (PhotCode *code, Average *average, SecFilt *secfilt); 668 float PhotRef (PhotCode *code, Average *average, SecFilt *secfilt, Measure *measure); 669 float PhotAveErr (PhotCode *code, Average *average, SecFilt *secfilt); 670 671 float PhotAperInst (Measure *measure); 672 float PhotAperCat (Measure *measure); 673 float PhotAperSys (Measure *measure, Average *average, SecFilt *secfilt); 674 float PhotAperRel (Measure *measure, Average *average, SecFilt *secfilt); 675 float PhotAperCal (Measure *thisone, Average *average, SecFilt *secfilt, Measure *measure, PhotCode *code); 676 float PhotAperAve (PhotCode *code, Average *average, SecFilt *secfilt); 677 float PhotAperRef (PhotCode *code, Average *average, SecFilt *secfilt, Measure *measure); 678 679 float PhotKronInst (Measure *measure); 680 float PhotKronCat (Measure *measure); 681 float PhotKronSys (Measure *measure, Average *average, SecFilt *secfilt); 682 float PhotKronRel (Measure *measure, Average *average, SecFilt *secfilt); 683 float PhotKronCal (Measure *thisone, Average *average, SecFilt *secfilt, Measure *measure, PhotCode *code); 684 float PhotKronAve (PhotCode *code, Average *average, SecFilt *secfilt); 685 float PhotKronRef (PhotCode *code, Average *average, SecFilt *secfilt, Measure *measure); 686 float PhotKronAveErr (PhotCode *code, Average *average, SecFilt *secfilt); 783 float PhotInst (Measure *measure, dvoMagClassType class); 784 float PhotCat (Measure *measure, dvoMagClassType class); 785 float PhotSys (Measure *measure, Average *average, SecFilt *secfilt, dvoMagClassType class); 786 float PhotRel (Measure *measure, Average *average, SecFilt *secfilt, dvoMagClassType class); 787 float PhotCal (Measure *thisone, Average *average, SecFilt *secfilt, Measure *measure, PhotCode *code, dvoMagClassType class); 788 float PhotErr (Measure *measure, dvoMagClassType class); 789 float PhotCalErr (Measure *measure, dvoMagClassType class); 790 791 float PhotAve (PhotCode *code, Average *average, SecFilt *secfilt, dvoMagClassType class, dvoMagSourceType source); 792 float PhotRef (PhotCode *code, Average *average, SecFilt *secfilt, Measure *measure, dvoMagClassType class, dvoMagSourceType source); 793 float PhotAveErr (PhotCode *code, Average *average, SecFilt *secfilt, dvoMagClassType class, dvoMagSourceType source); 794 795 float PhotInstTiny (MeasureTiny *measure, dvoMagClassType class); 796 float PhotCatTiny (MeasureTiny *measure, dvoMagClassType class); 797 float PhotSysTiny (MeasureTiny *measure, AverageTiny *average, SecFilt *secfilt, dvoMagClassType class); 798 float PhotRelTiny (MeasureTiny *measure, AverageTiny *average, SecFilt *secfilt, dvoMagClassType class); 799 float PhotCalTiny (MeasureTiny *thisone, AverageTiny *average, SecFilt *secfilt, MeasureTiny *measure, PhotCode *code, dvoMagClassType class); 800 801 float PhotAveTiny (PhotCode *code, AverageTiny *average, SecFilt *secfilt, dvoMagClassType class, dvoMagSourceType source); 802 float PhotRefTiny (PhotCode *code, AverageTiny *average, SecFilt *secfilt, MeasureTiny *measure, dvoMagClassType class, dvoMagSourceType source); 803 804 float PhotFluxInst (Measure *measure, dvoMagClassType class); 805 float PhotFluxCat (Measure *measure, dvoMagClassType class); 806 float PhotFluxSys (Measure *measure, Average *average, SecFilt *secfilt, dvoMagClassType class); 807 float PhotFluxRel (Measure *measure, Average *average, SecFilt *secfilt, dvoMagClassType class); 808 float PhotFluxCal (Measure *thisone, Average *average, SecFilt *secfilt, Measure *measure, PhotCode *code, dvoMagClassType class); 809 810 float PhotFluxAve (PhotCode *code, Average *average, SecFilt *secfilt, dvoMagClassType class, dvoMagSourceType source); 811 float PhotFluxRef (PhotCode *code, Average *average, SecFilt *secfilt, Measure *measure, dvoMagClassType class, dvoMagSourceType source); 812 813 float PhotFluxInstErr (Measure *measure, dvoMagClassType class); 814 float PhotFluxCatErr (Measure *measure, dvoMagClassType class); 815 float PhotFluxAveErr (PhotCode *code, Average *average, SecFilt *secfilt, dvoMagClassType class, dvoMagSourceType source); 687 816 688 817 float PhotXm (PhotCode *code, Average *average, SecFilt *secfilt); 689 690 818 float PhotZeroPoint (Measure *measure, Average *average, SecFilt *secfilt); 691 float PhotAveFluxPSF (PhotCode *code, Average *average, SecFilt *secfilt); 692 float PhotAvedFluxPSF (PhotCode *code, Average *average, SecFilt *secfilt); 693 float PhotAveFluxKron (PhotCode *code, Average *average, SecFilt *secfilt); 694 float PhotAvedFluxKron (PhotCode *code, Average *average, SecFilt *secfilt); 695 696 float PhotMstdev (PhotCode *code, Average *average, SecFilt *secfilt); 697 float PhotM20 (PhotCode *code, Average *average, SecFilt *secfilt); 698 float PhotM80 (PhotCode *code, Average *average, SecFilt *secfilt); 819 820 int PhotNphot (PhotCode *code, Average *average, SecFilt *secfilt, dvoMagClassType class, dvoMagSourceType source); 821 float PhotMstdev (PhotCode *code, Average *average, SecFilt *secfilt, dvoMagClassType class, dvoMagSourceType source); 822 float PhotMmin (PhotCode *code, Average *average, SecFilt *secfilt); 823 float PhotMmax (PhotCode *code, Average *average, SecFilt *secfilt); 699 824 float PhotUCdist (PhotCode *code, Average *average, SecFilt *secfilt); 700 825 unsigned int PhotStackID (PhotCode *code, Average *average, SecFilt *secfilt); … … 703 828 int PhotColor (Average *average, SecFilt *secfilt, Measure *measure, int c1, int c2, double *color); 704 829 705 float PhotInstTiny (MeasureTiny *measure);706 float PhotCatTiny (MeasureTiny *measure);707 float PhotAperTiny (MeasureTiny *measure);708 float PhotSysTiny (MeasureTiny *measure, AverageTiny *average, SecFilt *secfilt);709 float PhotRelTiny (MeasureTiny *measure, AverageTiny *average, SecFilt *secfilt);710 float PhotCalTiny (MeasureTiny *thisone, AverageTiny *average, SecFilt *secfilt, MeasureTiny *measure, PhotCode *code);711 float PhotAveTiny (PhotCode *code, AverageTiny *average, SecFilt *secfilt);712 float PhotRefTiny (PhotCode *code, AverageTiny *average, SecFilt *secfilt, MeasureTiny *measure);713 830 float PhotXmTiny (PhotCode *code, AverageTiny *average, SecFilt *secfilt); 714 831 float PhotdMTiny (PhotCode *code, AverageTiny *average, SecFilt *secfilt); … … 781 898 /*** conversion functions / I/O conversions ***/ 782 899 Average *ReadRawAverage (FILE *f, off_t Naverage, char format, SecFilt **primary); 783 Measure *ReadRawMeasure (FILE *f, off_t Nmeasure, char format);900 Measure *ReadRawMeasure (FILE *f, Average *average, off_t Nmeasure, char format); 784 901 SecFilt *ReadRawSecFilt (FILE *f, off_t Nsecfilt, char format); 785 902 int WriteRawAverage (FILE *f, Average *average, off_t Naverage, char format, SecFilt *primary); 786 int WriteRawMeasure (FILE *f, Measure *measure, off_t Nmeasure, char format);903 int WriteRawMeasure (FILE *f, Average *average, Measure *measure, off_t Nmeasure, char format); 787 904 int WriteRawSecFilt (FILE *f, SecFilt *secfilt, off_t Nsecfilt, char format); 788 905 … … 790 907 791 908 Average *FtableToAverage (FTable *ftable, off_t *Naverage, char *format, SecFilt **primary); 792 Measure *FtableToMeasure (FTable *ftable, off_t *Nmeasure, char *format);909 Measure *FtableToMeasure (FTable *ftable, Average *average, off_t *Nmeasure, char *format); 793 910 SecFilt *FtableToSecFilt (FTable *ftable, off_t *Nsecfilt, char *format); 911 Lensing *FtableToLensing (FTable *ftable, off_t *Nlensing, char *format); 912 Lensobj *FtableToLensobj (FTable *ftable, off_t *Nlensobj, char *format); 794 913 int FtableToImage (FTable *ftable, Header *theader, char *format); 795 914 796 915 int AverageToFtable (FTable *ftable, Average *average, off_t Naverage, char format, SecFilt *primary); 797 int MeasureToFtable (FTable *ftable, Measure *measure, off_t Nmeasure, char format);916 int MeasureToFtable (FTable *ftable, Average *average, Measure *measure, off_t Nmeasure, char format); 798 917 int SecFiltToFtable (FTable *ftable, SecFilt *secfilt, off_t Nsecfilt, char format); 918 int LensingToFtable (FTable *ftable, Lensing *lensing, off_t Nlensing, char format); 919 int LensobjToFtable (FTable *ftable, Lensobj *lensobj, off_t Nlensobj, char format); 799 920 int ImageToFtable (FTable *ftable, Header *theader, char format); 800 921 int ImageToVtable (VTable *vtable, Header *theader, char format); … … 811 932 # include "ps1_v3_defs.h" 812 933 # include "ps1_v4_defs.h" 934 # include "ps1_v5_defs.h" 813 935 # include "ps1_ref_defs.h" 814 936 … … 905 1027 void TessellationTableInit (TessellationTable *tess, int Ntess); 906 1028 1029 float dvoOffsetR (Measure *measure, Average *average); 1030 float dvoOffsetD (Measure *measure, Average *average); 1031 double dvoMeanR (float dR, Average *average); 1032 double dvoMeanD (float dD, Average *average); 1033 907 1034 void dvo_average_init (Average *average); 908 1035 void dvo_averageT_init (AverageTiny *average); … … 910 1037 void dvo_measure_init (Measure *measure); 911 1038 void dvo_measureT_init (MeasureTiny *measure); 1039 1040 void dvo_lensing_init (Lensing *lensing); 1041 void dvo_lensobj_init (Lensobj *lensobj, int toZero); 912 1042 913 1043 void InitRegionHosts (RegionHostInfo *hosts, int Nhosts, int NHOSTS);
Note:
See TracChangeset
for help on using the changeset viewer.
