$GOOPROC;
 
 /*******************************************************************/
 /* Analysis for BIO-9109 Cave A NE-20 400 MeV/u 20./21.9.91 ********/
 /*******************************************************************/
 
 /************************/
 /* Constant declaration */
 /* Values can be        */
 /* modified in SATAN    */
 /************************/
 
 
 static short i_e[5],
         i_posxl[4], i_posxr[4], I_PosYO[4], I_PosYU[4],
         i_sc3,  i_clock, i_trigger, i_mw2anode, i_sc3_sca,
         I_MINTDCVALUE =0,
         I_MAXTDCVALUE =3840;
                                   
 static float 
         r_posfactor =0.03;
 
 /*********************/
 /* Helper variables  */
 /*********************/

 static long i,j,k,l,m; 
 
 /*******************************************/
 /* Integer variables for MWPC calculations */
 /*******************************************/
 
 static short I_PosXSum[4], I_PosYSum[4];
 
 /****************************************/
 /* Real variables for MWPC calculations */
 /****************************************/
 
 static float r_posx[4], r_posy[4];
 
 /*********************************/
 /* Boolean variables MWPC        */
 /*********************************/
 
 int B_Pos_X[4], B_Pos_Y[4], b_pos_xy[4];
 
 
 /*********************/
 /* Generate Spectra  */
 /*********************/
 
 /* stelzer gas detectors  */
 
 $AGEN( PosXL(3)     ) TYPE(4) LIMITS( 0,4095)  BINS( 4) NCND( 0);
 $AGEN( PosXR(3)     ) TYPE(4) LIMITS( 0,4095)  BINS( 4) NCND( 0);
 $AGEN( PosYO(3)     ) TYPE(4) LIMITS( 0,4095)  BINS( 4) NCND( 0);
 $AGEN( PosYU(3)     ) TYPE(4) LIMITS( 0,4095)  BINS( 4) NCND( 0);
 $AGEN( PosXSum(3)   ) TYPE(4) LIMITS( 0,8191)  BINS( 4) NCND( 1);
 $AGEN( PosYSum(3)   ) TYPE(4) LIMITS( 0,8191)  BINS( 4) NCND( 1);
 $AGEN( PosX(3)      ) TYPE(4) LIMITS(-150,150) BINS( 1) NCND( 0);
 $AGEN( PosY(3)      ) TYPE(4) LIMITS(-150,150) BINS( 1) NCND( 0);
 $AGEN( Posxy(3)     ) TYPE(4) LIMITS(-150,150,-150,150) NCND( 1);
 
 /*music detectors         */
 
 $AGEN( e(4)        ) TYPE(4) LIMITS( 0 , 4095 ) bins(1) ncnd( 0 );
 
 $ANTRY; 
 $EVENT(EVT_PARM(21));
 
 /***************************/
 /* Variables to copy event */
 /***************************/
 
 i_posxl[1]  = $EVTPAR( EVT_PARM(1) );
 i_posxr[1]  = $EVTPAR( EVT_PARM(2) );
 I_PosYO[1]  = $EVTPAR( EVT_PARM(3) );
 I_PosYU[1]  = $EVTPAR( EVT_PARM(4) );
 
 i_posxl[2]  = $EVTPAR( EVT_PARM(5) );
 i_posxr[2]  = $EVTPAR( EVT_PARM(6) );
 I_PosYO[2]  = $EVTPAR( EVT_PARM(7) );
 I_PosYU[2]  = $EVTPAR( EVT_PARM(8) );
 
 i_posxl[3]  = $EVTPAR( EVT_PARM(9) );
 i_posxr[3]  = $EVTPAR( EVT_PARM(10) );
 I_PosYO[3]  = $EVTPAR( EVT_PARM(11) );
 I_PosYU[3]  = $EVTPAR( EVT_PARM(12) );
 
 i_e[1]      = $EVTPAR( EVT_PARM(13) );
 i_e[2]      = $EVTPAR( EVT_PARM(14) );
 i_e[3]      = $EVTPAR( EVT_PARM(15) );
 i_e[4]      = $EVTPAR( EVT_PARM(16) );
 i_sc3       = $EVTPAR( EVT_PARM(17) );
 
 i_clock     = $EVTPAR( EVT_PARM(18) );
 i_trigger   = $EVTPAR( EVT_PARM(19) );
 i_mw2anode  = $EVTPAR( EVT_PARM(20) );
 i_sc3_sca   = $EVTPAR( EVT_PARM(21) );
 
 
 /*********************************************************************/
 /*                   Start of analysis                               */
 /*********************************************************************/
 
 /********************************************/
 /* MWPC raw spectra; zeroes are suppressed  */
 /********************************************/
 
 for( i=1; i<=3; i++ ) { 
   if ( i_posxl[i] != 0 ) $anal(PosXL(i),i_posxl[i]);
   if ( i_posxr[i] != 0 ) $anal(PosXR(i),i_posxr[i]);
   if ( I_PosYO[i] != 0 ) $anal(PosYO(i),I_PosYO[i]);
   if ( I_PosYU[i] != 0 ) $anal(PosYU(i),I_PosYU[i]);
 }  

 /************************************************/
 /* Accumulate evaluated spectra for the 3 MWPCs */
 /************************************************/
 for( i=1; i<=3; i++ ) { /* Two position detectors */
   r_posx[i] = 999; r_posy[i]=999; /* invalid start suppresses 0 */
   B_Pos_X[i] = 0; B_Pos_Y[i] = 0; b_pos_xy[i] = 0;
   /*-----------------------------*/
   /* Check raw data for validity */
   /*-----------------------------*/
   if ( (i_posxl[i] > I_MINTDCVALUE ) & ( i_posxl[i] < I_MAXTDCVALUE) &
        (i_posxr[i] > I_MINTDCVALUE ) & ( i_posxr[i] < I_MAXTDCVALUE) ) { 
     $anal(PosXSum(i),i_posxl[i] + i_posxr[i]);
     if ( $AC(PosXSum(i),1) ) {
       B_Pos_X[i] = 1;
       r_posx[i] = (i_posxr[i] - i_posxl[i] ) * r_posfactor ;
       $anal(PosX(i), floor(r_posx[i]) );
     } /* IF $ AC... */
   } /* IF i_posxl(i)... */
   /*-------------------------------------------------*/
   /* Repeat procedure for the vertical beam position */
   /*-------------------------------------------------*/
   if ( (I_PosYO[i] > I_MINTDCVALUE) & (I_PosYO[i] < I_MAXTDCVALUE) &
        (I_PosYU[i] > I_MINTDCVALUE) & (I_PosYU[i] < I_MAXTDCVALUE) ) { 
     $anal(PosYSum(i),I_PosYO[i] + I_PosYU[i]);
     if ( $AC(PosYSum(i),1) ) { 
       B_Pos_Y[i] = 1;
       r_posy[i] = (I_PosYO[i] - I_PosYU[i] ) * r_posfactor ;
       $anal(PosY(i), floor(r_posy[i]) );
     } /* IF $ AC... */
   } /* IF I_PosYo(i)... */
 
   if ( B_Pos_X[i] && B_Pos_Y[i] ) {  /* valid x,y position signal  */
      $anal(POSXY(i),floor(r_posx[i] ),floor(r_posy[i] ) );
   } 
 } /* DO i = 1 TO 3 .. */
 /***************************/
 /* music - RAW SPECTRA */
 /***************************/
 for( i=1; i<=3; i++ ) { 
    if ( (i_e[i]!=0) && (i_e[i]<4090) ) {
       $anal( E(i), i_e[i] );
    }
 } 
 $ENDEVT;
 $ENDANL;