/[PAMELA software]/quicklook/dataToXML/Data/compilationInfo/src/INFN/TOF_TimeOfFlight_INFN.c
ViewVC logotype

Contents of /quicklook/dataToXML/Data/compilationInfo/src/INFN/TOF_TimeOfFlight_INFN.c

Parent Directory Parent Directory | Revision Log Revision Log


Revision 1.1.1.1 - (show annotations) (download) (vendor branch)
Tue Apr 25 09:00:20 2006 UTC (19 years, 2 months ago) by kusanagi
Branch: MAIN
CVS Tags: dataToXML1_02/01, dataToXML1_02/00, dataToXML1_03/00, dataToXML1_03/01, dataToXML1_00/00, firstRelease, dataToXML1_01/00, dataToXML1_03_02, HEAD
Changes since 1.1: +0 -0 lines
File MIME type: text/plain
These program extract in an XML format the info contained into the ROOT files generated by YODA from the PAMELA data. To visualize the XML files in a more human readable format a collection of XSL files are given in the Data subfolder.

1 /****************************************************************************
2 * F i l e D a t a
3 * $Id: TOF_TimeOfFlight_INFN.c,v 1.18 2005/03/20 18:26:47 sebastiani Exp $
4 * $Revision: 1.18 $
5 * $Date: 2005/03/20 18:26:47 $
6 * $RCSfile: TOF_TimeOfFlight_INFN.c,v $
7 *
8 ****************************************************************************
9 * S W D e v e l o p m e n t E n v i r o n m e n t
10 *
11 * $Author: sebastiani $
12 * :
13 ****************************************************************************
14 * U p d a t i n g
15
16 * $Log: TOF_TimeOfFlight_INFN.c,v $
17 * Revision 1.18 2005/03/20 18:26:47 sebastiani
18 * *** empty log message ***
19 *
20 * Revision 1.17 2005/02/19 10:19:39 sebastiani
21 * ALM_S4_CALIB_00_HARD,ALM_S4_CALIB_00_SOFT,ALM_S4_128TRIGGER_0 added
22 *
23 * Revision 1.16 2005/01/26 18:46:48 sebastiani
24 * new bug fixes for WS
25 *
26 * Revision 1.15 2005/01/10 14:02:13 faber
27 * TRG,AC_1,AC_2,TOF Error Handler reviewed
28 *
29 * Revision 1.14 2004/11/19 15:41:50 sebastiani
30 * *** empty log message ***
31 *
32 * Revision 1.13 2004/11/19 15:14:52 sebastiani
33 * PRH_EXTERN_{VAR,ARR,TABLE} removed and put them on the autogenerated parameter heeader file
34 *
35 * Revision 1.12 2004/09/17 15:52:00 faber
36 * fix command queue Cmd2Fe/Fe2Daq right invocation for Test funcion inf TOF and TRG
37 *
38 * Revision 1.11 2004/09/17 15:01:00 faber
39 * LU_INFN_LOG flags fixing
40 *
41 * Revision 1.10 2004/09/13 14:16:53 faber
42 * ErrorHandler for TOF/TRG + Test function TOF/TRG
43 *
44 * Revision 1.9 2004/08/31 09:08:35 sebastiani
45 * fix warning
46 *
47 * Revision 1.8 2004/08/27 13:30:39 alfarano
48 * cvs header
49 *
50 * Revision 1.1 2003/10/03 16:12:26 faber
51 * *** empty log message ***
52 *
53 *
54 *****************************************************************************/
55 /*============================= Include File ================================*/
56
57
58 #include <src/INFN/LU_SourceFileID_INFN.h>
59 #define __FILEID__ _TOF_TimeOfFlight_INFN__c
60
61 #include <src/INFN/PRH_ParamHandler_INFN.h>
62 #include <src/INFN/LU_LogUtility_INFN.h>
63 #include <src/INFN/PRH_ParamHandler_INFN_auto.h>
64 LU_DECL_MASK();
65
66 #include <src/INFN/DAQ_IDAQ_INFN.h>
67 #include <src/INFN/CM_Common_INFN.h>
68 #include <src/INFN/KHB_Driver_INFN.h>
69 #include <src/INFN/TOF_TimeOfFlight_INFN.h>
70
71 #include <src/INFN/CH_CommandHandler_INFN.h>
72 #include <src/INFN/HK_Manager_INFN.h>
73 #include <src/INFN/HB_HKBuffer_INFN.h>
74 #include <src/INFN/ALM_Alarm_INFN.h>
75 #include <src/INFN/MH_ModeHandler_INFN.h>
76
77 /*============================ Global define ================================*/
78
79 #define _LU_EXIT_IFERROR(status) do\
80 {\
81 if ((status) != CM_RC_SUCCESSFUL)\
82 {\
83 /* HK_UpdateKHBMaskRegister(KHB_MASK_ALL,KHB_PRESET); */ \
84 // TOF_STATUS = 0; \
85 LU_INFN_LOG(LU_CRITICAL|LU_HA,LU_MASK(__FILEID__),__FILEID__,__LINE__,status);\
86 return(status);\
87 }\
88 } while (0)
89
90
91 /*============================== global types ==============================*/
92
93 //#define TOF_FE_RESET_BASE_ID CH_TOF_FE_RESET_0
94
95 DAQ_DECLBUF(TOF_buf_data,SM_DAQPKTSIZE);
96
97 static DAQ_CMD_BUF TOF_WRITE_PMT_THR_1;
98 static DAQ_CMD_BUF TOF_WRITE_PMT_THR_2;
99 static DAQ_CMD_BUF TOF_WRITE_PMT_THR_3;
100 static DAQ_CMD_BUF TOF_WRITE_PMT_THR_4;
101 static DAQ_CMD_BUF TOF_WRITE_PMT_THR_5;
102 static DAQ_CMD_BUF TOF_WRITE_PMT_THR_6;
103 // static UINT32 TOF_STATUS;
104
105 void TOF_Init_TOF_Buffer()
106 {
107 DAQ_INIT_BUF_FROM_PARAMBUF(TOF_WRITE_PMT_THR_1);
108 DAQ_INIT_BUF_FROM_PARAMBUF(TOF_WRITE_PMT_THR_2);
109 DAQ_INIT_BUF_FROM_PARAMBUF(TOF_WRITE_PMT_THR_3);
110 DAQ_INIT_BUF_FROM_PARAMBUF(TOF_WRITE_PMT_THR_4);
111 DAQ_INIT_BUF_FROM_PARAMBUF(TOF_WRITE_PMT_THR_5);
112 DAQ_INIT_BUF_FROM_PARAMBUF(TOF_WRITE_PMT_THR_6);
113 }
114
115 status_code TOF_Init()
116 {
117 DAQ_BUFFER_INIT(TOF_buf_data);
118
119 TOF_Init_TOF_Buffer();
120
121 TOF_Init_ATOETO();
122
123 return CM_RC_SUCCESSFUL;
124 }
125
126 /*
127 status_code TOF_GetTofStatus(UINT32 *status)
128 {
129 *status = TOF_STATUS;
130 return CM_RC_SUCCESSFUL;
131 }
132 */
133 status_code TOF_Init_ATOETO()
134 {
135 int i;
136
137 // CH_SetAtoEto(CH_TOF_WRITE_MASK,0,1);
138 CH_SetAtoEto(CH_TOF_ALARM_READ,1,2);
139 // CH_SetAtoEto(CH_TOF_ROW_MODE,0,1);
140 // CH_SetAtoEto(CH_TOF_DSP_MODE,0,1);
141 CH_SetAtoEto(CH_TOF_FE_CLEAR,0,1);
142
143 // for(i=0; i < 7; i++)
144 // CH_SetAtoEto(TOF_FE_RESET_BASE_ID+i,0,1);
145
146 CH_SetAtoEto(CH_TOF_WRITE_PMT_THR_H_1,0,1);
147 CH_SetAtoEto(CH_TOF_WRITE_PMT_THR_H_2,0,1);
148 CH_SetAtoEto(CH_TOF_WRITE_PMT_THR_H_3,0,1);
149 CH_SetAtoEto(CH_TOF_WRITE_PMT_THR_H_4,0,1);
150 CH_SetAtoEto(CH_TOF_WRITE_PMT_THR_H_5,0,1);
151 CH_SetAtoEto(CH_TOF_WRITE_PMT_THR_H_6,0,1);
152
153 CH_SetAtoEto(CH_TOF_FE_TDC_ACQ_1,1,2);
154 CH_SetAtoEto(CH_TOF_FE_TDC_ACQ_2,1,2);
155 CH_SetAtoEto(CH_TOF_FE_TDC_ACQ_3,1,2);
156 CH_SetAtoEto(CH_TOF_FE_TDC_ACQ_4,1,2);
157 CH_SetAtoEto(CH_TOF_FE_TDC_ACQ_5,1,2);
158 CH_SetAtoEto(CH_TOF_FE_TDC_ACQ_6,1,2);
159 CH_SetAtoEto(CH_TOF_FE_TDC_ACQ_7,1,2);
160 CH_SetAtoEto(CH_TOF_FE_TDC_ACQ_8,1,2);
161 CH_SetAtoEto(CH_TOF_FE_TDC_ACQ_9,1,2);
162 CH_SetAtoEto(CH_TOF_FE_TDC_ACQ_10,1,2);
163 CH_SetAtoEto(CH_TOF_FE_TDC_ACQ_11,1,2);
164 CH_SetAtoEto(CH_TOF_FE_TDC_ACQ_12,1,2);
165
166 CH_SetAtoEto(CH_TOF_FE_RESET_1,0,1);
167 CH_SetAtoEto(CH_TOF_FE_RESET_2,0,1);
168 CH_SetAtoEto(CH_TOF_FE_RESET_3,0,1);
169 CH_SetAtoEto(CH_TOF_FE_RESET_4,0,1);
170 CH_SetAtoEto(CH_TOF_FE_RESET_5,0,1);
171 CH_SetAtoEto(CH_TOF_FE_RESET_6,0,1);
172
173 CH_PARAMBUF_SET_ATO_ETO(TOF_WRITE_PMT_THR_1,0,1);
174 CH_PARAMBUF_SET_ATO_ETO(TOF_WRITE_PMT_THR_2,0,1);
175 CH_PARAMBUF_SET_ATO_ETO(TOF_WRITE_PMT_THR_3,0,1);
176 CH_PARAMBUF_SET_ATO_ETO(TOF_WRITE_PMT_THR_4,0,1);
177 CH_PARAMBUF_SET_ATO_ETO(TOF_WRITE_PMT_THR_5,0,1);
178 CH_PARAMBUF_SET_ATO_ETO(TOF_WRITE_PMT_THR_6,0,1);
179 }
180
181 status_code TOF_Initialization()
182 {
183 status_code status;
184 DAQ_CMD_BUF* auto_buf;
185 UINT16 alarm_reg;
186
187 // TOF_STATUS = 1;
188
189 DAQ_Format_CMD_Empty(&TOF_buf_data);
190 status = DAQ_ResetPIF(DAQ_DEFAULT_ETO_TICS,DAQ_MAX_DTO_TICS,SM_DAQSETUP,HB_PKTTYPE_TOF_INIT);
191
192 CH_GetBuf(CH_TOF_FE_CLEAR,&auto_buf );
193 DAQ_Format_Cmd2Fe(&TOF_buf_data,auto_buf,DAQ_FE_TOF);
194
195 CH_GetBuf(CH_DUMMY_COMMAND,&auto_buf);
196 DAQ_Format_Cmd2Fe(&TOF_buf_data,auto_buf,DAQ_FE_SPARE);
197
198 DAQ_Format_Cmd2Fe(&TOF_buf_data,&TOF_WRITE_PMT_THR_1,DAQ_FE_TOF);
199 DAQ_Format_Cmd2Fe(&TOF_buf_data,auto_buf,DAQ_FE_SPARE);
200 DAQ_Format_Cmd2Fe(&TOF_buf_data,&TOF_WRITE_PMT_THR_2,DAQ_FE_TOF);
201 DAQ_Format_Cmd2Fe(&TOF_buf_data,auto_buf,DAQ_FE_SPARE);
202 DAQ_Format_Cmd2Fe(&TOF_buf_data,&TOF_WRITE_PMT_THR_3,DAQ_FE_TOF);
203 DAQ_Format_Cmd2Fe(&TOF_buf_data,auto_buf,DAQ_FE_SPARE);
204 DAQ_Format_Cmd2Fe(&TOF_buf_data,&TOF_WRITE_PMT_THR_4,DAQ_FE_TOF);
205 DAQ_Format_Cmd2Fe(&TOF_buf_data,auto_buf,DAQ_FE_SPARE);
206 DAQ_Format_Cmd2Fe(&TOF_buf_data,&TOF_WRITE_PMT_THR_5,DAQ_FE_TOF);
207 DAQ_Format_Cmd2Fe(&TOF_buf_data,auto_buf,DAQ_FE_SPARE);
208 DAQ_Format_Cmd2Fe(&TOF_buf_data,&TOF_WRITE_PMT_THR_6,DAQ_FE_TOF);
209 DAQ_Format_Cmd2Fe(&TOF_buf_data,auto_buf,DAQ_FE_SPARE);
210
211 status = DAQ_StoreCmdQueue2PIF(SM_CALEXP0,&TOF_buf_data);
212 LU_EXIT_IFERROR(status);
213 status = DAQ_SendCmdQueue2CMDIF(SM_CALEXP0);
214 LU_EXIT_IFERROR(status);
215
216 // TOF_STATUS = 0;
217
218 return status;
219 }
220
221
222 status_code TOF_Test_Plan(CH_COMMANDS first,
223 CH_COMMANDS loop_first,CH_COMMANDS loop_second) {
224 status_code s;
225 DAQ_CMD_BUF *gmt,*tfc;
226 DAQ_CMD_BUF *p_first;
227 DAQ_CMD_BUF *p_loop_first;
228 DAQ_CMD_BUF *p_loop_second;
229 DAQ_FE fe_tb = DAQ_SELECT_TRIG(PRH_VAR_TB_LINK);
230 int i;
231
232 CH_GetBuf(CH_TB_GIVE_ME_TRIGGER,&gmt);
233 CH_GetBuf(CH_TOF_FE_CLEAR,&tfc);
234 CH_GetBuf(first,&p_first);
235 CH_GetBuf(loop_first,&p_loop_first);
236 CH_GetBuf(loop_second,&p_loop_second);
237
238 s=DAQ_Format_Cmd2Fe(&TOF_buf_data,p_first,DAQ_FE_TOF);
239
240 LU_EXIT_IFERROR(s);
241
242 for(i=0;i<9;i++) {
243 s=DAQ_Format_Cmd2Fe(&TOF_buf_data,gmt,fe_tb);
244 LU_EXIT_IFERROR(s);
245 s=DAQ_Format_Fe2Daq(&TOF_buf_data,p_loop_first,DAQ_FE_TOF);
246 LU_EXIT_IFERROR(s);
247 s=DAQ_Format_Fe2Daq(&TOF_buf_data,p_loop_second,DAQ_FE_TOF);
248 LU_EXIT_IFERROR(s);
249 s =DAQ_Format_Cmd2Fe(&TOF_buf_data,tfc,DAQ_FE_TOF);
250 LU_EXIT_IFERROR(s);
251 }
252 return s;
253 }
254
255 #if 0
256 status_code TOF_Test() {
257 status_code s;
258 DAQ_CMD_BUF *cmd;
259
260 DAQ_Format_CMD_Empty(&TOF_buf_data);
261 s = DAQ_ResetPIF(DAQ_DEFAULT_ETO_TICS,DAQ_DEFAULT_DTO_TICS,
262 SM_DAQSETUP,HB_PKTTYPE_TEST_TOF);
263 LU_EXIT_IFERROR(s);
264
265 CH_GetBuf(CH_TOF_FE_CLEAR,&cmd);
266 s=DAQ_Format_Cmd2Fe(&TOF_buf_data,cmd,DAQ_FE_TOF);
267 LU_EXIT_IFERROR(s);
268
269 CH_GetBuf(CH_DUMMY_COMMAND,&cmd);
270 s=DAQ_Format_Cmd2Fe(&TOF_buf_data,cmd,DAQ_FE_SPARE);
271 LU_EXIT_IFERROR(s);
272
273 if(PRH_ARR_TOF_PLAN[0])
274 s = TOF_Test_Plan(CH_TOF_WRITE_PMT_THR_H_1,CH_TOF_FE_TDC_ACQ_1,CH_TOF_FE_TDC_ACQ_2);
275 LU_EXIT_IFERROR(s);
276
277 if(PRH_ARR_TOF_PLAN[1])
278 s = TOF_Test_Plan(CH_TOF_WRITE_PMT_THR_H_2,CH_TOF_FE_TDC_ACQ_3,CH_TOF_FE_TDC_ACQ_4);
279 LU_EXIT_IFERROR(s);
280
281 if(PRH_ARR_TOF_PLAN[2])
282 s = TOF_Test_Plan(CH_TOF_WRITE_PMT_THR_H_3,CH_TOF_FE_TDC_ACQ_5,CH_TOF_FE_TDC_ACQ_6);
283 LU_EXIT_IFERROR(s);
284
285 if(PRH_ARR_TOF_PLAN[3])
286 s = TOF_Test_Plan(CH_TOF_WRITE_PMT_THR_H_4,CH_TOF_FE_TDC_ACQ_7,CH_TOF_FE_TDC_ACQ_8);
287 LU_EXIT_IFERROR(s);
288
289 if(PRH_ARR_TOF_PLAN[4])
290 s = TOF_Test_Plan(CH_TOF_WRITE_PMT_THR_H_5,CH_TOF_FE_TDC_ACQ_9,CH_TOF_FE_TDC_ACQ_10);
291 LU_EXIT_IFERROR(s);
292
293 if(PRH_ARR_TOF_PLAN[5])
294 s = TOF_Test_Plan(CH_TOF_WRITE_PMT_THR_H_6,CH_TOF_FE_TDC_ACQ_11,CH_TOF_FE_TDC_ACQ_12);
295 LU_EXIT_IFERROR(s);
296
297 s = DAQ_StoreCmdQueue2PIF(SM_CALEXP2,&TOF_buf_data);
298 LU_EXIT_IFERROR(s);
299
300 s = DAQ_SendCmd2PIFWaitDAQReply(SM_CALEXP2,
301 DAQ_STORE_MM,NULL,DAQ_NO_STORE_RAM);
302 return s;
303
304 }
305 #endif
306
307
308 status_code TOF_Error_Handler()
309 {
310 status_code status = CM_RC_SUCCESSFUL;
311 DAQ_CMD_BUF* auto_buf;
312 UINT16 khb_sr;
313
314 DAQ_Format_CMD_Empty(&TOF_buf_data);
315
316 CH_GetBuf(CH_TOF_ALARM_READ,&auto_buf);
317 DAQ_Format_Fe2Daq(&TOF_buf_data,auto_buf,DAQ_FE_TOF);
318
319 DAQ_StoreCmdQueue2PIF(SM_CALEXP3,&TOF_buf_data);
320
321 status = DAQ_SendCmd2PIFWaitDAQReply(SM_CALEXP3,DAQ_STORE_MM,&TOF_buf_data,DAQ_STORE_RAM);
322
323 if(status != CM_RC_SUCCESSFUL || TOF_buf_data.len < SM_PKTHEADER_LEN+3) {
324 status=CM_RC_DO_RESET_IF_ALM;
325 }else{
326 if( ( (TOF_buf_data.buf[SM_PKTHEADER_LEN] & 0x7F) != 0) ||
327 ( (TOF_buf_data.buf[SM_PKTHEADER_LEN+1] & 0xFF) != 0)
328 ) {
329 status=HK_ReadKHBStatusRegister(&khb_sr);
330
331
332 if((khb_sr & (KHB_STS_ALARM_IDAQ | KHB_STS_ALARM_TOF))
333 || status!=CM_RC_SUCCESSFUL)
334 return CM_RC_DO_POWER_OFF_ON;
335 if( PRH_VAR_GOM_DURING_ALARM == MH_GOM_INITIALIZATION ||
336 PRH_VAR_GOM_DURING_ALARM == MH_GOM_ACQUISITION ) {
337 return CM_RC_DO_RESET_IF_ALM;
338 }
339
340 }
341 }
342
343 return status;
344 }
345
346
347

  ViewVC Help
Powered by ViewVC 1.1.23