# MrProtocol.cxx

    /*=========================================================================

      Program: GDCM (Grassroots DICOM). A DICOM library
      Module:  $URL$

      Copyright (c) 2006-2009 Mathieu Malaterre
      All rights reserved.
      See Copyright.txt or http://gdcm.sourceforge.net/Copyright.html for details.

         This software is distributed WITHOUT ANY WARRANTY; without even
         the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR
         PURPOSE.  See the above copyright notice for more information.

    =========================================================================*/
    /*
     *
     */

    /*
    28 - 'MrProtocol' VM 1, VR UN, SyngoDT 0, NoOfItems 6, Data '### ASCCONV BEGIN ###
    ulVersion                                = 0xbee332
    tSequenceFileName                        = "%SiemensSeq%\fl_fq_shphs"
    tProtocolName                            = "flash+AF8-100+AF8-through-plane+AF8-V"
    tReferenceImage0                         = "1.3.12.2.1107.5.2.9.16041.30000007062106100181200004658"
    tReferenceImage1                         = "1.3.12.2.1107.5.2.9.16041.30000007062106100181200004635"
    tReferenceImage2                         = "1.3.12.2.1107.5.2.9.16041.30000007062106100181200004683"
    ucScanRegionPosValid                     = 0x1
    sProtConsistencyInfo.tBaselineString     = "N4_VB11A_LATEST_20031004"
    sProtConsistencyInfo.flNominalB0         = 1.494
    sProtConsistencyInfo.flGMax              = 22
    sProtConsistencyInfo.flRiseTime          = 10
    sGRADSPEC.sEddyCompensationX.aflAmplitude[0] = 0.0141111
    sGRADSPEC.sEddyCompensationX.aflAmplitude[1] = 0.057038
    sGRADSPEC.sEddyCompensationX.aflAmplitude[2] = -0.00986504
    sGRADSPEC.sEddyCompensationX.aflAmplitude[3] = 0.00247627
    sGRADSPEC.sEddyCompensationX.aflAmplitude[4] = 0.0026377
    sGRADSPEC.sEddyCompensationX.aflTimeConstant[0] = 1.53826
    sGRADSPEC.sEddyCompensationX.aflTimeConstant[1] = 0.746617
    sGRADSPEC.sEddyCompensationX.aflTimeConstant[2] = 0.339236
    sGRADSPEC.sEddyCompensationX.aflTimeConstant[3] = 0.0309809
    sGRADSPEC.sEddyCompensationX.aflTimeConstant[4] = 0.00067694
    sGRADSPEC.sEddyCompensationY.aflAmplitude[0] = 0.0156411
    sGRADSPEC.sEddyCompensationY.aflAmplitude[1] = 0.0440623
    sGRADSPEC.sEddyCompensationY.aflAmplitude[2] = -0.00782663
    sGRADSPEC.sEddyCompensationY.aflAmplitude[3] = 0.00186828
    sGRADSPEC.sEddyCompensationY.aflAmplitude[4] = 0.00154504
    sGRADSPEC.sEddyCompensationY.aflTimeConstant[0] = 1.47145
    sGRADSPEC.sEddyCompensationY.aflTimeConstant[1] = 0.750538
    sGRADSPEC.sEddyCompensationY.aflTimeConstant[2] = 0.339397
    sGRADSPEC.sEddyCompensationY.aflTimeConstant[3] = 0.0312962
    sGRADSPEC.sEddyCompensationY.aflTimeConstant[4] = 0.000895133
    sGRADSPEC.sEddyCompensationZ.aflAmplitude[0] = 0.00618504
    sGRADSPEC.sEddyCompensationZ.aflAmplitude[1] = 0.00313121
    sGRADSPEC.sEddyCompensationZ.aflAmplitude[2] = 0.000289346
    sGRADSPEC.sEddyCompensationZ.aflAmplitude[3] = -0.00019677
    sGRADSPEC.sEddyCompensationZ.aflAmplitude[4] = 7.66445e-005
    sGRADSPEC.sEddyCompensationZ.aflTimeConstant[0] = 3.37462
    sGRADSPEC.sEddyCompensationZ.aflTimeConstant[1] = 0.999351
    sGRADSPEC.sEddyCompensationZ.aflTimeConstant[2] = 0.0174646
    sGRADSPEC.sEddyCompensationZ.aflTimeConstant[3] = 0.0110094
    sGRADSPEC.sEddyCompensationZ.aflTimeConstant[4] = 0.00199922
    sGRADSPEC.bEddyCompensationValid         = 1
    sGRADSPEC.sB0CompensationX.aflAmplitude[0] = 0.307474
    sGRADSPEC.sB0CompensationX.aflAmplitude[1] = 0.029337
    sGRADSPEC.sB0CompensationX.aflAmplitude[2] = -0.187118
    sGRADSPEC.sB0CompensationX.aflTimeConstant[0] = 0.98583
    sGRADSPEC.sB0CompensationX.aflTimeConstant[1] = 0.0308443
    sGRADSPEC.sB0CompensationX.aflTimeConstant[2] = 0.000466792
    sGRADSPEC.sB0CompensationY.aflAmplitude[0] = 0.365257
    sGRADSPEC.sB0CompensationY.aflAmplitude[1] = -0.318647
    sGRADSPEC.sB0CompensationY.aflAmplitude[2] = -0.0118978
    sGRADSPEC.sB0CompensationY.aflTimeConstant[0] = 0.61535
    sGRADSPEC.sB0CompensationY.aflTimeConstant[1] = 0.488831
    sGRADSPEC.sB0CompensationY.aflTimeConstant[2] = 0.00199991
    sGRADSPEC.sB0CompensationZ.aflAmplitude[0] = -0.44647
    sGRADSPEC.sB0CompensationZ.aflAmplitude[1] = -0.0455154
    sGRADSPEC.sB0CompensationZ.aflAmplitude[2] = -0.0304901
    sGRADSPEC.sB0CompensationZ.aflTimeConstant[0] = 0.959231
    sGRADSPEC.sB0CompensationZ.aflTimeConstant[1] = 0.0720189
    sGRADSPEC.sB0CompensationZ.aflTimeConstant[2] = 0.00190141
    sGRADSPEC.bB0CompensationValid           = 1
    sGRADSPEC.sCrossTermCompensationXY.aflAmplitude[0] = 0.00105046
    sGRADSPEC.sCrossTermCompensationXY.aflTimeConstant[0] = 0.842014
    sGRADSPEC.sCrossTermCompensationXZ.aflAmplitude[0] = -0.00150189
    sGRADSPEC.sCrossTermCompensationXZ.aflTimeConstant[0] = 0.736169
    sGRADSPEC.sCrossTermCompensationYX.aflAmplitude[0] = -5.5278e-005
    sGRADSPEC.sCrossTermCompensationYX.aflTimeConstant[0] = 0.228697
    sGRADSPEC.sCrossTermCompensationYZ.aflAmplitude[0] = 0.000307999
    sGRADSPEC.sCrossTermCompensationYZ.aflTimeConstant[0] = 1.19431
    sGRADSPEC.sCrossTermCompensationZX.aflAmplitude[0] = -0.000286868
    sGRADSPEC.sCrossTermCompensationZX.aflTimeConstant[0] = 0.665979
    sGRADSPEC.sCrossTermCompensationZY.aflAmplitude[0] = 0.000355175
    sGRADSPEC.sCrossTermCompensationZY.aflTimeConstant[0] = 0.844189
    sGRADSPEC.bCrossTermCompensationValid    = 1
    sGRADSPEC.lOffsetX                       = 25
    sGRADSPEC.lOffsetY                       = 84
    sGRADSPEC.lOffsetZ                       = 47
    sGRADSPEC.bOffsetValid                   = 1
    sGRADSPEC.lDelayX                        = 12
    sGRADSPEC.lDelayY                        = 11
    sGRADSPEC.lDelayZ                        = 9
    sGRADSPEC.bDelayValid                    = 1
    sGRADSPEC.flSensitivityX                 = 0.000264087
    sGRADSPEC.flSensitivityY                 = 0.000272009
    sGRADSPEC.flSensitivityZ                 = 0.000272677
    sGRADSPEC.bSensitivityValid              = 1
    sGRADSPEC.alShimCurrent[0]               = 183
    sGRADSPEC.alShimCurrent[1]               = -25
    sGRADSPEC.alShimCurrent[2]               = -85
    sGRADSPEC.alShimCurrent[3]               = 378
    sGRADSPEC.alShimCurrent[4]               = 82
    sGRADSPEC.bShimCurrentValid              = 1
    sGRADSPEC.ucMode                         = 0x2
    sTXSPEC.asNucleusInfo[0].tNucleus        = "1H"
    sTXSPEC.asNucleusInfo[0].lFrequency      = 63684693
    sTXSPEC.asNucleusInfo[0].bFrequencyValid = 1
    sTXSPEC.asNucleusInfo[0].flReferenceAmplitude = 359.734
    sTXSPEC.asNucleusInfo[0].bReferenceAmplitudeValid = 1
    sTXSPEC.asNucleusInfo[0].flAmplitudeCorrection = 1
    sTXSPEC.asNucleusInfo[0].bAmplitudeCorrectionValid = 1
    sTXSPEC.asNucleusInfo[1].bFrequencyValid = 1
    sTXSPEC.asNucleusInfo[1].bReferenceAmplitudeValid = 1
    sTXSPEC.asNucleusInfo[1].bAmplitudeCorrectionValid = 1
    sTXSPEC.aRFPULSE[0].tName                = "03GreFCE"
    sTXSPEC.aRFPULSE[0].bAmplitudeValid      = 0x1
    sTXSPEC.aRFPULSE[0].flAmplitude          = 147.095
    sTXSPEC.aRFPULSE[1].tName                = "02GreFCE"
    sTXSPEC.aRFPULSE[1].bAmplitudeValid      = 0x1
    sTXSPEC.aRFPULSE[1].flAmplitude          = 147.095
    sTXSPEC.aRFPULSE[2].tName                = "01GreFCE"
    sTXSPEC.aRFPULSE[2].bAmplitudeValid      = 0x1
    sTXSPEC.aRFPULSE[2].flAmplitude          = 147.095
    sTXSPEC.lNoOfTraPulses                   = 3
    sTXSPEC.lBTB1ParallelCapacity            = 2
    sTXSPEC.lBTB1SerialCapacity              = 24
    sTXSPEC.lBTB2ParallelCapacity            = 2
    sTXSPEC.lBTB2SerialCapacity              = 26
    sTXSPEC.bBTBValid                        = 1
    sTXSPEC.flKDynMagnitudeMin               = 0.5
    sTXSPEC.flKDynMagnitudeMax               = 1.5
    sTXSPEC.flKDynMagnitudeClipLow           = 0.96
    sTXSPEC.flKDynMagnitudeClipHigh          = 1.04
    sTXSPEC.flKDynPhaseMax                   = 0.698132
    sTXSPEC.flKDynPhaseClip                  = 0.174533
    sTXSPEC.bKDynValid                       = 1
    sTXSPEC.ucRFPulseType                    = 0x1
    sTXSPEC.ucExcitMode                      = 0x1
    sTXSPEC.ucSimultaneousExcitation         = 0x1
    sRXSPEC.lGain                            = 1
    sRXSPEC.bGainValid                       = 1
    sRXSPEC.aFFT_SCALE[0].lRxChannel         = 1
    sRXSPEC.aFFT_SCALE[0].flFactor           = 1.06857
    sRXSPEC.aFFT_SCALE[0].bValid             = 1
    sRXSPEC.aFFT_SCALE[1].lRxChannel         = 2
    sRXSPEC.aFFT_SCALE[1].flFactor           = 1.07454
    sRXSPEC.aFFT_SCALE[1].bValid             = 1
    sRXSPEC.aFFT_SCALE[2].lRxChannel         = 3
    sRXSPEC.aFFT_SCALE[2].flFactor           = 1.06622
    sRXSPEC.aFFT_SCALE[2].bValid             = 1
    sRXSPEC.aFFT_SCALE[3].lRxChannel         = 4
    sRXSPEC.aFFT_SCALE[3].flFactor           = 1.06524
    sRXSPEC.aFFT_SCALE[3].bValid             = 1
    sRXSPEC.aFFT_SCALE[4].lRxChannel         = 5
    sRXSPEC.aFFT_SCALE[4].flFactor           = 0.982692
    sRXSPEC.aFFT_SCALE[4].bValid             = 1
    sRXSPEC.aFFT_SCALE[5].lRxChannel         = 6
    sRXSPEC.aFFT_SCALE[5].flFactor           = 0.988603
    sRXSPEC.aFFT_SCALE[5].bValid             = 1
    sRXSPEC.aFFT_SCALE[6].lRxChannel         = 7
    sRXSPEC.aFFT_SCALE[6].flFactor           = 0.981538
    sRXSPEC.aFFT_SCALE[6].bValid             = 1
    sRXSPEC.aFFT_SCALE[7].lRxChannel         = 8
    sRXSPEC.aFFT_SCALE[7].flFactor           = 1.00856
    sRXSPEC.aFFT_SCALE[7].bValid             = 1
    sRXSPEC.bVariCapVoltagesValid            = 1
    sRXSPEC.alDwellTime[0]                   = 8500
    sAdjFreSpec.ulMode                       = 0x1
    sAdjFreSpec.ucAdjWithBC                  = 0x1
    sAdjTraSpec.ucAdjWithBC                  = 0x1
    sAdjShimSpec.ulMode                      = 0x1
    sAdjShimSpec.ucAdjWithBC                 = 0x1
    sAdjWatSupSpec.ulMode                    = 0x1
    sAdjWatSupSpec.ucAdjWithBC               = 0x1
    alTR[0]                                  = 37000
    lContrasts                               = 1
    alTE[0]                                  = 4000
    acFlowComp[0]                            = 1
    lCombinedEchoes                          = 1
    sSliceArray.asSlice[0].sPosition.dSag    = 35.31199581
    sSliceArray.asSlice[0].sPosition.dCor    = -8.387765754
    sSliceArray.asSlice[0].sPosition.dTra    = -23.13178296
    sSliceArray.asSlice[0].sNormal.dSag      = 0.771051253
    sSliceArray.asSlice[0].sNormal.dCor      = 0.5863890019
    sSliceArray.asSlice[0].sNormal.dTra      = -0.2482496801
    sSliceArray.asSlice[0].dThickness        = 6
    sSliceArray.asSlice[0].dPhaseFOV         = 187.5
    sSliceArray.asSlice[0].dReadoutFOV       = 250
    sSliceArray.lSize                        = 1
    sSliceArray.lSag                         = 1
    sSliceArray.lConc                        = 1
    sSliceArray.ucMode                       = 0x1
    sSliceArray.sTSat.dThickness             = 40
    sSliceArray.sTSat.dGap                   = 10
    sGroupArray.asGroup[0].nSize             = 1
    sGroupArray.asGroup[0].dDistFact         = 0.2
    sGroupArray.anMember[1]                  = -1
    sGroupArray.lSize                        = 1
    sGroupArray.sPSat.dThickness             = 50
    sGroupArray.sPSat.dGap                   = 10
    sAutoAlign.dAAMatrix[0]                  = 1
    sAutoAlign.dAAMatrix[5]                  = 1
    sAutoAlign.dAAMatrix[10]                 = 1
    sAutoAlign.dAAMatrix[15]                 = 1
    sNavigatorPara.ucRespComp                = 0x4
    sPrepPulses.ucFatSat                     = 0x4
    sPrepPulses.ucWaterSat                   = 0x4
    sPrepPulses.ucInversion                  = 0x4
    sPrepPulses.ucSatRecovery                = 0x1
    sPrepPulses.ucFatSatMode                 = 0x2
    sKSpace.lBaseResolution                  = 256
    sKSpace.lPhaseEncodingLines              = 192
    sKSpace.dPhaseResolution                 = 1
    sKSpace.lPartitions                      = 32
    sKSpace.lImagesPerSlab                   = 32
    sKSpace.dSliceResolution                 = 1
    sKSpace.ucPhasePartialFourier            = 0x10
    sKSpace.ucSlicePartialFourier            = 0x10
    sKSpace.ucAveragingMode                  = 0x2
    sKSpace.ucMultiSliceMode                 = 0x1
    sKSpace.ucDimension                      = 0x2
    sKSpace.ucAsymmetricEchoAllowed          = 0x1
    sKSpace.unReordering                     = 0x1
    sFastImaging.lEPIFactor                  = 1
    sFastImaging.lTurboFactor                = 1
    sFastImaging.lSegments                   = 3
    sFastImaging.ulEnableRFSpoiling          = 0x1
    sPhysioImaging.lSignal1                  = 2
    sPhysioImaging.lMethod1                  = 2
    sPhysioImaging.lSignal2                  = 1
    sPhysioImaging.lMethod2                  = 1
    sPhysioImaging.lPhases                   = 21
    sPhysioImaging.lRetroGatedImages         = 16
    sPhysioImaging.sPhysioECG.lScanWindow    = 805
    sPhysioImaging.sPhysioECG.lTriggerPulses = 1
    sPhysioImaging.sPhysioECG.lTriggerWindow = 5
    sPhysioImaging.sPhysioECG.lArrhythmiaDetection = 1
    sPhysioImaging.sPhysioECG.lCardiacGateOnThreshold = 100000
    sPhysioImaging.sPhysioECG.lCardiacGateOffThreshold = 700000
    sPhysioImaging.sPhysioPulse.lTriggerPulses = 1
    sPhysioImaging.sPhysioPulse.lTriggerWindow = 5
    sPhysioImaging.sPhysioPulse.lCardiacGateOnThreshold = 100000
    sPhysioImaging.sPhysioPulse.lCardiacGateOffThreshold = 700000
    sPhysioImaging.sPhysioExt.lTriggerPulses = 1
    sPhysioImaging.sPhysioExt.lTriggerWindow = 5
    sPhysioImaging.sPhysioExt.lCardiacGateOnThreshold = 100000
    sPhysioImaging.sPhysioExt.lCardiacGateOffThreshold = 700000
    sPhysioImaging.sPhysioResp.lRespGateThreshold = 20
    sPhysioImaging.sPhysioResp.lRespGatePhase = 2
    sPhysioImaging.sPhysioResp.dGatingRatio  = 0.3
    sSpecPara.lPhaseCyclingType              = 1
    sSpecPara.lPhaseEncodingType             = 1
    sSpecPara.lRFExcitationBandwidth         = 1
    sSpecPara.ucRemoveOversampling           = 0x1
    sSpecPara.lDecouplingType                = 1
    sSpecPara.lNOEType                       = 1
    sSpecPara.lExcitationType                = 1
    sSpecPara.lSpectralSuppression           = 1
    sDiffusion.ulMode                        = 0x1
    sAngio.sFlowArray.asElm[0].nVelocity     = 100
    sAngio.sFlowArray.asElm[0].nDir          = 0x4
    sAngio.sFlowArray.lSize                  = 1
    sAngio.ucPCFlowMode                      = 0x2
    sAngio.ucTOFInflow                       = 0x4
    sAngio.ucRephasedImage                   = 0x1
    sAngio.ucPhaseImage                      = 0x1
    sEllipticalFilter.ucMode                 = 0x1
    sPat.lAccelFactPE                        = 1
    sPat.lAccelFact3D                        = 1
    sPat.ucPATMode                           = 0x1
    sPat.ucRefScanMode                       = 0x1
    ucAutoMovie                              = 0x1
    ucDisableChangeStoreImages               = 0x1
    ucReconstructionMode                     = 0x1
    ucPHAPSMode                              = 0x1
    ucDixon                                  = 0x1
    lAverages                                = 2
    adFlipAngleDegree[0]                     = 30
    lScanTimeSec                             = 103
    lTotalScanTimeSec                        = 112
    dRefSNR                                  = 165404.1473
    dRefSNR_VOI                              = 165404.1473
    tdefaultEVAProt                          = "%SiemensEvaDefProt%\Inline\Inline.evp"
    tcurrentEVAProt                          = "%CURRENTEVAPROT%\EVA2A5.tmp"
    sCOIL_SELECT_MEAS.asList[0].sCoilElementID.tCoilID = "6_Ch_Body_P"
    sCOIL_SELECT_MEAS.asList[0].sCoilElementID.lCoilCopy = 1
    sCOIL_SELECT_MEAS.asList[0].sCoilElementID.tElement = "PP6"
    sCOIL_SELECT_MEAS.asList[0].lElementSelected = 1
    sCOIL_SELECT_MEAS.asList[0].lRxChannelConnected = 1
    sCOIL_SELECT_MEAS.asList[1].sCoilElementID.tCoilID = "6_Ch_Body_P"
    sCOIL_SELECT_MEAS.asList[1].sCoilElementID.lCoilCopy = 1
    sCOIL_SELECT_MEAS.asList[1].sCoilElementID.tElement = "PP5"
    sCOIL_SELECT_MEAS.asList[1].lElementSelected = 1
    sCOIL_SELECT_MEAS.asList[1].lRxChannelConnected = 1
    sCOIL_SELECT_MEAS.asList[2].sCoilElementID.tCoilID = "6_Ch_Body_P"
    sCOIL_SELECT_MEAS.asList[2].sCoilElementID.lCoilCopy = 1
    sCOIL_SELECT_MEAS.asList[2].sCoilElementID.tElement = "PP3"
    sCOIL_SELECT_MEAS.asList[2].lElementSelected = 1
    sCOIL_SELECT_MEAS.asList[2].lRxChannelConnected = 2
    sCOIL_SELECT_MEAS.asList[3].sCoilElementID.tCoilID = "6_Ch_Body_P"
    sCOIL_SELECT_MEAS.asList[3].sCoilElementID.lCoilCopy = 1
    sCOIL_SELECT_MEAS.asList[3].sCoilElementID.tElement = "PP4"
    sCOIL_SELECT_MEAS.asList[3].lElementSelected = 1
    sCOIL_SELECT_MEAS.asList[3].lRxChannelConnected = 3
    sCOIL_SELECT_MEAS.asList[4].sCoilElementID.tCoilID = "6_Ch_Body_P"
    sCOIL_SELECT_MEAS.asList[4].sCoilElementID.lCoilCopy = 1
    sCOIL_SELECT_MEAS.asList[4].sCoilElementID.tElement = "PP2"
    sCOIL_SELECT_MEAS.asList[4].lElementSelected = 1
    sCOIL_SELECT_MEAS.asList[4].lRxChannelConnected = 4
    sCOIL_SELECT_MEAS.asList[5].sCoilElementID.tCoilID = "6_Ch_Body_P"
    sCOIL_SELECT_MEAS.asList[5].sCoilElementID.lCoilCopy = 1
    sCOIL_SELECT_MEAS.asList[5].sCoilElementID.tElement = "PP1"
    sCOIL_SELECT_MEAS.asList[5].lElementSelected = 1
    sCOIL_SELECT_MEAS.asList[5].lRxChannelConnected = 4
    sCOIL_SELECT_MEAS.asList[6].sCoilElementID.tCoilID = "6_Ch_Body_A"
    sCOIL_SELECT_MEAS.asList[6].sCoilElementID.lCoilCopy = 1
    sCOIL_SELECT_MEAS.asList[6].sCoilElementID.tElement = "PA6"
    sCOIL_SELECT_MEAS.asList[6].lElementSelected = 1
    sCOIL_SELECT_MEAS.asList[6].lRxChannelConnected = 5
    sCOIL_SELECT_MEAS.asList[7].sCoilElementID.tCoilID = "6_Ch_Body_A"
    sCOIL_SELECT_MEAS.asList[7].sCoilElementID.lCoilCopy = 1
    sCOIL_SELECT_MEAS.asList[7].sCoilElementID.tElement = "PA5"
    sCOIL_SELECT_MEAS.asList[7].lElementSelected = 1
    sCOIL_SELECT_MEAS.asList[7].lRxChannelConnected = 5
    sCOIL_SELECT_MEAS.asList[8].sCoilElementID.tCoilID = "6_Ch_Body_A"
    sCOIL_SELECT_MEAS.asList[8].sCoilElementID.lCoilCopy = 1
    sCOIL_SELECT_MEAS.asList[8].sCoilElementID.tElement = "PA3"
    sCOIL_SELECT_MEAS.asList[8].lElementSelected = 1
    sCOIL_SELECT_MEAS.asList[8].lRxChannelConnected = 6
    sCOIL_SELECT_MEAS.asList[9].sCoilElementID.tCoilID = "6_Ch_Body_A"
    sCOIL_SELECT_MEAS.asList[9].sCoilElementID.lCoilCopy = 1
    sCOIL_SELECT_MEAS.asList[9].sCoilElementID.tElement = "PA4"
    sCOIL_SELECT_MEAS.asList[9].lElementSelected = 1
    sCOIL_SELECT_MEAS.asList[9].lRxChannelConnected = 7
    sCOIL_SELECT_MEAS.asList[10].sCoilElementID.tCoilID = "6_Ch_Body_A"
    sCOIL_SELECT_MEAS.asList[10].sCoilElementID.lCoilCopy = 1
    sCOIL_SELECT_MEAS.asList[10].sCoilElementID.tElement = "PA2"
    sCOIL_SELECT_MEAS.asList[10].lElementSelected = 1
    sCOIL_SELECT_MEAS.asList[10].lRxChannelConnected = 8
    sCOIL_SELECT_MEAS.asList[11].sCoilElementID.tCoilID = "6_Ch_Body_A"
    sCOIL_SELECT_MEAS.asList[11].sCoilElementID.lCoilCopy = 1
    sCOIL_SELECT_MEAS.asList[11].sCoilElementID.tElement = "PA1"
    sCOIL_SELECT_MEAS.asList[11].lElementSelected = 1
    sCOIL_SELECT_MEAS.asList[11].lRxChannelConnected = 8
    sCOIL_SELECT_MEAS.sCOILPLUGS.aulPlugId[0] = 0xff
    sCOIL_SELECT_MEAS.sCOILPLUGS.aulPlugId[1] = 0x76
    sCOIL_SELECT_MEAS.sCOILPLUGS.aulPlugId[2] = 0x78
    sCOIL_SELECT_MEAS.sCOILPLUGS.aulPlugId[3] = 0x87
    sCOIL_SELECT_MEAS.sCOILPLUGS.aulPlugId[4] = 0x67
    sCOIL_SELECT_MEAS.sCOILPLUGS.auiNmbrOfNibbles[0] = 0x2
    sCOIL_SELECT_MEAS.sCOILPLUGS.auiNmbrOfNibbles[1] = 0x2
    sCOIL_SELECT_MEAS.sCOILPLUGS.auiNmbrOfNibbles[2] = 0x2
    sCOIL_SELECT_MEAS.sCOILPLUGS.auiNmbrOfNibbles[3] = 0x2
    sCOIL_SELECT_MEAS.sCOILPLUGS.auiNmbrOfNibbles[4] = 0x2
    sEFISPEC.bEFIDataValid                   = 1
    ### ASCCONV END ###
    '
    */

    /*
     * Table of equivalence:
     *
    ulVersion                                = 0xbee332
    <=>
    27 - 'MrProtocolVersion' VM 1, VR IS, SyngoDT 6, NoOfItems 6, Data '12510002'
    */

    #include "gdcmReader.h"
    #include "gdcmImageReader.h"
    #include "gdcmImageWriter.h"
    #include "gdcmCSAHeader.h"
    #include "gdcmAttribute.h"
    #include "gdcmGlobal.h"
    #include "gdcmDicts.h"

    #include <map>

    #include <math.h>

    int main(int argc, char *argv [])
    {
      if( argc < 2 ) return 1;
      const char *filename = argv[1];
      gdcm::ImageReader reader;
      reader.SetFileName( filename );
      if( !reader.Read() )
        {
        std::cerr << "Failed to read: " << filename << std::endl;
        return 1;
        }

      gdcm::CSAHeader csa;
      const gdcm::DataSet& ds = reader.GetFile().GetDataSet();

      //const gdcm::PrivateTag &t1 = csa.GetCSAImageHeaderInfoTag();
      const gdcm::PrivateTag &t2 = csa.GetCSASeriesHeaderInfoTag();

      if( ds.FindDataElement( t2 ) )
        {
        csa.LoadFromDataElement( ds.GetDataElement( t2 ) );
        //csa.Print( std::cout );
        }

      if( !csa.FindCSAElementByName( "MrProtocol" ) )
        {
        return 1;
        }
      const gdcm::CSAElement &csael = csa.GetCSAElementByName( "MrProtocol" );
      //std::cout << csael << std::endl;

      const gdcm::ByteValue *bv = csael.GetByteValue();
      if( !bv )
        {
        return 1;
        }
      std::string str(bv->GetPointer(), bv->GetLength());
      std::istringstream is(str);
      std::string s;
      typedef std::map< std::string, std::string > MyMapType;
      MyMapType mymap;
      while( std::getline(is, s ) )
        {
        std::string::size_type pos = s.find( '=' );
        if( pos != std::string::npos )
          {
          std::string sub1 = s.substr(0, pos);
          sub1.erase( sub1.find_last_not_of(' ') + 1);
          std::string sub2 = s.substr(pos+1); // skip the '=' char
          sub2.erase( 0, sub2.find_first_not_of(' '));
          //std::cout << sub1 << std::endl;
          mymap.insert( MyMapType::value_type(sub1, sub2) );
          }
        else
          {
          // ### ASCCONV BEGIN ###
          // ### ASCCONV END ###
          }
        }
      const char fourierstr[] = "sKSpace.ucSlicePartialFourier";
      const gdcm::CSAHeaderDict &csadict = gdcm::Global::GetInstance().GetDicts().GetCSAHeaderDict();
      const gdcm::CSAHeaderDictEntry &fourier = csadict.GetCSAHeaderDictEntry( fourierstr );
      std::cout << fourier << std::endl;
      MyMapType::const_iterator it = mymap.find ( fourierstr );
      if( it == mymap.end() ) return 1;
      //std::cout << it->second << std::endl;
      const std::string &partial_fourier = it->second;
      if( partial_fourier == "0x1" )
        {
        std::cout << "partial fourier is 4/8" << std::endl;
        }
      else if( partial_fourier == "0x2" )
        {
        std::cout << "partial fourier is 5/8" << std::endl;
        }
      else if( partial_fourier == "0x4" )
        {
        std::cout << "partial fourier is 6/8" << std::endl;
        }
      else if( partial_fourier == "0x8" )
        {
        std::cout << "partial fourier is 7/8" << std::endl;
        }
      else if( partial_fourier == "0x10" )
        {
        std::cout << "partial fourier is 8/8" << std::endl;
        }
      else
        {
        std::cerr << "Impossible: " << partial_fourier << std::endl;
        return 1;
        }
    /*
    This is the Flip Angle:
    adFlipAngleDegree[0]                     = 30

    One can find it also in the protocol:

    ...
          <ParamFunctor.""T1mapFunctor"">
          {
            <Class> ""T1mapFunctor@IceImagePostProcFunctors""

            <ParamBool.""EXECUTE"">  { }
            <ParamDouble.""Flip1_deg"">  { <Precision> 16  14.7378520000000000  }
    ...

    */
      // Below is an attemp to play with the CSAHeader dict:
    #if 0
      const char gspec[] = "sGRADSPEC.flSensitivityX";
      it = mymap.find( gspec );
      if( it == mymap.end() ) return 1;
      const std::string &dummy = it->second;
      std::cout << dummy << std::endl;

      const gdcm::CSAHeaderDictEntry &csaentry = csadict.GetCSAHeaderDictEntry( gspec );
      std::cout << csaentry  << std::endl;
    #endif

      return 0;
    }