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

Annotation of /quicklook/dataToXML/Data/compilationInfo/src/INFN/TRG_Trigger_INFN.c

Parent Directory Parent Directory | Revision Log Revision Log


Revision 1.1.1.1 - (hide 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 kusanagi 1.1 /****************************************************************************
2     * F i l e D a t a
3     * $Id: TRG_Trigger_INFN.c,v 1.27 2005/03/06 14:54:46 sebastiani Exp $
4     * $Revision: 1.27 $
5     * $Date: 2005/03/06 14:54:46 $
6     * $RCSfile: TRG_Trigger_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: TRG_Trigger_INFN.c,v $
17     * Revision 1.27 2005/03/06 14:54:46 sebastiani
18     * version running on 06 03 2005
19     *
20     * Revision 1.26 2005/02/22 18:09:25 sebastiani
21     * various bugfixes
22     *
23     * Revision 1.25 2005/01/10 14:02:13 faber
24     * TRG,AC_1,AC_2,TOF Error Handler reviewed
25     *
26     * Revision 1.24 2004/11/19 15:41:50 sebastiani
27     * *** empty log message ***
28     *
29     * Revision 1.23 2004/11/19 15:14:52 sebastiani
30     * PRH_EXTERN_{VAR,ARR,TABLE} removed and put them on the autogenerated parameter heeader file
31     *
32     * Revision 1.22 2004/10/18 15:09:24 faber
33     * *** empty log message ***
34     *
35     * Revision 1.21 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.20 2004/09/17 15:01:00 faber
39     * LU_INFN_LOG flags fixing
40     *
41     * Revision 1.19 2004/09/13 14:16:53 faber
42     * ErrorHandler for TOF/TRG + Test function TOF/TRG
43     *
44     * Revision 1.18 2004/09/09 14:52:55 sebastiani
45     * using PreparePage to send cmd to idaq/FE
46     * added some test
47     * added trigger param
48     * added/tested Force Send KHB_to_FE
49     * added/tested Send Cmd to IDAQ/FE
50     *
51     * Revision 1.17 2004/09/09 11:24:10 faber
52     * *** empty log message ***
53     *
54     * Revision 1.16 2004/08/27 13:30:39 alfarano
55     * cvs header
56     *
57     * Revision 1.1 2003/10/03 16:12:26 faber
58     * *** empty log message ***
59     *
60     *
61     *****************************************************************************/
62    
63     /*============================= Include File ================================*/
64    
65    
66     #include <src/INFN/LU_SourceFileID_INFN.h>
67     #define __FILEID__ _TRG_Trigger_INFN__c
68     #include <src/INFN/PRH_ParamHandler_INFN.h>
69     #include <src/INFN/LU_LogUtility_INFN.h>
70     #include <src/INFN/PRH_ParamHandler_INFN_auto.h>
71     LU_DECL_MASK();
72     #include <src/INFN/DAQ_IDAQ_INFN.h>
73     #include <src/INFN/CM_Common_INFN.h>
74     #include <src/INFN/CH_CommandHandler_INFN.h>
75     #include <src/INFN/TRG_Trigger_INFN.h>
76     #include <src/INFN/KHB_Driver_INFN.h>
77     #include <src/INFN/HK_Manager_INFN.h>
78     #include <src/INFN/HB_HKBuffer_INFN.h>
79     #include <src/INFN/ALM_Alarm_INFN.h>
80     #include <src/INFN/MH_ModeHandler_INFN.h>
81    
82     /*============================ Global define ================================*/
83    
84    
85     #define TRG_TB_SET_TRIGGER_CONF_BASE_ID CH_TB_SET_TRIGGER_CONF_01
86     #define TRG_TB_SET_BUSY_CONTROL_BASE_ID CH_TB_SET_BUSY_CONTROL_0
87    
88    
89     DAQ_DECLBUF(TRG_TempPif0,TRG_MAXTEMPBUFFER);
90    
91    
92     static DAQ_CMD_BUF TB_SET_ALARM_MASK;
93    
94     static DAQ_CMD_BUF TB_SET_PMT_MASK;
95    
96     static DAQ_CMD_BUF TB_SET_S4_CAL_MASK;
97     static DAQ_CMD_BUF TB_SET_BUSY_MASK_IDAQ_HOT;
98     static DAQ_CMD_BUF TB_SET_BUSY_MASK_IDAQ_COLD;
99    
100     static int TB_STATUS;
101    
102    
103    
104    
105     status_code Init_ParamBuffers()
106     {
107     DAQ_INIT_BUF_FROM_PARAMBUF(TB_SET_ALARM_MASK);
108     DAQ_INIT_BUF_FROM_PARAMBUF(TB_SET_PMT_MASK);
109     DAQ_INIT_BUF_FROM_PARAMBUF(TB_SET_S4_CAL_MASK);
110     DAQ_INIT_BUF_FROM_PARAMBUF(TB_SET_BUSY_MASK_IDAQ_HOT);
111     DAQ_INIT_BUF_FROM_PARAMBUF(TB_SET_BUSY_MASK_IDAQ_COLD);
112     }
113    
114     status_code TRG_Init_ETOATO()
115     {
116     int i;
117     status_code status;
118     CH_PARAMBUF_SET_ATO_ETO(TB_SET_ALARM_MASK,0,1);
119    
120    
121     CH_SetAtoEto(CH_TB_READ_ALARM_MASK,1,2);
122     CH_SetAtoEto(CH_TB_READ_ALARM,1,2);
123    
124     CH_PARAMBUF_SET_ATO_ETO(TB_SET_PMT_MASK,0,1);
125    
126     CH_SetAtoEto(CH_TB_READ_PMT_MASK,1,2);
127    
128     CH_PARAMBUF_SET_ATO_ETO(TB_SET_S4_CAL_MASK,0,1);
129    
130     CH_SetAtoEto(CH_TB_READ_S4_CAL_MASK,1,2);
131     CH_PARAMBUF_SET_ATO_ETO(TB_SET_BUSY_MASK_IDAQ_HOT,0,1);
132     CH_PARAMBUF_SET_ATO_ETO(TB_SET_BUSY_MASK_IDAQ_COLD,0,1);
133    
134     CH_SetAtoEto(CH_TB_READ_BUSY_MASK,1,2);
135    
136     for (i=0; i < 31; i++)
137     CH_SetAtoEto(TRG_TB_SET_TRIGGER_CONF_BASE_ID+i,0,1);
138    
139     CH_SetAtoEto(CH_TB_READ_TRIGGER_CONF,1,2);
140     CH_SetAtoEto(CH_TB_READ_PATTERN_TRIGGER,1,2);
141     CH_SetAtoEto(CH_TB_GIVE_ME_TRIGGER,0,1);
142     CH_SetAtoEto(CH_TB_OPEN_CALIB_GATE,0,1);
143     CH_SetAtoEto(CH_TB_CLOSE_CALIB_GATE,0,1);
144     CH_SetAtoEto(CH_TB_READ_PATTERN_BUSY,1,2);
145    
146     for (i=0; i < 8; i++)
147     CH_SetAtoEto(TRG_TB_SET_BUSY_CONTROL_BASE_ID+i,0,1);
148    
149     CH_SetAtoEto(CH_TB_START_ACQ,0,1);
150     CH_SetAtoEto(CH_TB_STOP_ACQ,0,1);
151     CH_SetAtoEto(CH_TB_READ_PMT_COUNT1,1,3);
152     CH_SetAtoEto(CH_TB_READ_PMT_COUNT2,1,3);
153     CH_SetAtoEto(CH_TB_READ_S4_CAL_COUNT,1,2);
154     CH_SetAtoEto(CH_TB_READ_D_L_TIME,1,2);
155     CH_SetAtoEto(CH_TB_READ_EVENT_COUNT,1,2);
156     CH_SetAtoEto(CH_TB_READ_PMT_PLANE,1,2);
157     CH_SetAtoEto(CH_TB_READ_TRIGGER_RATE,1,2);
158     CH_SetAtoEto(CH_DUMMY_COMMAND,0,1);
159     }
160    
161     status_code TRG_Init()
162     {
163     DAQ_BUFFER_INIT(TRG_TempPif0);
164     Init_ParamBuffers();
165     TRG_Init_ETOATO();
166    
167     return CM_RC_SUCCESSFUL;
168     }
169    
170     status_code TRG_Initialization()
171     {
172     status_code status;
173     DAQ_CMD_BUF* auto_buf;
174     CM_HOT_COLD hc;
175     DAQ_FE fe_tb = DAQ_SELECT_TRIG(PRH_VAR_TB_LINK);
176     volatile static BOOL do_tb_set_pmt_mask=TRUE;
177    
178     TB_STATUS = 1;
179     #warning perche' e' commentato questo ?
180     // DAQ_ResetPIF(DAQ_DEFAULT_ETO_TICS,DAQ_DEFAULT_DTO_TICS,SM_DAQSETUP,HB_PKTTYPE_TRG_INIT);
181    
182     DAQ_Format_CMD_Empty(&TRG_TempPif0);
183    
184     DAQ_Format_Cmd2Fe(&TRG_TempPif0,&TB_SET_ALARM_MASK,fe_tb);
185    
186     CH_GetBuf(CH_DUMMY_COMMAND,&auto_buf );
187     DAQ_Format_Cmd2Fe(&TRG_TempPif0,auto_buf,DAQ_FE_SPARE);
188    
189     if(do_tb_set_pmt_mask)
190     DAQ_Format_Cmd2Fe(&TRG_TempPif0,&TB_SET_PMT_MASK,fe_tb);
191    
192     DAQ_Format_Cmd2Fe(&TRG_TempPif0,auto_buf,DAQ_FE_SPARE);
193     DAQ_Format_Cmd2Fe(&TRG_TempPif0,&TB_SET_S4_CAL_MASK,fe_tb);
194     DAQ_Format_Cmd2Fe(&TRG_TempPif0,auto_buf,DAQ_FE_SPARE);
195    
196     status=HK_KHB_GetHotCold(&hc);
197     LU_EXIT_IFERROR(status);
198    
199     if(hc == CM_HOT) {
200     DAQ_Format_Cmd2Fe(&TRG_TempPif0,&TB_SET_BUSY_MASK_IDAQ_HOT,fe_tb);
201     }else{
202     DAQ_Format_Cmd2Fe(&TRG_TempPif0,&TB_SET_BUSY_MASK_IDAQ_COLD,fe_tb);
203     }
204    
205     DAQ_Format_Cmd2Fe(&TRG_TempPif0,auto_buf,DAQ_FE_SPARE);
206    
207     status = DAQ_StoreCmdQueue2PIF(SM_CALEXP0,&TRG_TempPif0);
208     // if (status) loginternal
209     LU_EXIT_IFERROR(status);
210    
211     status = DAQ_SendCmdQueue2CMDIF(SM_CALEXP0);
212     LU_EXIT_IFERROR(status);
213    
214     TB_STATUS = 0;
215    
216     return status;
217     }
218    
219     status_code TRG_Test()
220     {
221     status_code status;
222     CM_HOT_COLD hc;
223     DAQ_CMD_BUF* auto_buf, *dummy_cmd;
224     DAQ_FE fe_tb = DAQ_SELECT_TRIG(PRH_VAR_TB_LINK);
225    
226     CH_GetBuf(CH_DUMMY_COMMAND,&dummy_cmd);
227    
228     // HK_UpdateKHBMaskRegister(KHB_MASK_ALL,KHB_PRESET);
229     DAQ_Format_CMD_Empty(&TRG_TempPif0);
230    
231     DAQ_Format_Cmd2Fe(&TRG_TempPif0,&TB_SET_ALARM_MASK,fe_tb);
232    
233     DAQ_Format_Cmd2Fe(&TRG_TempPif0,dummy_cmd,DAQ_FE_SPARE);
234    
235     CH_GetBuf(CH_TB_READ_ALARM_MASK,&auto_buf );
236     DAQ_Format_Fe2Daq(&TRG_TempPif0,auto_buf,fe_tb);
237    
238    
239     DAQ_Format_Fe2Daq(&TRG_TempPif0,&TB_SET_PMT_MASK,fe_tb);
240    
241     DAQ_Format_Cmd2Fe(&TRG_TempPif0,dummy_cmd,DAQ_FE_SPARE);
242    
243     CH_GetBuf(CH_TB_READ_PMT_MASK,&auto_buf);
244     DAQ_Format_Fe2Daq(&TRG_TempPif0,auto_buf,fe_tb);
245    
246     DAQ_Format_Fe2Daq(&TRG_TempPif0,&TB_SET_S4_CAL_MASK,fe_tb);
247    
248     DAQ_Format_Cmd2Fe(&TRG_TempPif0,dummy_cmd,DAQ_FE_SPARE);
249    
250     CH_GetBuf(CH_TB_READ_S4_CAL_MASK,&auto_buf );
251     DAQ_Format_Fe2Daq(&TRG_TempPif0,auto_buf,fe_tb);
252    
253     HK_KHB_GetHotCold(&hc);
254     LU_EXIT_IFERROR(status);
255    
256     if(hc == CM_HOT) {
257     DAQ_Format_Cmd2Fe(&TRG_TempPif0,&TB_SET_BUSY_MASK_IDAQ_HOT,fe_tb);
258     }else{
259     DAQ_Format_Cmd2Fe(&TRG_TempPif0,&TB_SET_BUSY_MASK_IDAQ_COLD,fe_tb);
260     }
261    
262     DAQ_Format_Cmd2Fe(&TRG_TempPif0,dummy_cmd,DAQ_FE_SPARE);
263    
264     CH_GetBuf(CH_TB_READ_BUSY_MASK,&auto_buf );
265     DAQ_Format_Fe2Daq(&TRG_TempPif0,auto_buf,fe_tb);
266    
267     DAQ_StoreCmdQueue2PIF(SM_CALEXP0,&TRG_TempPif0);
268     status = DAQ_SendCmd2PIFWaitDAQReply(SM_CALEXP0,DAQ_STORE_MM,NULL,DAQ_NO_STORE_RAM);
269    
270     return status;
271     }
272    
273     status_code TRG_StartTrigger()
274     {
275     }
276    
277     status_code TRG_Error_Handler()
278     {
279     status_code status = CM_RC_SUCCESSFUL;
280     DAQ_CMD_BUF* auto_buf;
281     DAQ_FE fe_tb = DAQ_SELECT_TRIG(PRH_VAR_TB_LINK);
282     UINT16 khb_sr;
283    
284     DAQ_Format_CMD_Empty(&TRG_TempPif0);
285    
286     CH_GetBuf(CH_TB_READ_ALARM,&auto_buf);
287     DAQ_Format_Fe2Daq(&TRG_TempPif0,auto_buf,fe_tb);
288    
289     DAQ_StoreCmdQueue2PIF(SM_CALEXP3,&TRG_TempPif0);
290    
291     status = DAQ_SendCmd2PIFWaitDAQReply(SM_CALEXP3,DAQ_STORE_MM,&TRG_TempPif0,DAQ_STORE_RAM);
292     if(status != CM_RC_SUCCESSFUL || TRG_TempPif0.len < SM_PKTHEADER_LEN+3) {
293     status=CM_RC_DO_RESET_IF_ALM;
294     }else{
295    
296     if( ((TRG_TempPif0.buf[SM_PKTHEADER_LEN] & 0xFF) != 0) ||
297     ((TRG_TempPif0.buf[SM_PKTHEADER_LEN+1] & 0xFC) != 0)
298     ) {
299     status=HK_ReadKHBStatusRegister(&khb_sr);
300     if((khb_sr & (KHB_STS_ALARM_IDAQ | KHB_STS_ALARM_TRG))
301     || status!=CM_RC_SUCCESSFUL)
302     return CM_RC_DO_POWER_OFF_ON;
303     if( PRH_VAR_GOM_DURING_ALARM == MH_GOM_INITIALIZATION ||
304     PRH_VAR_GOM_DURING_ALARM == MH_GOM_ACQUISITION ) {
305     return CM_RC_DO_RESET_IF_ALM;
306     }
307     }
308     }
309    
310     return status;
311     }

  ViewVC Help
Powered by ViewVC 1.1.23