#include "NonLinearity.h" #include "Level1Data.h" #include extern "C" void create_sim_signal( int* ichando, int* nchn, int* iblk, int* nch, int* isl, int* iel, double **tran, double **sim_signals, int* idiff) { for(int ich=0; ich< *nchn; ++ich){ if(ichando[ich] >= 17 && ichando[ich] <= 24 ) { // a difference signal int iodd_band = (ichando[ich]-17)*2 + 1; int ieven_band = iodd_band + 1; int *j = std::find(iblk, iblk+ *nch, iodd_band ); int lodd = (int)std::distance(iblk, j); j = std::find(iblk, iblk+ *nch, ieven_band ); int leven = (int)std::distance(iblk, j); int idvchan = ichando[ich] -16; for(int il = *isl-1; il<= *iel-1; ++il) { if(iodd_band == 5 || iodd_band == 15) { sim_signals[ich][il] = ( tran[lodd][il] - tran[leven][il] ) / tran[leven][il] ; } else { sim_signals[ich][il] = ( tran[leven][il] - tran[lodd][il] ) / tran[lodd][il] ; } } } else { // broadband int iband = ichando[ich]; int *j = std::find(iblk, iblk+ *nch, iband ); int lband = (iband >=25 && iband <= 32) ? 0 : (int)std::distance(iblk, j); if(*idiff) { //channel 2 difference channel for(int il = *isl-1; il<= *iel-1; ++il) { sim_signals[ich][il] = (double)1.0 - tran[lband][il] ; } } else { for(int il = *isl-1; il<= *iel-1; ++il) { sim_signals[ich][il] = tran[lband][il] ; } } } } // loop over channels }