Changeset 14119
- Timestamp:
- 06/08/12 15:31:39 (13 years ago)
- Location:
- fact/tools/pyscripts/doc
- Files:
-
- 3 edited
Legend:
- Unmodified
- Added
- Removed
-
fact/tools/pyscripts/doc/classes.rst
r14109 r14119 5 5 module pyfact 6 6 ============= 7 8 rawdata access 9 -------------- 10 .. autoclass:: pyfact.RawData 11 :members: 12 13 SlowData access 14 --------------- 15 .. autoclass:: pyfact.SlowData 16 :members: 17 18 19 fnames of a data run 20 -------------------- 21 .. autoclass:: pyfact.fnames 7 .. automodule:: pyfact 22 8 :members: 23 9 … … 25 11 ================= 26 12 .. automodule:: extractor 13 :members: 14 15 Plotting 16 ==================== 17 .. automodule:: plotters 27 18 :members: 28 19 -
fact/tools/pyscripts/doc/examples.rst
r13151 r14119 2 2 Examples 3 3 ======== 4 5 6 RawData 7 ======== 8 9 one may interactively play with the two most important classes *RawData* and 10 *SlowData* from module pyfact... 11 12 *datafilepath* and *calibfilepath* should be adjusted in case you are not working 13 on the ISDC cluster. 14 15 explore class RawData:: 16 17 from pyfact import RawData 18 # or from pyfact import * 19 20 datafilepath = '/fact/raw/2012/03/04/20120304_018.fits.gz' 21 calibfilepath = '/fact/raw/2012/03/04/20120304_012.drs.fits.gz' 22 run = RawData(datafilepath, calibfilepath) 23 event = run.next() 24 25 type(event) 26 27 print 70*'*' 28 for key in event: 29 print 'key :', key 30 print 'value:', event[key] 31 print 70*'*' 32 33 for historical reasons, an event contains *data* and *acal_data*, where *acal_data* 34 would be the DRS amplitude calibrated data, and *data* would be uncalibrated. 35 But since the calibration was moved into a C++ class, for better performance, 36 these keys now contains the same data. 37 38 loop over RawData:: 39 40 from pyfact import RawData 41 # or from pyfact import * 42 43 datafilepath = '/fact/raw/2012/03/04/20120304_018.fits.gz' 44 calibfilepath = '/fact/raw/2012/03/04/20120304_012.drs.fits.gz' 45 run = RawData(datafilepath, calibfilepath) 46 47 for event in run: 48 print 'event_id:', event['event_id'] 49 # the data can be found in event['data'] 50 51 SlowData 52 ========= 53 54 have a look at some SlowData:: 55 56 :~$ cd /fact/aux/2012/05/30 57 :/fact/aux/2012/05/30$ python 58 59 from pyfact import SlowData 60 file = SlowData('20120530.FTM_CONTROL_TRIGGER_RATES.fits') 61 file.show() 62 63 64 have a look at the *columns*, that are available:: 65 66 'columns': {'BoardRate': (40L, 4L, 'E', 'Hz'), 67 'ElapsedTime': (1L, 4L, 'E', 'sec'), 68 'FTMtimeStamp': (1L, 8L, 'K', 'us'), 69 'OnTime': (1L, 4L, 'E', 'sec'), 70 'OnTimeCounter': (1L, 8L, 'K', 'us'), 71 'PatchRate': (160L, 4L, 'E', 'Hz'), 72 'QoS': (1L, 4L, 'J', ''), 73 'Time': (1L, 8L, 'D', 'MJD'), 74 'TriggerCounter': (1L, 4L, 'J', 'int'), 75 'TriggerRate': (1L, 4L, 'E', 'Hz')}, 76 77 choose the *columns* you would like to retrieve from the file:: 78 79 file.register('TriggerRate') 80 file.register('Time') 81 # or in case you are unsure 82 file.register('all') 83 84 check, what happened. file has got some new members:: 85 86 file.show() 87 88 but they are all zero. Now one should call *next()* in order to get 89 the file contents row by row:: 90 91 file.next() 92 file.show() 93 94 or loop over the file:: 95 96 for row in file: 97 print row.Time, row. OnTime 98 99 *row* is just be a copy of *file*, but inside the for loop, I think it is 100 convenient to access members of *row* rather than members of *file*. 101 I is just easier to understand for the reader, I think. 4 102 5 103 calling a system command … … 17 115 18 116 19 -
fact/tools/pyscripts/doc/getting_started.rst
r14106 r14119 112 112 This should work at ISDC only, but if it does not work, please ask somebody for help. 113 113 114 6. Tiny examples115 ===============116 114 117 one may interactively play with the two most important classes *RawData* and 118 *SlowData* from module pyfact... 119 120 *datafilepath* and *calibfilepath* should be adjusted in case you are not working 121 on the ISDC cluster. 122 123 explore class RawData:: 124 125 from pyfact import RawData 126 # or from pyfact import * 127 128 datafilepath = '/fact/raw/2012/03/04/20120304_018.fits.gz' 129 calibfilepath = '/fact/raw/2012/03/04/20120304_012.drs.fits.gz' 130 run = RawData(datafilepath, calibfilepath) 131 event = run.next() 132 133 type(event) 134 135 print 70*'*' 136 for key in event: 137 print 'key :', key 138 print 'value:', event[key] 139 print 70*'*' 140 141 for historical reasons, an event contains *data* and *acal_data*, where *acal_data* 142 would be the DRS amplitude calibrated data, and *data* would be uncalibrated. 143 But since the calibration was moved into a C++ class, for better performance, 144 these keys now contains the same data. 145 146 loop over RawData:: 147 148 from pyfact import RawData 149 # or from pyfact import * 150 151 datafilepath = '/fact/raw/2012/03/04/20120304_018.fits.gz' 152 calibfilepath = '/fact/raw/2012/03/04/20120304_012.drs.fits.gz' 153 run = RawData(datafilepath, calibfilepath) 154 155 for event in run: 156 print 'event_id:', event['event_id'] 157 # the data can be found in event['data'] 158 159 have a look at some SlowData:: 160 161 :~$ cd /fact/aux/2012/05/30 162 :/fact/aux/2012/05/30$ python 163 164 from pyfact import SlowData 165 file = SlowData('20120530.FTM_CONTROL_TRIGGER_RATES.fits') 166 file.show() 167 168 169 have a look at the *columns*, that are available:: 170 171 'columns': {'BoardRate': (40L, 4L, 'E', 'Hz'), 172 'ElapsedTime': (1L, 4L, 'E', 'sec'), 173 'FTMtimeStamp': (1L, 8L, 'K', 'us'), 174 'OnTime': (1L, 4L, 'E', 'sec'), 175 'OnTimeCounter': (1L, 8L, 'K', 'us'), 176 'PatchRate': (160L, 4L, 'E', 'Hz'), 177 'QoS': (1L, 4L, 'J', ''), 178 'Time': (1L, 8L, 'D', 'MJD'), 179 'TriggerCounter': (1L, 4L, 'J', 'int'), 180 'TriggerRate': (1L, 4L, 'E', 'Hz')}, 181 182 choose the *columns* you would like to retrieve from the file:: 183 184 file.register('TriggerRate') 185 file.register('Time') 186 # or in case you are unsure 187 file.register('all') 188 189 check, what happened. file has got some new members:: 190 191 file.show() 192 193 but they are all zero. Now one should call *next()* in order to get 194 the file contents row by row:: 195 196 file.next() 197 file.show() 198 199 or loop over the file:: 200 201 for row in file: 202 print row.Time, row. OnTime 203 204 *row* is just be a copy of *file*, but inside the for loop, I think it is 205 convenient to access members of *row* rather than members of *file*. 206 I is just easier to understand for the reader, I think. 207 208 7. Old way of creating the so files 115 6. Old way of creating the so files 209 116 =================================== 210 117
Note:
See TracChangeset
for help on using the changeset viewer.