| 1 | ===============
|
|---|
| 2 | Getting Started
|
|---|
| 3 | ===============
|
|---|
| 4 |
|
|---|
| 5 | 1) Get an account at the FACT data center at ISDC
|
|---|
| 6 | 2) Setup your environment variables
|
|---|
| 7 | 3) Checkout the pyfact software repository
|
|---|
| 8 | 4) Try a few examples
|
|---|
| 9 |
|
|---|
| 10 | 1. Important links
|
|---|
| 11 | =================================
|
|---|
| 12 |
|
|---|
| 13 | **FACT data center at ISDC** <http://www.isdc.unige.ch/fact/datacenter>**
|
|---|
| 14 | here you find instructions how to get an account, how to set it up and how to use it
|
|---|
| 15 |
|
|---|
| 16 | **SVN repository** <https://fact.isdc.unige.ch/svn/fact/>
|
|---|
| 17 | hosts all FACT software (including pyfact)
|
|---|
| 18 |
|
|---|
| 19 | **FACT run database** <https://www.fact-project.org/run_db/db/fact_runinfo.php>
|
|---|
| 20 | here you find information about all available runs
|
|---|
| 21 |
|
|---|
| 22 | **eLogbook** <https://www.fact-project.org/logbook/>
|
|---|
| 23 | telescope logbook used since Dec. 1, 2012; for logbook information before this date have a look here: <http://fact.ethz.ch/FACTelog/index.jsp>
|
|---|
| 24 |
|
|---|
| 25 | **FACT La Palma pages** <https://www.fact-project.org/>
|
|---|
| 26 | plenty of information concerning the telescope in La Palma
|
|---|
| 27 |
|
|---|
| 28 | 2. Environment variables
|
|---|
| 29 | ========================
|
|---|
| 30 | set the following env variables depending on the SHELL you are using, for instance in .bashrc or .tcshrc
|
|---|
| 31 |
|
|---|
| 32 | * **ROOTSYS**: /swdev_nfs/root_v5.28.00
|
|---|
| 33 | * **PATH**: add $ROOTSYS/bin
|
|---|
| 34 | * **PATH**: add /swdev_nfs/FACT++
|
|---|
| 35 | * **LD_LIBRARY_PATH**: $ROOTSYS/lib:/swdev_nfs/FACT++/.libs
|
|---|
| 36 | * **PYTHONPATH**: $ROOTSYS/lib
|
|---|
| 37 | * **PYTHONPATH**: add all directories where python should search for modules. At least:
|
|---|
| 38 | * pyscripts/pyfact
|
|---|
| 39 | * pyscript/tools
|
|---|
| 40 | * pyscripts/ecamples
|
|---|
| 41 |
|
|---|
| 42 | the absolute path depends on where you have checked (or will check) out the pyscripts repository
|
|---|
| 43 |
|
|---|
| 44 | 3. Check out the repository
|
|---|
| 45 | ===========================
|
|---|
| 46 | svn co https://fact.isdc.unige.ch/svn/fact/tools/pyscripts/
|
|---|
| 47 |
|
|---|
| 48 | 4. Create pyfits_h.so library
|
|---|
| 49 | =============================
|
|---|
| 50 | FACT data are stored in (gzipped) fits files, but the data files are too large to be read by the existing tools:
|
|---|
| 51 |
|
|---|
| 52 | `pyfits <http://www.stsci.edu/institute/software_hardware/pyfits>` which uses `cfitsio <http://heasarc.gsfc.nasa.gov/fitsio/>`_.
|
|---|
| 53 |
|
|---|
| 54 | To mitigate this problem a C++ class defined in fits.h [#f1]_ is used. A simple possibility to create an interface of this C++ class is to use ROOT and later to import it using the
|
|---|
| 55 | `pyroot <http://root.cern.ch/drupal/category/package-context/pyroot>`_ module.
|
|---|
| 56 |
|
|---|
| 57 | got to the directory: pyscripts/pyfact
|
|---|
| 58 |
|
|---|
| 59 | simple::
|
|---|
| 60 |
|
|---|
| 61 | [lusterma@isdc-cn02 pyfact]$ root
|
|---|
| 62 | ROOT 5.28/00 (trunk@37585, Dec 14 2010, 15:20:27 on linuxx8664gcc)
|
|---|
| 63 | CINT/ROOT C/C++ Interpreter version 5.18.00, July 2, 2010
|
|---|
| 64 | Type ? for help. Commands must be C++ statements.
|
|---|
| 65 | Enclose multiple statements between { }.
|
|---|
| 66 |
|
|---|
| 67 | root [0] .L fits.h++
|
|---|
| 68 | Info in <TUnixSystem::ACLiC>: creating shared library /home_nfs/isdc/lusterma/pyscripts/pyfact/./fits_h.so
|
|---|
| 69 | root [1]
|
|---|
| 70 |
|
|---|
| 71 | This might not work for whatenver reason then it should be done like this::
|
|---|
| 72 |
|
|---|
| 73 | $rootcint -f my_dict.C -c fits.h izstream.h
|
|---|
| 74 | $g++ -fPIC -c -I$ROOTSYS/include my_dict.C -o my_dict.o
|
|---|
| 75 | $g++ -o fits_h.so -shared my_dict.o
|
|---|
| 76 |
|
|---|
| 77 | Now you can check if the reading rawdata is working:
|
|---|
| 78 |
|
|---|
| 79 | $ ./pyfact.py
|
|---|
| 80 |
|
|---|
| 81 | this should print some data from a few events
|
|---|
| 82 |
|
|---|
| 83 | 5. Run examples
|
|---|
| 84 | ===============
|
|---|
| 85 |
|
|---|
| 86 | *datafilepath* and *calibfilepath* should be adjusted in case you are not working
|
|---|
| 87 | on the ISDC cluster.
|
|---|
| 88 |
|
|---|
| 89 | explore class RawData::
|
|---|
| 90 |
|
|---|
| 91 | import pyfact
|
|---|
| 92 | datafilepath = '/data00/fact-construction/raw/2012/03/04/20120304_018.fits.gz'
|
|---|
| 93 | calibfilepath = '/data00/fact-construction/raw/2012/03/04/20120304_012.drs.fits.gz'
|
|---|
| 94 | run = pyfact.RawData( datafilepath, calibfilepath, return_dict = True)
|
|---|
| 95 | event = run.next()
|
|---|
| 96 |
|
|---|
| 97 | type(event)
|
|---|
| 98 |
|
|---|
| 99 | print 70*'*'
|
|---|
| 100 | for key in event:
|
|---|
| 101 | print 'key :', key
|
|---|
| 102 | print 'value:', event[key]
|
|---|
| 103 | print 70*'*'
|
|---|
| 104 |
|
|---|
| 105 | loop over RawData::
|
|---|
| 106 |
|
|---|
| 107 | import pyfact
|
|---|
| 108 | datafilepath = '/data00/fact-construction/raw/2012/03/04/20120304_018.fits.gz'
|
|---|
| 109 | calibfilepath = '/data00/fact-construction/raw/2012/03/04/20120304_012.drs.fits.gz'
|
|---|
| 110 | run = pyfact.RawData( datafilepath, calibfilepath, return_dict = True)
|
|---|
| 111 |
|
|---|
| 112 | for event in run:
|
|---|
| 113 | print 'event_id:', event['event_id']
|
|---|
| 114 | # the data can be found in event['acal_data']
|
|---|
| 115 |
|
|---|
| 116 | .. rubric:: Footnotes
|
|---|
| 117 | .. [#f1] fits.h (here named pyfits.h) is part of MARS and was written by T.Bretz, it was added to this repository for convienience |
|---|