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 |
---|