DOI: 10.7910/dvn/vsxo03
title: Raw data from the Whipple 10m gamma-ray telescope, Mt Hopkins, AZ

description: &lt;h1&gt;Description&lt;/h1&gt;
&lt;p&gt;This dataset provides the raw data from observations made with the Whipple 10-meter imaging atmospheric Cherenkov telescope at the Fred Lawrence Whipple Observatory (FLWO) on Mt. Hopkins, Arizona between September 1994 and July 2011. The data are stored in a proprietary format, based on the CERN FZ framework, for which we have developed a &lt;a href=\"https://github.com/Whipple10m/pyfzreader\" target=\"_blank\" rel=\"noopener\"&gt;pure Python reader/decoder&lt;/a&gt; with which you can extract the images and metadata for display or analysis.&lt;/p&gt;
&lt;p&gt;The observation logsheets which describe the data taking are also available for the majority of nights.&lt;/p&gt;
&lt;p&gt;Unfortunately a substantial fraction of the observations has been lost to the passage of time, so the dataset here is not complete. It is difficult to estimate the total quantity of data lost.&lt;/p&gt;
&lt;p&gt;The observations were generally made in 28-minute long &lt;em&gt;runs&lt;/em&gt; with the telescope tracking a source in the sky during dark, moonless nights. These observations are organized into &lt;em&gt;darkruns&lt;/em&gt; between the full-moon periods when no data-taking could be made, and into &lt;em&gt;seasons&lt;/em&gt; around the Summer monsoon period in Arizona when the camera was disconnected to protect it from damage from lightning storms.&lt;/p&gt;
&lt;p&gt;The imaging camera used on the Whipple 10m telescope evolved during the time from 1994 to 2011, with this evolution being described in detail by &lt;a href=\"https://www.sciencedirect.com/science/article/abs/pii/S0927650507000746\" rel=\"nofollow\"&gt;Kildea et al., Astroparticle Physics, 28, 2, 182-195, (2007).&lt;/a&gt;&lt;/p&gt;
&lt;h3&gt;Raw data files: &lt;code&gt;raw10/dYYYYMMDD/gtNNNNNN.fz.xz&lt;/code&gt;&lt;/h3&gt;
&lt;p&gt;Data recorded during each observation run are stored in a single data file in the &lt;a href=\"https://github.com/Whipple10m/GDF\"&gt;Granite data format&lt;/a&gt; (GDF). These files contain multiple records of different types, as described in some detail in the readme page for the &lt;a href=\"https://github.com/Whipple10m/pyfzreader\" target=\"_blank\" rel=\"noopener\"&gt;Python reader/decoder&lt;/a&gt;. The following record types are available and are supported by the reader:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Run header:&lt;/strong&gt; Nominal start time of the run, comments entered by the observer, and other miscellaneous information.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;10m event:&lt;/strong&gt; The data recorded for each event, including time, digitized image, trigger type, etc.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;10m frame:&lt;/strong&gt; Data recorded for special calibration events in early Whipple data. Phased out in GDF version 80 (starting on 1997-10-29), after which the calibration data appears in the &lt;strong&gt;10m event&lt;/strong&gt; records, flagged by a specific trigger bit.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Tracking status:&lt;/strong&gt; Target name and coordinates, and position of telescope (azimuth and elevation angles) read out periodically from the tracking computer, if available.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;HV status:&lt;/strong&gt; Measured voltages and currents on each PMT, read out periodically from the high-voltage system, if available.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Here the data files are grouped into tar archives for each season, e.g. &lt;code&gt;raw10_1998_1999.tar&lt;/code&gt;, which will yield data files with the following hierarchy when unpacked: &lt;code&gt;raw10/dYYYYMMDD/gtNNNNNN.fz.xz&lt;/code&gt;, where &lt;code&gt;YYYYMMDD&lt;/code&gt; is the UTC date of the observations and &lt;code&gt;NNNNNN&lt;/code&gt; is a zero-padded &lt;em&gt;run number&lt;/em&gt; of the observation. The data files are compressed using the standard LZMA compression format, which can be read directly by the Python reader (there is no need to decompress the files manually).&lt;/p&gt;
&lt;p&gt;Users can download the full dataset (tar files) from this repository, unpack them and operate on them locally. Alternatively, the Python reader can download individual runs from the repository on-the-fly, which allows the data to be explored without downloading in advance.&lt;/p&gt;
&lt;p&gt;The raw data repository comprises:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;22,805&lt;/strong&gt; observation runs, taken on &lt;/li&gt;
&lt;li&gt;&lt;strong&gt;1,827&lt;/strong&gt; nights of observation, where&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;620,331,605&lt;/strong&gt; events were recorded during &lt;/li&gt;
&lt;li&gt;&lt;strong&gt;24,633,108&lt;/strong&gt; seconds of observation (6,842.5 hours).&lt;/li&gt;
&lt;/ul&gt;
&lt;h3&gt;Log sheet files: &lt;code&gt;log10/dYYYYMMDD.log_10&lt;/code&gt;&lt;/h3&gt;
&lt;p&gt;The observations for each night are described by a plain-text (ASCII) &lt;em&gt;log sheet&lt;/em&gt;, written by the observers that operated the telescope each night. These log sheets are also available in the repository, grouped into a tar archive, &lt;code&gt;log10.tar,&lt;/code&gt; which unpacks into a set of files with the following hierarchy: &lt;code&gt;log10/dYYYYMMDD.log_10&lt;/code&gt;. The logs have been anonymized to remove references to the names of the observers and support staff. The logs describe the observations made, problems encountered, weather conditions, modifications to the hardware, and give the results of a \"quicklook\" analysis of the data files (significance of any detection and rate of gamma rays detected).&lt;/p&gt;
&lt;p&gt;The logsheet archive comprises &lt;strong&gt;2,582 &lt;/strong&gt;logsheets describing the observations made on individual nights.&lt;/p&gt;
&lt;h3&gt;Run database: &lt;code&gt;raw10_run_summary.csv.xz&lt;/code&gt;&lt;/h3&gt;
&lt;p&gt;Two summary databases are also available in CSV form. The file &lt;code&gt;raw10_run_summary.csv.xz&lt;/code&gt;&lt;strong&gt; &lt;/strong&gt;contains one entry for each data file in the archive, obtained by scanning the data file and processing the various records. Each record contains the following entries:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;filename:&lt;/strong&gt; filename in the archive in the form &lt;code&gt;raw10/dYYYYMMDD/gtNNNNNN.fz.xz&lt;/code&gt; (string)&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;run_number:&lt;/strong&gt; run number, extracted from the filename (integer)&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;gdf_version:&lt;/strong&gt; version number of the Granite data format (integer, between 21 and 83)&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;nheader:&lt;/strong&gt; number of GDF &lt;em&gt;header&lt;/em&gt; records in the file (integer)&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;nevent:&lt;/strong&gt; number of GDF &lt;em&gt;event&lt;/em&gt; records in the file (integer)&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;nframe:&lt;/strong&gt; number of GDF &lt;em&gt;frame&lt;/em&gt; records in the file (integer)&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;ntracking:&lt;/strong&gt; number of GDF &lt;em&gt;tracking&lt;/em&gt; records in the file (integer)&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;nhv:&lt;/strong&gt; number of GDF &lt;em&gt;high-voltage&lt;/em&gt; records in the file (integer)&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;nccd:&lt;/strong&gt; number of GDF &lt;em&gt;CCD&lt;/em&gt; records in the file (integer)&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;nadc:&lt;/strong&gt; number of ADC channels recorded in the each event. The LeCroy ADCs each have 12 channels, all of which were read out, so this is larger than the number of PMT pixels in the camera (integer):
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;nadc=120&lt;/code&gt;&lt;strong&gt;:&lt;/strong&gt; the 109-pixel camera (before 1996-12-05);&lt;/li&gt;
&lt;li&gt;&lt;code&gt;nadc=156&lt;/code&gt;&lt;strong&gt;:&lt;/strong&gt; the 151-pixel camera (from 1996-12-05 until 1997-02-29)&lt;/li&gt;
&lt;li&gt;&lt;code&gt;nadc=336&lt;/code&gt;&lt;strong&gt;:&lt;/strong&gt; the 331-pixel camera (from 1997-02-29 until 1999-09-11)&lt;/li&gt;
&lt;li&gt;&lt;code&gt;nadc=492&lt;/code&gt;&lt;strong&gt;:&lt;/strong&gt; the 490-pixel camera (from 1999-09-11 until 2009-12-16)&lt;/li&gt;
&lt;li&gt;&lt;code&gt;nadc=384&lt;/code&gt;&lt;strong&gt;:&lt;/strong&gt; the 379-pixel camera (from 2009-12-16)&lt;/li&gt;
&lt;li&gt;&lt;code&gt;nadc=0&lt;/code&gt;: if no event or frame records are found in the run&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;gps_not_good:&lt;/strong&gt; number of event or frame records for which the Python reader has returned &lt;code&gt;gps_not_good=True&lt;/code&gt; (integer)&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;mjd:&lt;/strong&gt; UTC date of the observation in modified Julian date (MJD), taken from the GPS clock (if available). For robust determination of the date of the observation the &lt;strong&gt;mjd_min&lt;/strong&gt; and &lt;strong&gt;mjd_max&lt;/strong&gt; elements should be preferred, as these use the system time on the DACQ computer, which is available even when the GPS is bad. (integer)&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;ut_max:&lt;/strong&gt; UTC time of the final event in the run, in seconds since midnight, taken from the GPS clock (integer)&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;ut_min:&lt;/strong&gt; UTC time of the first event in the run, in seconds since midnight, taken from the GPS clock (integer)&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;mjd_max:&lt;/strong&gt; nominal (anticipated) MJD at the end of the run, as determined by the DACQ system (based on the computer time) when the run starts. May be different from the true end of the run if run terminates early for some reason (float)&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;mjd_min: &lt;/strong&gt;nominal MJD at the start of the run, as determined by the DACQ system (based on the computer time) when the run starts (float)&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;nsky:&lt;/strong&gt; number of &lt;em&gt;sky&lt;/em&gt; events triggered by the multiplicity or pattern trigger when a sufficiently bright flash of light is detected in the camera (integer)&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;npedestal:&lt;/strong&gt; number of &lt;em&gt;pedestal&lt;/em&gt; calibration events, initiated by a periodic trigger (integer)&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;el_max:&lt;/strong&gt; maximum elevation reported by the tracking system during the run in degrees (float), or empty string if no tracking records are available&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;el_min:&lt;/strong&gt; minimum elevation reported by the tracking system during the run in degrees (float), or empty string if no tracking records are available&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;source_name:&lt;/strong&gt; target (source) name reported by the tracking system (string), or empty string if no tracking records are available&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;tracking_mode:&lt;/strong&gt; tracking mode reported by the tracking system, one of: &lt;code&gt;on&lt;/code&gt;, &lt;code&gt;off&lt;/code&gt;, &lt;code&gt;standby&lt;/code&gt;, &lt;code&gt;slewing&lt;/code&gt;, &lt;code&gt;check&lt;/code&gt;, or empty string if no tracking records available (string)&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;ra:&lt;/strong&gt; right ascension of the target in the format &lt;code&gt;HHhMMmSS.Ss&lt;/code&gt;, e.g. &lt;code&gt;12h34m56.7s&lt;/code&gt;, or empty string if no tracking records are available(string)&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;dec:&lt;/strong&gt; declination of the target in the format &lt;code&gt;+/-DDdMMmSSs&lt;/code&gt;, e.g. &lt;code&gt;+12h34m56.7s&lt;/code&gt;, or empty string if no tracking records are available (string)&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;ped:&lt;/strong&gt; median pedestal value across the camera in digital counts, calculated from pedestal calibration events (float)&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;ped_rms:&lt;/strong&gt; median pedestal RMS across the camera in digital counts, calculated from pedestal calibration events (float)&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;bytes_read:&lt;/strong&gt; number of bytes read, which should be the same as the number of bytes in the file unless a decoder or read error occurs (integer)&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;error_message:&lt;/strong&gt; error message returned by the reader, or empty string if full data file is successfully decoded (string)&lt;/li&gt;
&lt;/ul&gt;
&lt;h3&gt;Logsheet database: &lt;code&gt;logsheet_database.csv.xz&lt;/code&gt;&lt;/h3&gt;
&lt;p&gt;The second summary database, &lt;code&gt;logsheet_database.csv.xz&lt;/code&gt;,&lt;strong&gt; &lt;/strong&gt;contains one entry for each run mentioned in the logsheets, obtained by parsing the plain-text logsheets and extracting data for each run. Each record contains the following entries:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Code:&lt;/strong&gt; target object ID code, a 2 or 3 character identifier for the source, e.g. &lt;code&gt;cr&lt;/code&gt; for the Crab (string)&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Run Num:&lt;/strong&gt; run number (integer)&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Source:&lt;/strong&gt; target object name (string)&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;UTC Date:&lt;/strong&gt; date of observation run in the form &lt;code&gt;YYYY-MM-DD&lt;/code&gt; (string)&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;UTC Time:&lt;/strong&gt; time of start of run, if noted by observer &lt;code&gt;HH:MM&lt;/code&gt; or &lt;code&gt;HH:MM:SS&lt;/code&gt; (string)&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Duration:&lt;/strong&gt; duration of run in minutes, if noted by observer (integer)&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Mode:&lt;/strong&gt; observation mode, if noted by observer, one of &lt;code&gt;track&lt;/code&gt;, &lt;code&gt;on&lt;/code&gt;, &lt;code&gt;off&lt;/code&gt;, &lt;code&gt;drift&lt;/code&gt;, &lt;code&gt;slew&lt;/code&gt;, &lt;code&gt;home&lt;/code&gt;, &lt;code&gt;wobble&lt;/code&gt; (string)&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Sky Q:&lt;/strong&gt; sky quality, if noted by observer, one of &lt;code&gt;a+&lt;/code&gt; (best), &lt;code&gt;a&lt;/code&gt;, &lt;code&gt;a-&lt;/code&gt;, &lt;code&gt;b+&lt;/code&gt;, b, &lt;code&gt;b-&lt;/code&gt;, &lt;code&gt;c+&lt;/code&gt;, c, &lt;code&gt;c-&lt;/code&gt;, &lt;code&gt;ng&lt;/code&gt; (string). Very subjective, based entirely on observer's feeling of the sky.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Elevation:&lt;/strong&gt; elevation at start of observation in degrees (integer)&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;N2 run:&lt;/strong&gt; run number for flat-fielding calibration run to use with this run (integer)&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Off run:&lt;/strong&gt; run number for off-source run to use with this run in &lt;em&gt;on/off&lt;/em&gt; or &lt;em&gt;pair&lt;/em&gt; mode (integer)&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Comment:&lt;/strong&gt; comment from observer (string).&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;The logsheet database comprises &lt;strong&gt;32,102&lt;/strong&gt; entries.&lt;/p&gt;
&lt;h3&gt;Index files: &lt;code&gt;index.json&lt;/code&gt;, &lt;code&gt;raw10_index.csv.xz&lt;/code&gt; and  &lt;code&gt;log10_index.csv.xv&lt;/code&gt;&lt;/h3&gt;
&lt;p&gt;Used by the Python reader to download the individual data files and logsheets from the repository.&lt;/p&gt;
&lt;h1&gt;Data completeness&lt;/h1&gt;
&lt;p&gt;The data and logsheet archives in this repository are not complete.&lt;/p&gt;
&lt;p&gt;In its entirety the Whipple dataset was too large to be stored affordably on the disk of the early era of observation. The data were instead stored, and distributed to the participating institutions, on compact disk. Data handling and archiving proceedures improved as time went on. As an example, in earlier days FTP was used to manually transfer data from the VMS-based DACQ computer to the Unix-based analysis and archiving machines - data could be lost if the transfer of the binary data files was inadvertently done in ASCII mode which led to the VMS&lt;-&gt;UNIX linefeed translations being incorrectly applied. In the early 2000's the transfer of data and the production of CDs was automated by scripts, and by the late 2000's the data was stored in the &lt;a href=\"http://veritas.sao.arizona.edu/\"&gt;VERITAS&lt;/a&gt; data archive at UCLA and an effort was made to integrate all remaining data in the archive.&lt;/p&gt;
&lt;p&gt;Before 2008 the plain-text logsheets were distributed by the observers to the collaboration by email. Starting in 2008 an electronic log book was used to archive and distribute the logsheets. From mid-1998 to 2008 the logsheets were ingested into &lt;a href=\"https://github.com/Whipple10m/WhippleDB\"&gt;a database system&lt;/a&gt; which allowed collaborators to search for runs. The system also archived injested logsheets. The logsheet archive is therefore rather complete from about mid-1998 until the end of the observations in 2011.&lt;/p&gt;
&lt;p&gt;This repository is built from the surviving data stored in the VERITAS archive and the logsheets from the electronic log book, the database system, and from old email mailboxes.&lt;/p&gt;
&lt;p&gt;The Whipple DACQ system assigned run numbers consecutively when runs were started. We can therefore estimate the completeness of the data and logsheet archive by examining what fraction of the consecutive run numbers are present in the archive. This can be seen in a plot of the &lt;a href=\"https://zenodo.org/records/16890876/files/raw10_and_log10_fraction.png\"&gt;data and logsheet completeness as a function of run number&lt;/a&gt; binned in groups of 1,000 run numbers. The plot shows that data files are present from approximately 40%-50% of the run numbers from 1994 to mid-1998, increasing to approximately 60% until about 2007, and then to approximately 90% until the end of observations in 2011. The logsheets are mostly complete from mid-1998 to 2011, and somewhat patchy before this time. Accounting for some known gaps in the run number sequence we expect that &lt;strong&gt;37,547&lt;/strong&gt; run numbers were assigned, whereas &lt;strong&gt;22,805 &lt;/strong&gt;data files are present in the archive (&lt;strong&gt;60.7% &lt;/strong&gt;completeness), and &lt;strong&gt;32,102&lt;/strong&gt; run log entries have been entered into the logsheet database (&lt;strong&gt;85.5% &lt;/strong&gt;completeness).&lt;/p&gt;
&lt;p&gt;This estimate is a lower limit on the completness, as it does not account for engineering runs and crashes where a run number is assigned but no useful data is produced. In some cases these runs may have been taken during the daytime and not reported in the logs. In other cases they were logged but no data was produced. Engineering runs and crashes are more common in the early period as the camera was upgraded from the 109 pixel camera, to the 151, 331 and finally to 490 pixel cameras. Additionally the Granite DACQ system and data format were in development during this period.&lt;/p&gt;
&lt;p&gt;As discussed above, the logsheet database is relatively complete for the period from mid-1998 onwards. We alternatively estimate the data completeness in this period by counting the number of nights for which at least one observation run is recorded in the logsheet database versus the number of nights for which data is present in the archive. A total of &lt;strong&gt;1,884&lt;/strong&gt; nights of observation are logged in this period, whereas data are present in the archive for &lt;strong&gt;1,369&lt;/strong&gt; nights, giving an overall completeness of &lt;strong&gt;72.6%&lt;/strong&gt; in this period.&lt;/p&gt;
&lt;h1&gt;Downloading and displaying data&lt;/h1&gt;
&lt;p&gt;To be completed...&lt;/p&gt;
&lt;h1&gt;Caveat&lt;/h1&gt;
&lt;p&gt;This dataset is provided as-is by the Whipple Collaboration with the hope that it will be useful to students and researchers. We do not advise that these data are used for astronomical research, as we cannot provide instrument response functions, a Monte Carlo model of the instrument, or the details of the numerous modifications to the camera settings during the period.&lt;/p&gt;
&lt;p&gt;It may none-the-less be useful for student projects; to illustrate air-shower images; as a test for image processing software; as a dataset to develop algorithms to work on hexagonally-sampled images; and probably many more.&lt;/p&gt;