(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 saw   1.3  *   Revision 1.2  1999/11/04 20:34:06  saw
 20            *   Alpha compatibility.
 21            *   New RPC call needed for root event display.
 22            *   Start of code to write ROOT trees (ntuples) from new "tree" block
 23            *
 24 saw   1.2  *   Revision 1.7  1999/08/25 13:16:06  saw
 25            *   *** empty log message ***
 26            *
 27            *   Revision 1.6  1999/07/07 13:43:58  saw
 28            *   Move thTestRHandler() into thTestParse.c
 29            *
 30            *   Revision 1.5  1996/08/01 01:31:56  saw
 31            *   Have thRHandler return a status
 32 saw   1.1  *
 33            *	  Revision 1.4  1995/01/09  15:41:11  saw
 34            *	  Change "linux" ifdef's to NOHBOOK.
 35            *
 36            *	  Revision 1.3  1994/10/16  21:42:21  saw
 37            *	  Change an include file name from daVarServ.h daVarHandlers.h
 38            *
 39            *	  Revision 1.2  1993/08/12  14:57:39  saw
 40            *	  Add #include <rpc/rpc.h>
 41            *
 42            *	  Revision 1.1  1993/05/10  21:06:46  saw
 43            *	  Initial revision
 44            *
 45            */
 46           #include <string.h>
 47           #include <rpc/rpc.h>
 48           
 49           #include "daVar.h"
 50           #include "daVarRpc.h"
 51           #include "daVarHandlers.h"
 52           #include "th.h"
 53 saw   1.1 #include "thInternal.h"
 54           
 55           #ifndef NOHBOOK
 56           #include "hbook.h"
 57           #endif
 58           
 59           int thLastIdRhandled;
 60           
 61           daVarStatus thWHandler(char *name,daVarStruct *varclass,any *setval)
 62           /* The write handler used by block.test, block.hist and block.parm */
 63           {
 64             daVarStruct *varp;
 65             char *attribute;
 66             daVarStatus status;
 67             int index;
 68           
 69             status = daVarAttributeFind(name, varclass, &varp, &attribute, &index);
 70             if(status == S_SUCCESS) {
 71               status = daVarRegWatr(varp, attribute, index, setval);
 72               if(strcasecmp(attribute,DAVAR_TITLE) == 0 && status == S_SUCCESS){
 73                 status = ((daVarStatus (*)()) varclass->opaque)(varp);
 74 saw   1.1     }
 75             }
 76             return(status);
 77           }
 78           daVarStatus thRHandler(char *name, daVarStruct *varclass, any *retval)
 79           /* The default Read handler */
 80           {
 81             daVarStruct *varp;
 82             char *attribute;
 83             daVarStatus status;
 84             int index;
 85           
 86             status = daVarAttributeFind(name, varclass, &varp, &attribute, &index);
 87             status = daVarRegRatr(varp, attribute, index, retval);
 88             /* scaler attribute a synonym for the value which holds the block counter */
 89             if(status == S_SUCCESS) {
 90               if(strcasecmp(attribute,DAVAR_RATR) == 0){
 91                 retval->any_u.s = realloc(retval->any_u.s,strlen(retval->any_u.s)
 92           				+strlen(TH_SCALER) + 2);
 93                 strcat(retval->any_u.s,TH_SCALER);
 94                 strcat(retval->any_u.s,"\n");
 95 saw   1.1     }
 96             } else {
 97               if(strcasecmp(attribute,TH_SCALER) == 0){
 98                 retval->valtype = DAVARINT_RPC;
 99                 retval->any_u.i.i_len = 1;
100                 retval->any_u.i.i_val = (int *) malloc(sizeof(int));
101                 retval->any_u.i.i_val[0] = ((DAINT *)varp->varptr)[0];
102               }
103             }
104             return(status);
105           }
106           
107           #ifndef NOHBOOK
108           void thHistZeroLastId()
109           {
110             thLastIdRhandled = 9999999;
111             return;
112           }
113 saw   1.3 daVarStatus thHistRHandler(char *name, daVarStruct *varclass, any *retval)
114 saw   1.2      /* Read Handler for Histograms */
115 saw   1.1 {
116             daVarStruct *varp;
117             char *attribute;
118             daVarStatus status;
119             int index;
120             static int NX,NY,NWT,LOC ; static float XMI,XMA,YMI,YMA;
121           /*  thHistOpaque *hopq;*/
122           
123             status = daVarAttributeFind(name, varclass, &varp, &attribute, &index);
124             status = daVarRegRatr(varp, attribute, index, retval);
125             if(status == S_SUCCESS) {
126               if(strcasecmp(attribute,DAVAR_RATR) == 0){
127                 retval->any_u.s = realloc(retval->any_u.s,strlen(retval->any_u.s)
128           				+ strlen(TH_ND) + strlen(TH_NX) 
129           				+ strlen(TH_NY) + strlen(TH_XMI)
130           				+ strlen(TH_XMA) + strlen(TH_YMI)
131           				+ strlen(TH_YMA) + strlen(TH_CONTEN) + 9);
132                 strcat(retval->any_u.s,TH_ND); strcat(retval->any_u.s,"\n");
133                 strcat(retval->any_u.s,TH_NX); strcat(retval->any_u.s,"\n");
134                 strcat(retval->any_u.s,TH_NY); strcat(retval->any_u.s,"\n");
135                 strcat(retval->any_u.s,TH_XMI); strcat(retval->any_u.s,"\n");
136 saw   1.1       strcat(retval->any_u.s,TH_XMA); strcat(retval->any_u.s,"\n");
137                 strcat(retval->any_u.s,TH_YMI); strcat(retval->any_u.s,"\n");
138                 strcat(retval->any_u.s,TH_YMA); strcat(retval->any_u.s,"\n");
139                 strcat(retval->any_u.s,TH_CONTEN); strcat(retval->any_u.s,"\n");
140               }
141             } else {
142               char chtitle[80];
143               
144               retval->valtype = DAVARERROR_RPC;
145               retval->any_u.error = S_DAVAR_UNKATTR;
146               if(thLastIdRhandled != *((DAINT *) varp->varptr)) {
147                 thLastIdRhandled = *((DAINT *) varp->varptr);
148                 HGIVE(*((DAINT *) varp->varptr),chtitle,NX,XMI,XMA,NY,YMI,YMA
149           	    ,NWT,LOC);
150               }
151               if(strcasecmp(attribute,TH_ND) == 0){
152                 retval->valtype = DAVARINT_RPC;
153                 retval->any_u.i.i_len = 1;
154                 retval->any_u.i.i_val = (int *) malloc(varp->size*sizeof(int));
155                 retval->any_u.i.i_val[0] = (NY == 0 ? 1 : 2);
156               } else if(strcasecmp(attribute,TH_NX) == 0){
157 saw   1.1       retval->valtype = DAVARINT_RPC;
158                 retval->any_u.i.i_len = 1;
159                 retval->any_u.i.i_val = (int *) malloc(varp->size*sizeof(int));
160                 retval->any_u.i.i_val[0] = NX;
161               } else if(strcasecmp(attribute,TH_NY) == 0){
162                 retval->valtype = DAVARINT_RPC;
163                 retval->any_u.i.i_len = 1;
164                 retval->any_u.i.i_val = (int *) malloc(varp->size*sizeof(int));
165                 retval->any_u.i.i_val[0] = NY;
166               } else if(strcasecmp(attribute,TH_XMI) == 0){
167                 retval->valtype = DAVARFLOAT_RPC;
168                 retval->any_u.r.r_len = 1;
169                 retval->any_u.r.r_val = (float *) malloc(varp->size*sizeof(float));
170                 retval->any_u.r.r_val[0] = XMI;
171               } else if(strcasecmp(attribute,TH_XMA) == 0){
172                 retval->valtype = DAVARFLOAT_RPC;
173                 retval->any_u.r.r_len = 1;
174                 retval->any_u.r.r_val = (float *) malloc(varp->size*sizeof(float));
175                 retval->any_u.r.r_val[0] = XMA;
176               } else if(strcasecmp(attribute,TH_YMI) == 0){
177                 retval->valtype = DAVARFLOAT_RPC;
178 saw   1.1       retval->any_u.r.r_len = 1;
179                 retval->any_u.r.r_val = (float *) malloc(varp->size*sizeof(float));
180                 retval->any_u.r.r_val[0] = YMI;
181               } else if(strcasecmp(attribute,TH_YMA) == 0){
182                 retval->valtype = DAVARFLOAT_RPC;
183                 retval->any_u.r.r_len = 1;
184                 retval->any_u.r.r_val = (float *) malloc(varp->size*sizeof(float));
185                 retval->any_u.r.r_val[0] = YMA;
186               } else if(strcasecmp(attribute,TH_CONTEN) == 0){
187                 int size;
188                 retval->valtype = DAVARFLOAT_RPC;
189                 size = NX;
190                 if(NY != 0) size *= NY;
191                 retval->any_u.r.r_len = size;
192                 retval->any_u.r.r_val = (float *)malloc(size*sizeof(float));
193 saw   1.3       /* Next line gives warning "assignment of read-only location */
194 saw   1.1       HUNPAK(thLastIdRhandled,retval->any_u.r.r_val,"HIST",(int) 1);
195               }
196             }
197 saw   1.3   return(status);
198 saw   1.2 }
199           #endif
200           #ifdef ROOTTREE
201 saw   1.3 daVarStatus thTreeRHandler(char *name, daVarStruct *varclass, any *retval)
202 saw   1.2 /* The default Read handler */
203           {
204             return(thRHandler(name, varclass, retval));
205 saw   1.1 }
206           #endif

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