diff --git a/lalapps/src/pulsar/GCT/HierarchSearchGCT.c b/lalapps/src/pulsar/GCT/HierarchSearchGCT.c index b159c3e8ae940aeb1d841d93c6a2c4b39372c11a..a4b75350bf9f82264d727d77dc5a089d9a404d1d 100644 --- a/lalapps/src/pulsar/GCT/HierarchSearchGCT.c +++ b/lalapps/src/pulsar/GCT/HierarchSearchGCT.c @@ -159,9 +159,6 @@ typedef struct { BOOLEAN LVuseAllTerms; /**< which terms to use in LineVeto computation - FALSE: only leading term, TRUE: all terms */ REAL4 LVlogRhoTerm; /**< For LineVeto statistic: extra term coming from prior normalization: log(rho_max_line^4/70) */ REAL4Vector *LVloglX; /**< For LineVeto statistic: vector of logs of line prior ratios lX per detector */ - REAL8 dFreqStack; /**< frequency resolution of Fstat calculation */ - REAL8 df1dot; /**< coarse grid resolution in spindown */ - UINT4 extraBinsFstat; /**< Extra bins required for Fstat calculation */ } UsefulStageVariables; @@ -748,22 +745,6 @@ int MAIN( int argc, char *argv[]) { usefulParams.refTime = -1; } - /* set Fstat calculation frequency resolution (coarse grid) */ - if ( LALUserVarWasSet(&uvar_dFreq) ) { - usefulParams.dFreqStack = uvar_dFreq; - } - else { - usefulParams.dFreqStack = -1; - } - - /* set Fstat spindown resolution (coarse grid) */ - if ( LALUserVarWasSet(&uvar_df1dot) ) { - usefulParams.df1dot = uvar_df1dot; - } - else { - usefulParams.df1dot = -1; - } - /* for 1st stage: read sfts, calculate detector states */ LogPrintf( LOG_NORMAL,"Reading input data ... "); LAL_CALL( SetUpSFTs( &status, &stackMultiSFT, &stackMultiNoiseWeights, &stackMultiDetStates, &usefulParams), &status); @@ -826,8 +807,21 @@ int MAIN( int argc, char *argv[]) { /*------- set frequency and spindown resolutions and ranges for Fstat and semicoherent steps -----*/ - dFreqStack = usefulParams.dFreqStack; - df1dot = usefulParams.df1dot; + /* set Fstat calculation frequency resolution (coarse grid) */ + if ( LALUserVarWasSet(&uvar_dFreq) ) { + dFreqStack = uvar_dFreq; + } + else { + dFreqStack = 1.0/tStack; + } + + /* set Fstat spindown resolution (coarse grid) */ + if ( LALUserVarWasSet(&uvar_df1dot) ) { + df1dot = uvar_df1dot; + } + else { + df1dot = 1.0/(tStack*tStack); + } /* number of coarse grid spindown values */ nf1dot = (UINT4) ceil( usefulParams.spinRange_midTime.fkdotBand[1] / df1dot) + 1; @@ -1181,7 +1175,7 @@ int MAIN( int argc, char *argv[]) { { /********Allocate fstat vector memory *****************/ /* calculate number of bins for Fstat overhead due to residual spin-down */ - semiCohPar.extraBinsFstat = usefulParams.extraBinsFstat; + semiCohPar.extraBinsFstat = (UINT4)( (0.25 * tObs * df1dot)/dFreqStack + 1e-6) + 1; /* calculate total number of bins for Fstat */ binsFstatSearch = (UINT4)(usefulParams.spinRange_midTime.fkdotBand[0]/dFreqStack + 1e-6) + 1; @@ -2089,19 +2083,6 @@ void SetUpSFTs( LALStatus *status, /**< pointer to LALStatus structure */ refTimeGPS = tMidGPS; } - /* set Fstat calculation frequency resolution (coarse grid) */ - if ( in->dFreqStack < 0 ) { - in->dFreqStack = 1.0 / in->tStack; - } - - /* set Fstat spindown resolution (coarse grid) */ - if ( in->df1dot < 0 ) { - in->df1dot = 1.0 / ( in->tStack * in->tStack ); - } - - /* calculate number of bins for Fstat overhead due to residual spin-down */ - in->extraBinsFstat = (UINT4)( (0.25 * in->tObs * in->df1dot)/in->dFreqStack + 1e-6) + 1; - /* get frequency and fdot bands at start time of sfts by extrapolating from reftime */ in->spinRange_refTime.refTime = refTimeGPS; TRY( LALExtrapolatePulsarSpinRange( status->statusPtr, &in->spinRange_startTime, tStartGPS, &in->spinRange_refTime), status); @@ -2125,8 +2106,8 @@ void SetUpSFTs( LALStatus *status, /**< pointer to LALStatus structure */ doppWings = freqHi * in->dopplerMax; /* maximum Doppler wing -- probably larger than it has to be */ extraBins = HSMAX ( in->blocksRngMed/2 + 1, in->Dterms ); - freqmin = freqLo - doppWings - extraBins * deltaFsft - in->extraBinsFstat * in->dFreqStack; - freqmax = freqHi + doppWings + extraBins * deltaFsft + in->extraBinsFstat * in->dFreqStack; + freqmin = freqLo - doppWings - extraBins * deltaFsft; + freqmax = freqHi + doppWings + extraBins * deltaFsft; /* ----- finally memory for segments of multi sfts ----- */ stackMultiSFT->length = in->nStacks;