(file) Return to thHandlers.c CVS log (file) (dir) Up to [HallC] / Analyzer / CTP

  1 saw   1.1 /*-----------------------------------------------------------------------------
  2            * Copyright (c) 1993 Southeastern Universities Research Association,
  3            *                    Continuous Electron Beam Accelerator Facility
  4            *
  5            * This software was developed under a United States Government license
  6            * described in the NOTICE file included as part of this distribution.
  7            *
  8            * Stephen A. Wood, 12000 Jefferson Ave., Newport News, VA 23606
  9            * Email: saw@cebaf.gov  Tel: (804) 249-7367  Fax: (804) 249-5800
 10            *-----------------------------------------------------------------------------
 11            * 
 12            * Description:
 13            *  Special test and histogram handlers for RPC services.
 14            *	
 15            * Author:  Stephen Wood, CEBAF Hall C
 16            *
 17            * Revision History:
 18            *   $Log: thHandlers.c,v $
 19 jones 1.4  *   Revision 1.3.24.1  2007/09/10 21:32:47  pcarter
 20            *   Implemented changes to allow compilation on RHEL 3,4,5 and MacOSX
 21            *
 22            *   Revision 1.3  2003/02/21 20:55:24  saw
 23            *   Clean up some types and casts to reduce compiler warnings.
 24            *
 25 saw   1.3  *   Revision 1.2  1999/11/04 20:34:06  saw
 26            *   Alpha compatibility.
 27            *   New RPC call needed for root event display.
 28            *   Start of code to write ROOT trees (ntuples) from new "tree" block
 29            *
 30 saw   1.2  *   Revision 1.7  1999/08/25 13:16:06  saw
 31            *   *** empty log message ***
 32            *
 33            *   Revision 1.6  1999/07/07 13:43:58  saw
 34            *   Move thTestRHandler() into thTestParse.c
 35            *
 36            *   Revision 1.5  1996/08/01 01:31:56  saw
 37            *   Have thRHandler return a status
 38 saw   1.1  *
 39            *	  Revision 1.4  1995/01/09  15:41:11  saw
 40            *	  Change "linux" ifdef's to NOHBOOK.
 41            *
 42            *	  Revision 1.3  1994/10/16  21:42:21  saw
 43            *	  Change an include file name from daVarServ.h daVarHandlers.h
 44            *
 45            *	  Revision 1.2  1993/08/12  14:57:39  saw
 46            *	  Add #include <rpc/rpc.h>
 47            *
 48            *	  Revision 1.1  1993/05/10  21:06:46  saw
 49            *	  Initial revision
 50            *
 51            */
 52           #include <string.h>
 53           #include <rpc/rpc.h>
 54           
 55           #include "daVar.h"
 56           #include "daVarRpc.h"
 57           #include "daVarHandlers.h"
 58           #include "th.h"
 59 saw   1.1 #include "thInternal.h"
 60           
 61           #ifndef NOHBOOK
 62           #include "hbook.h"
 63           #endif
 64           
 65           int thLastIdRhandled;
 66           
 67           daVarStatus thWHandler(char *name,daVarStruct *varclass,any *setval)
 68           /* The write handler used by block.test, block.hist and block.parm */
 69           {
 70             daVarStruct *varp;
 71             char *attribute;
 72             daVarStatus status;
 73             int index;
 74           
 75             status = daVarAttributeFind(name, varclass, &varp, &attribute, &index);
 76             if(status == S_SUCCESS) {
 77               status = daVarRegWatr(varp, attribute, index, setval);
 78               if(strcasecmp(attribute,DAVAR_TITLE) == 0 && status == S_SUCCESS){
 79                 status = ((daVarStatus (*)()) varclass->opaque)(varp);
 80 saw   1.1     }
 81             }
 82             return(status);
 83           }
 84           daVarStatus thRHandler(char *name, daVarStruct *varclass, any *retval)
 85           /* The default Read handler */
 86           {
 87             daVarStruct *varp;
 88             char *attribute;
 89             daVarStatus status;
 90             int index;
 91           
 92             status = daVarAttributeFind(name, varclass, &varp, &attribute, &index);
 93             status = daVarRegRatr(varp, attribute, index, retval);
 94             /* scaler attribute a synonym for the value which holds the block counter */
 95             if(status == S_SUCCESS) {
 96               if(strcasecmp(attribute,DAVAR_RATR) == 0){
 97                 retval->any_u.s = realloc(retval->any_u.s,strlen(retval->any_u.s)
 98           				+strlen(TH_SCALER) + 2);
 99                 strcat(retval->any_u.s,TH_SCALER);
100                 strcat(retval->any_u.s,"\n");
101 saw   1.1     }
102             } else {
103               if(strcasecmp(attribute,TH_SCALER) == 0){
104                 retval->valtype = DAVARINT_RPC;
105                 retval->any_u.i.i_len = 1;
106                 retval->any_u.i.i_val = (int *) malloc(sizeof(int));
107                 retval->any_u.i.i_val[0] = ((DAINT *)varp->varptr)[0];
108               }
109             }
110             return(status);
111           }
112           
113           #ifndef NOHBOOK
114           void thHistZeroLastId()
115           {
116             thLastIdRhandled = 9999999;
117             return;
118           }
119 saw   1.3 daVarStatus thHistRHandler(char *name, daVarStruct *varclass, any *retval)
120 saw   1.2      /* Read Handler for Histograms */
121 saw   1.1 {
122             daVarStruct *varp;
123             char *attribute;
124             daVarStatus status;
125             int index;
126             static int NX,NY,NWT,LOC ; static float XMI,XMA,YMI,YMA;
127           /*  thHistOpaque *hopq;*/
128           
129             status = daVarAttributeFind(name, varclass, &varp, &attribute, &index);
130             status = daVarRegRatr(varp, attribute, index, retval);
131             if(status == S_SUCCESS) {
132               if(strcasecmp(attribute,DAVAR_RATR) == 0){
133                 retval->any_u.s = realloc(retval->any_u.s,strlen(retval->any_u.s)
134           				+ strlen(TH_ND) + strlen(TH_NX) 
135           				+ strlen(TH_NY) + strlen(TH_XMI)
136           				+ strlen(TH_XMA) + strlen(TH_YMI)
137           				+ strlen(TH_YMA) + strlen(TH_CONTEN) + 9);
138                 strcat(retval->any_u.s,TH_ND); strcat(retval->any_u.s,"\n");
139                 strcat(retval->any_u.s,TH_NX); strcat(retval->any_u.s,"\n");
140                 strcat(retval->any_u.s,TH_NY); strcat(retval->any_u.s,"\n");
141                 strcat(retval->any_u.s,TH_XMI); strcat(retval->any_u.s,"\n");
142 saw   1.1       strcat(retval->any_u.s,TH_XMA); strcat(retval->any_u.s,"\n");
143                 strcat(retval->any_u.s,TH_YMI); strcat(retval->any_u.s,"\n");
144                 strcat(retval->any_u.s,TH_YMA); strcat(retval->any_u.s,"\n");
145                 strcat(retval->any_u.s,TH_CONTEN); strcat(retval->any_u.s,"\n");
146               }
147             } else {
148               char chtitle[80];
149               
150               retval->valtype = DAVARERROR_RPC;
151               retval->any_u.error = S_DAVAR_UNKATTR;
152               if(thLastIdRhandled != *((DAINT *) varp->varptr)) {
153                 thLastIdRhandled = *((DAINT *) varp->varptr);
154                 HGIVE(*((DAINT *) varp->varptr),chtitle,NX,XMI,XMA,NY,YMI,YMA
155           	    ,NWT,LOC);
156               }
157               if(strcasecmp(attribute,TH_ND) == 0){
158                 retval->valtype = DAVARINT_RPC;
159                 retval->any_u.i.i_len = 1;
160                 retval->any_u.i.i_val = (int *) malloc(varp->size*sizeof(int));
161                 retval->any_u.i.i_val[0] = (NY == 0 ? 1 : 2);
162               } else if(strcasecmp(attribute,TH_NX) == 0){
163 saw   1.1       retval->valtype = DAVARINT_RPC;
164                 retval->any_u.i.i_len = 1;
165                 retval->any_u.i.i_val = (int *) malloc(varp->size*sizeof(int));
166                 retval->any_u.i.i_val[0] = NX;
167               } else if(strcasecmp(attribute,TH_NY) == 0){
168                 retval->valtype = DAVARINT_RPC;
169                 retval->any_u.i.i_len = 1;
170                 retval->any_u.i.i_val = (int *) malloc(varp->size*sizeof(int));
171                 retval->any_u.i.i_val[0] = NY;
172               } else if(strcasecmp(attribute,TH_XMI) == 0){
173                 retval->valtype = DAVARFLOAT_RPC;
174                 retval->any_u.r.r_len = 1;
175                 retval->any_u.r.r_val = (float *) malloc(varp->size*sizeof(float));
176                 retval->any_u.r.r_val[0] = XMI;
177               } else if(strcasecmp(attribute,TH_XMA) == 0){
178                 retval->valtype = DAVARFLOAT_RPC;
179                 retval->any_u.r.r_len = 1;
180                 retval->any_u.r.r_val = (float *) malloc(varp->size*sizeof(float));
181                 retval->any_u.r.r_val[0] = XMA;
182               } else if(strcasecmp(attribute,TH_YMI) == 0){
183                 retval->valtype = DAVARFLOAT_RPC;
184 saw   1.1       retval->any_u.r.r_len = 1;
185                 retval->any_u.r.r_val = (float *) malloc(varp->size*sizeof(float));
186                 retval->any_u.r.r_val[0] = YMI;
187               } else if(strcasecmp(attribute,TH_YMA) == 0){
188                 retval->valtype = DAVARFLOAT_RPC;
189                 retval->any_u.r.r_len = 1;
190                 retval->any_u.r.r_val = (float *) malloc(varp->size*sizeof(float));
191                 retval->any_u.r.r_val[0] = YMA;
192               } else if(strcasecmp(attribute,TH_CONTEN) == 0){
193                 int size;
194                 retval->valtype = DAVARFLOAT_RPC;
195                 size = NX;
196                 if(NY != 0) size *= NY;
197                 retval->any_u.r.r_len = size;
198                 retval->any_u.r.r_val = (float *)malloc(size*sizeof(float));
199 saw   1.3       /* Next line gives warning "assignment of read-only location */
200 jones 1.4       char tmpstring[] = "HIST";
201                 HUNPAK(thLastIdRhandled,retval->any_u.r.r_val,tmpstring,(int) 1);
202 saw   1.1     }
203             }
204 saw   1.3   return(status);
205 saw   1.2 }
206           #endif
207           #ifdef ROOTTREE
208 saw   1.3 daVarStatus thTreeRHandler(char *name, daVarStruct *varclass, any *retval)
209 saw   1.2 /* The default Read handler */
210           {
211             return(thRHandler(name, varclass, retval));
212 saw   1.1 }
213           #endif

Analyzer/Replay: Mark Jones, Documents: Stephen Wood
Powered by
ViewCVS 0.9.2-cvsgraph-1.4.0