void SetMachineParameters( void ) { double dval; DB_MSG(("-->SetMachineParameters\n")); if( ParxRelsParHasValue("ACQ_word_size") == No ) { ACQ_word_size = _32_BIT; } dval = PVM_GradDelayTime + PVM_2dPhaseGradientTime - 0.01; dval = MAX_OF(PVM_DigEndDelOpt,dval); DEOSC = (PVM_AcquisitionTime + dval)*1000.0; ACQ_scan_shift = -1; ParxRelsParRelations("ACQ_scan_shift",Yes); DE = DE < 6.0 ? 6.0: DE; PAPS = QP; ACQ_BF_enable = Yes; DB_MSG(("<--SetMachineParameters\n")); }
void initMeth() /*:=MPE=:=======================================================*/ { DB_MSG(( "Entering singlepulse:initMeth()" )); int dimRange[2] = { 1,2 }; int lowMat[3] = { 32, 32, 8 }; int upMat[3] = { 32, 32, 8 }; /* which version of toolboxes should be active */ PTB_VersionRequirement( Yes,20070101,""); /* * initialize NOE and Decoupling parameter group */ STB_NoeOnOffRange(); STB_DecOnOffRange(); /* * init decoupling module */ STB_InitDecModule(); /* * init noe module */ STB_InitNoeModule(); /* * init the local adjustments available */ /* * initialize the nuclei dependent on NOE or Decoupling */ LocalDecNoeHandling(); /* Initialize PVM_NAverages PVM_NRepetitions see code in parsRelations.c */ Local_NAveragesRange(); NrepRange(); /* Initialisation of rf pulse parameters */ /* 1: flip angle in the scan edidor */ if(ParxRelsParHasValue("PVM_ExcPulseAngle") == No) PVM_ExcPulseAngle = 30.0; ParxRelsShowInEditor("PVM_ExcPulseAngle"); if(ParxRelsParHasValue("FrequencyLock_OnOff") == No) FrequencyLock_OnOff = Off; /* 2: pulses declared in parDefinitions.h in this case - ExcPulse. We initalise it to default name, 1ms, and the flip angle given in PVM_ExcPulseAngle*/ if(ParxRelsParHasValue("ExcPulse") == No) { STB_InitRFPulse(&ExcPulse, "gauss.exc", 1, PVM_ExcPulseAngle); } ExcPulseRange(); /* 3: the corresponding pulse enums */ STB_InitExcPulseEnum("ExcPulseEnum"); /*KW-sliceSPEC (begin) 100714*/ if(ParxRelsParHasValue("PVM_EchoTime") == No) PVM_EchoTime = 1.0; if(ParxRelsParHasValue("SliceSpoilerDuration") == No) SliceSpoilerDuration = 2; if(ParxRelsParHasValue("SliceSpoilerStrength") == No) SliceSpoilerStrength = 20; /* Initialisation of nucleus */ STB_InitNuclei(1); /* Initialisation of geometry parameters */ /* A: in-plane */ STB_InitStandardInplaneGeoPars(2,dimRange,lowMat,upMat,No); /* B: slice geometry */ STB_InitSliceGeoPars(0,0,0); STB_InitExSliceAtoms(); /*KW-sliceSPEC (end) 100714*/ /* initialisation of spectroscopy */ ParxRelsHideInEditor("PVM_SpecOffsetHz,PVM_SpecOffsetppm"); STB_InitSpectroscopy( 1, 1, 1 , PVM_Nucleus1 , 200.0, 1000000 ); /* Initialize multi receiver parameters */ STB_InitEncoding(); /* Initialisation of modules */ STB_InitWsModule (1); STB_InitSatSlicesModule(); STB_InitFatSupModule(); NdummyRange(); /*kw-mod 101014 begin*/ STB_InitTriggerModule(); STB_InitTriggerOutModule(); /*kw-mod 101014 end*/ /*Gba - shim (start)*/ if(ParxRelsParHasValue("Slice1ShimStrength_x") == No) Slice1ShimStrength_x = 1.0; if(ParxRelsParHasValue("Slice1ShimStrength_y") == No) Slice1ShimStrength_y = 1.0; if(ParxRelsParHasValue("Slice1ShimStrength_z") == No) Slice1ShimStrength_z = 1.0; if(ParxRelsParHasValue("Slice2ShimStrength_x") == No) Slice2ShimStrength_x = 1.0; if(ParxRelsParHasValue("Slice2ShimStrength_y") == No) Slice2ShimStrength_y = 1.0; if(ParxRelsParHasValue("Slice2ShimStrength_z") == No) Slice2ShimStrength_z = 1.0; /*Gba - shim (end)*/ /* initialisation of DeadTime */ DeadTimeRange(); /* setting for Pipeline filter in case of multi channel acquisition */ PVM_RefScanPCYN = No; /* Once all parameters have initial values, the backbone is called to assure they are consistent */ backbone(); DB_MSG(( "Exiting singlepulse:initMeth()" )); }
void SetPpgParameters( void ) { DB_MSG(("-->SetPpgParameters\n")); if( ParxRelsParHasValue("ACQ_trigger_enable") == No ) { ACQ_trigger_enable = No; } if( ParxRelsParHasValue("ACQ_trigger_reference") == No ) { ACQ_trigger_reference[0] = '\0'; } if( ParxRelsParHasValue("ACQ_trigger_delay") == No ) { ACQ_trigger_delay = 0; } ParxRelsParRelations("ACQ_trigger_reference",Yes); ACQ_vd_list_size=1; PARX_change_dims("ACQ_vd_list",1); ACQ_vd_list[0] = 1e-6; ParxRelsParRelations("ACQ_vd_list",Yes); ACQ_vp_list_size=1; PARX_change_dims("ACQ_vp_list",1); ACQ_vp_list[0] = 1e-6; ParxRelsParRelations("ACQ_vp_list",Yes); ATB_SetPulprog("T1rho_MSME.ppg"); if(PVM_SelIrOnOff) { D[0] = PVM_InterGradientWaitTime / 1000.0; D[10] = SliceSegEndDelay/1000.0; } else { D[0] = ((PVM_RepetitionTime - PVM_MinRepetitionTime)/NSLICES + PVM_InterGradientWaitTime) / 1000.0; D[10] = 0.00001; } D[1] = ((PVM_EchoTime - minTE1)/2.0 + PVM_InterGradientWaitTime) / 1000.0; D[2] = ((PVM_EchoTime - minTE2)/2.0 + 0.04) / 1000.0; /* 0.04 is duration of ADC_END_4ch */ D[3] = PVM_GradDelayTime / 1000.0; D[3] = MAX_OF(D[3], 1e-5); /* min d3 in case PVM_GradDelayTime==0 */ D[4] = PVM_RampTime / 1000.0; D[5] = (SliceSpoilerDuration - 2*PVM_RampTime)/1000.0; D[6] = (PVM_2dPhaseGradientTime - 2*PVM_RampTime)/1000.0; D[11] = (PVM_ReadDephaseTime - 2.0*PVM_RampTime) / 1000.0; D[8] = CFG_AmplifierEnable()/1000.0; /* set shaped pulses */ sprintf(TPQQ[0].name,ExcPulse.Filename); sprintf(TPQQ[1].name,RefPulse.Filename); if(PVM_DeriveGains == Yes) { TPQQ[0].power = ExcPulse.Attenuation; TPQQ[1].power = RefPulse.Attenuation; } TPQQ[0].offset = 0.0; TPQQ[1].offset = 0.0; ParxRelsParRelations("TPQQ",Yes); /* set duration of pulse, in this method P[0] is used */ P[0] = ExcPulse.Length * 1000; P[1] = RefPulse.Length * 1000; ParxRelsParRelations("P",Yes); DB_MSG(("<--SetPpgParameters\n")); }
void SetInfoParameters( void ) { int slices, i, spatDim; DB_MSG(("-->SetInfoParameters\n")); spatDim = PTB_GetSpatDim(); if( PVM_ErrorDetected == Yes ) { UT_ReportError("SetInfoParameters: In function call!"); return; } ATB_SetAcqMethod(); ATB_SetAcqFov( Spatial, spatDim, PVM_Fov, PVM_AntiAlias ); if( PVM_ErrorDetected == Yes ) { UT_ReportError("SetInfoParameters: In function call!"); return; } ACQ_flip_angle = PVM_ExcPulseAngle; PARX_change_dims("ACQ_echo_time",PVM_NEchoImages); for(i=0; i<PVM_NEchoImages; i++) ACQ_echo_time[i] = EffectiveTE[i]; PARX_change_dims("ACQ_inter_echo_time",1); ACQ_inter_echo_time[0] = PVM_EchoTime; PARX_change_dims("ACQ_repetition_time",1); ACQ_repetition_time[0] = PVM_RepetitionTime; PARX_change_dims("ACQ_recov_time",1); ACQ_recov_time[0] = PVM_RepetitionTime - PVM_ExSlicePulseLength; PARX_change_dims("ACQ_inversion_time",1); ACQ_inversion_time[0] = PVM_InversionTime; strcpy(ACQ_fit_function_name,FitFunctionName); if( ParxRelsVisibleForEdit("ProcessingMacro") == 1) { GO_use_macro = ProcessingMacro; ParxRelsParRelations("GO_use_macro", Yes); if(ProcessingMacro == Yes) strcpy(GO_macro,ProcessingMacroName); } else { GO_use_macro = No; ParxRelsParRelations("GO_use_macro", Yes); } ATB_SetAcqSliceAngle( PtrType3x3 PVM_SPackArrGradOrient[0], PVM_NSPacks ); ACQ_slice_orient = Arbitrary_Oblique; ACQ_slice_thick = PVM_SliceThick; slices = GTB_NumberOfSlices( PVM_NSPacks, PVM_SPackArrNSlices ); if( PVM_ErrorDetected == Yes ) { UT_ReportError("SetInfoParameters: In function call!"); return; } PARX_change_dims("ACQ_slice_offset",slices); PARX_change_dims("ACQ_read_offset",slices); PARX_change_dims("ACQ_phase1_offset",slices); PARX_change_dims("ACQ_phase2_offset",slices); for(i=0;i<slices;i++) { ACQ_slice_offset[i] = PVM_SliceOffset[i]; ACQ_read_offset[i] = PVM_ReadOffset[i]; ACQ_phase1_offset[i] = PVM_Phase1Offset[i]; ACQ_phase2_offset[i] = PVM_Phase2Offset[i]; } ACQ_read_ext = (int)PVM_AntiAlias[0]; PARX_change_dims("ACQ_slice_sepn", slices==1 ? 1 : slices-1); if( slices == 1 ) { ACQ_slice_sepn[0] = 0.0; } else { for( i=1; i<slices;i++ ) { ACQ_slice_sepn[i-1]=PVM_SliceOffset[i]-PVM_SliceOffset[i-1]; } } ATB_SetAcqSliceSepn( PVM_SPackArrSliceDistance, PVM_NSPacks ); ATB_SetAcqPatientPosition(); ATB_SetAcqExpType( Imaging ); ACQ_n_t1_points = 1; if( ParxRelsParHasValue("ACQ_transmitter_coil") == No ) { ACQ_transmitter_coil[0] = '\0'; } if( ParxRelsParHasValue("ACQ_receiver_coil") == No ) { ACQ_receiver_coil[0] = '\0'; } if( ParxRelsParHasValue("ACQ_contrast_agent") == No ) { ACQ_contrast_agent[0] = '\0'; } if( ParxRelsParHasValue("ACQ_contrast") == No ) { ACQ_contrast.volume = 0.0; ACQ_contrast.dose = 0.0; ACQ_contrast.route[0] = '\0'; ACQ_contrast.start_time[0] = '\0'; ACQ_contrast.stop_time[0] = '\0'; } ParxRelsParRelations("ACQ_contrast_agent",Yes); ACQ_position_X = 0.0; ACQ_position_Y = 0.0; ACQ_position_Z = 0.0; PARX_change_dims("ACQ_temporal_delay",1); ACQ_temporal_delay[0] = 0.0; ACQ_RF_power = 0; ACQ_flipback = No; ACQ_n_echo_images = PVM_NEchoImages; ACQ_n_movie_frames = 1; DB_MSG(("<--SetInfoParameters\n")); }