Do not estimate STM matrix twice for bSSFP
@@ -611,6 +611,8 @@ static void prepare_sim(struct sim_data* data, int N, int P, float mte[P * N + 1
// Smooth spoiling for FLASH sequences
+ if (NULL != mtr) {
+
if ( (SEQ_FLASH == data->seq.seq_type)
|| (SEQ_IRFLASH == data->seq.seq_type)) {
@@ -639,6 +641,7 @@ static void prepare_sim(struct sim_data* data, int N, int P, float mte[P * N + 1
}
data->tmp.r2spoil = 0.; // effects spoiled sequences only
+ }
break;
}
@@ -887,14 +890,13 @@ void bloch_simulation(const struct sim_data* _data, const complex float* slice,
ode2stm(N, P, xstm, xp);
// STM requires two matrices for RFPhase=0 and RFPhase=PI
- // Therefore mte and mte2 need to be caclulated
- // FIXME: Do not estimate mtr twice
-
+ // Therefore mte and mte2 need to be estimated
+ //
if ( (SEQ_BSSFP == data.seq.seq_type)
|| (SEQ_IRBSSFP == data.seq.seq_type)) {
data.pulse.phase = M_PI;
- prepare_sim(&data, N, P, mte[1], mtr);
+ prepare_sim(&data, N, P, mte[1], NULL);
data.pulse.phase = 0.;
}
