Utsusemi4 Change History

Author

Yasuhiro Inamura

Last Update

Mar 02, 2023

4.0.230126 or later

Jan 26 2023

[update:manyo:0.3.4] Update ReadNeXusFile code to remove warning messages on comile.

コンパイル時に下記のような警告(Deprecated)が出るので、対処した。

In file included from NeXusFileIO.hh:8,
                 from NeXusFileIO.cc:5:
ReadNeXusFile.hh: In member function ‘T ReadNeXusFile::GetAttribute2(const string&)’:
ReadNeXusFile.hh:518:31: warning: ‘NXstatus nxigetnextattr_(NXhandle, char*, int*, int*)’ is deprecated [-Wdeprecated-declarations]
  518 |         status = NXgetnextattr( handle, AttrName, &Length, &Type );
      |                               ^
In file included from HeaderBase.hh:18,
                 from ReadNeXusFile.hh:10,
                 from NeXusFileIO.hh:8,
                 from NeXusFileIO.cc:5:
/usr/include/nexus/napi.h:635:19: note: declared here
  635 | extern  NXstatus  NXgetnextattr(NXhandle handle, NXname pName, int *iLength, int *iType) NEXUS_DEPRECATED_FUNCTION;
      |                   ^~~~~~~~~~~~~
In file included from NeXusFileIO.hh:8,
                 from NeXusFileIO.cc:5:
Jan 24 2023

[bugfix:Utsusemi:4.0] The issue that the conversion error occurs on LoadDataFromSPE

DATA_RDCT-194 空蝉4:SPEファイル読み込み時にエラー

BL12で作成されたSPEファイル(SPE, PHX, PARファイル)を読み込むときにエラーが発生する。

原因

最初期のPARファイルとSPEファイルはFortranでの読み書きを想定されており、ファイル内のフォーマットとして数値間に区切りはなく1数値を10文字と定義されているものだった。 SPEファイルを読み書きするTreatSPE.pyでは、10文字に数値が入るように調整されていた。

しかしながらBL12のSPEファイルは10文字のフォーマットであるが、PARファイルはその10文字フォーマットではなく、単純なスペース区切りであった。そのため処理時にエラーが発生した。

対応

TreatSPE::LoadSPE()において、以下のように改変した。

  • PARファイルを読み込む際にまず10文字フォーマットで処理をし、エラーが出たらスペース区切りで処理する

Jan 23 2023

[update:Utsusemi:4.0] Change definition of UTSUSEMI_WORK_DIR variable

UTSUSEMI_WORK_DIRの挙動を再定義する

主な使い道としては、起動直後の空蟬上でos.path.getcwd() が適切な場所を示さない(Windows版とかmacOS版とか、Debian版のApplicationとか)時に、Current Directoryの代わりに使用するパスを定義しておく。

  • Working Directoryの初期値を指定する

  • ターミナルのシェルなどから起動した場合はunset UTSUSEMI_WORK_DIR、つまり未定義としておいて、代わりに os.path.getcwd()の結果を利用する(これまで通り)

  • UtsusemiEnvGetWorkDir()の挙動で、UTSUSEMI_WORK_DIRが未定義の場合は”” (empty string)を返す仕様に戻す

この枠組みを全てに当てはめると、従来のターミナルからの起動時の挙動がこれまでと異なる(起動時の場所とは異なるUTSUSEMI_WORK_DIRになる)ことになるため、混乱が生じ不適切である。 これまでどおりターミナルから使用する場合は、UTSUSEMI_WORK_DIRを未定義もしくはemptyにしておくことにする。

Jan 17 2023

[update:manyo:0.3.4] Improve comment descriptions to output on warning or error status.

いくつかのエラー時やWarning時の出力の記述を改良した。

  • HeaderBase::Addでキーが既存の場合の出力をわかりやすくした

  • T0TreatToolBaseで環境変数MLF_ENV_T0PIDCHECK_IGNOREDの設定表示を分かりやすくした

  • 同時に上記表示をMlfEnvGetIsQuiet()(”MLF_LOG_QUIET”の設定)で切り替えるようにした

Jan 17 2023

[bugfix:manyo:0.3.4] The issue that compile warning occurs.

AcquireNeutronSourceInfomationBaseのコンパイル時にWarningが出るのを修正した。

Jan 17 2023

[bugfix:manyo:0.3.4] The issue of the failure to get beam current as CT9

DATA_RDCT-193 空蟬4:isCT8n=False時のBeamCurrentの情報がエラー

CT9用として定義されていたcgi(CTdataRead6.2.pl)にアクセスできなくなっているのが原因。 CT8neutron用として定義されているcgi(CTdataRead6.6cp.pl)の結果にはCT9の情報も含まれているので、これを取り出せるようにした。

Jan 16 2023

[update:Utsusemi:4.0] Improve definition of default WORK_DIR path in python-utsusemi/bin/_loadenv at the binary mode

Jan 16 2023

[update:Utsusemi:4.0] Add Ana command in python-utsusemi/bin

4.0.230116 or later

Jan 16 2023

[update:Utsusemi:4.0] Improve definition of default WORK_DIR path in python-utsusemi/bin/_loadenv at the binary mode

Jan 16 2023

[update:Utsusemi:4.0] Add Ana command in python-utsusemi/bin

Jan 15 2023

[bugfix:manyo:0.3.4] The issue that old command (python-config) is used on depend.mac

Jan 15 2023

[update:manyo:0.3.4] Fixed some codes which cause warning on compile ( to use snprintf instead of springf, etc)

コンパイル時にいくつかWarningを出すコードを修正した

  • sprintfをsnprintfへ

  • 一度に複数のインスランスをdeleteしていたのを分割

  • if - else の関係が分かりにくい部分を明確化

Jan 14 2023

[update:uGao:master] Rewrite QtCom.py and uGaoUtil.py to be applied to PEP8

Jan 14 2023

[update:uGao:master] Move color map data from uGaoUtil to uGaoColorMap

Jan 13 2023

[update:uGao:master] Rewrite hard-to-see codes for the list of color map data

Jan 13 2023

[update:uGao:master] Improve the action to open MPlot and M2PlotPlusCui on macos

MPlotの起動時やM2PlotPlusCui実行時にプロセス間通信のためCommQt::NewCommが実行されるが、旧MacOSでは起動時間が長くなるようにしてあった。 当時不具合により「Macでは一度接続に失敗するとリトライによる再接続ができなかったため」との記述がある。 そのコードでは余計に9秒の時間がかけられていた。

AppleSiliconのmacOS Montereyで試験したところ、特にこの9秒がなくとも動作するようになっていたので、

  • macosであること

  • AppleSiliconであること

を条件にこの9秒の待ち時間を無くした。

Jan 12 2023

[update:Utsusemi-SAS:4.0] remove useless codes

Jan 12 2023

[update:Utsusemi-SAS:4.0devRPMT2] Improve the plot style of the CreateRPMTDetectorInfoFromData results

Jan 11 2023

[update:Utsusemi-SAS:4.0devRPMT2] Add original DetectorInfo_newRPMT.xml for CreateRPMTDetectorInfoFromData

DATA_RDCT-184 BL15:RPMT処理の範囲の自由度を上げる

RPMTの全体領域と可視化領域が同じ中央点をもち、かつ傾きのない条件のDetectorInfoを雛形として python-utsusemi-SAS/ana/Reductionに配置する。これはCreateRPMTDetectorInfoFromDataから呼ばれて使用されるので移動はできない。

Jan 11 2023

[update:Utsusemi-SAS:4.0devRPMT2] Improve messages indications on RPMTDataConverter

  • いくつかのメッセージをDEBUGMODE=yの時だけ表示するようにした

  • いくつかのメッセージをUtsusemiMessageなどを使用するようにした

Jan 11 2023

[update:Utsusemi-SAS:4.0devRPMT2] Add new function to arrange RPMT DetectorInfo.xml for RPMT conditions

DATA_RDCT-184 BL15:RPMT処理の範囲の自由度を上げる

  • SASDetectorInfoEditorRPMTにincidentGravityParamを設定を追加し、保存時の桁数を10桁にした

  • RPMTの補正を修正するためのDetectorInfoを自動的に作成する手段を一つの関数として実装した

CreateRPMTDetectorInfoFromData(runNo, lamStep, deltaLam, factor, withPlot)

流れは以下の通り。

  1. 全体領域と可視化領域とが同じ中央点を持ち、かつ傾きがないDetectorInfo(DetectorInfo_newRPMT_origin.xml)を利用してヒストグラム化する

  2. 1.のデータでは(おそらく)ビームセンターは可視化領域の中心には存在しないため、Pixel単位でのずれ幅(XchShiftとYchShift)を決定する

  • ビームセンターは強度(1.0 < λ < 3.0)の最大値の点近傍にあると仮定して、強度最大点を捜索+2Dのガウス関数でフィッテイングし中央点を算出

  • 可視化領域の中央点との差をPixel単位で算出する

  1. 2.で求めたXchShiftとYchShiftの情報を埋め込んだDetectorInfo(temp_DetectorInfo_newRPMT.xml)を作成し、これを利用して再度ヒストグラム化する。結果ビームセンターが可視化領域中央近傍にある状態。

  2. 3.のデータにから各波長ごとの強度を取り出し、それぞれ2Dガウス関数でフィッティングし精密なビームセンターの波長依存性を出す

  3. 4.のビームセンターの波長依存性(重力落下)からRPMTの傾きと、λ→0極限の真のビームセンターを算出

  4. 5.で求めた傾きと真のビームセンターを利用し、DetectorInfoの<position>情報を修正し、出力ファイルに保存

Jan 10 2023

[bugfix:Utsusemi:4.0] The issue that D4MatrixCalc causes core dump on executing.

DATA_RDCT-191 空蝉4 : D4MatrixCalc()がCore Dumpする

UtsusemiD4Matrix::ax_unitsが正しく4つ存在しないために発生した。

  • UtsusemiD4Matrixで、ax_unitsの初期化がされていなかったのを修正した

  • D4MatrixCalcで、ax_unitsに代入するようにした

Jan 10 2023

[bugifix:Utsusemi:4.0] The issue that do_make_Utsusemi.py causes the error

Jan 9 2023

[update:Utsusemi-SAS:4.0devRPMT2] Update SASDetectorInfoEditorRPMT class to use latest Utsusemi class as a base

DATA_RDCT-184 BL15:RPMT処理の範囲の自由度を上げる

  • SASDetectorInfoEditorRPMTクラスのベースをUtsusemiDetectorInfoEditorNeunetに変更

    • SAS.i、TemplateDef.iの変更

    • UtsusemiDetectorInfoEditorTemplateへのコードの対応作業(主にメソッド呼び出し方法)

    • コンストラクタのベースクラスの初期化を追加

  • SASDetectorInfoEditorRPMTにおける修正と追加

    • <sas><rpmt><PHeightXrange>の綴り間違いを修正

    • XchShiftやYchShiftのTypeの変更、及びそれらを取り出したり変更するメソッドを追加

Jan 9 2023

[update:Utsusemi:4.0] Improve description of __version__

Jan 9 2023

[update:Utsusemi:4.0] Add new constructor with arguments to UtsusemiDetectorinfoEditorXXX class series.

UtsusemiDetectorInfoEditorTemplateに引数付きコンストラクタ(string dfile, bool workAsReader)を加えた。 同時にUtsusemiDetectorInfoEditorBaseや-Neunetでも、これを使用するコンストラクタ(ベースクラスを初期化)を加えた。

Jan 8 2023

[update:Utsusemi:4.0] Small change swig’s option in Makefile.py3.mac

Jan 8 2023

[update:Utsusemi:4.0] Changes UtsusemiDetectorInfoEditorBase to use UtsusemiDetectorInfoEditorTemplate

  • UtsusemiDetectorInfoEditorBaseをUtsusemiDetectorInfoEditorTemplateを利用する形に書き換えた

    • 不要なincludeなどを消去し、UtsusemiDetectorInfoEditorNeunetと共にコードを揃えた

  • UtsusemiGetNeunetHistogramのベースをUtsusemiGetHistogramTemplate<UtsusemiWiringInfoEditorNeunet,UtsusemiDetectorInfoEditorNeunet>に置き換えた

  • UtsusemiGetHistogramTemplateから呼び出されるDetectorInfo関連の関数をUtsusemiDetectorInfoEditorTemplateに実装した

  • TemplateDef.iに新しいUtsusemiDetectorInfoEditorBase用の設定を加えた

  • TemplateDef.iのUtusemiGetNeunetHistogram用の設定を書き換えた

  • Utsusemi.iでコンパイル時のWarningにより、%include UtsusemiDetectorInfoEditorBase.hhの順序をTemplateDef.iの後ろにした

Jan 7 2023

[update:Utsusemi-SAS:4.0devRPMT2] Add new functions to obtain gravity dropping parameter on RPMT

DATA_RDCT-184 BL15:RPMT処理の範囲の自由度を上げる

RPMT測定のビームセンターが波長によって落下する。その波長依存性を利用し、波長->0の極限の点を真のビームセンターとする。 その処理をHistBaseCommands::RPMTGetBeamCenterDropPosiに追加した。

  • 2Dフィッティングした各波長のビームセンター位置に対して線形フィッティングを行う

  • この線形フィッティング結果(落下線)からRPMT自体の傾きを算出する

  • 各波長のビームセンター位置を落下線上に射影する(最近接点)

  • 各点から落下距離を算出し、それに対し、A - B * (Lambda)^2 の式でフィッティングする

  • Aに当たる落下線上の点を算出し、真のビームセンターとする

落下パラメータBはDetectorInfoに書き出す予定なので、その枠組みを作成した(SetIncidentBeamWithGravityRPMTDetectInfo)

  • DetectorInfoの読み込み・書き込み

  • 各種値の取り出し

PutIncidentGravityParam() # B値取り出し
Double PutL2() # L2(TypicalL2)取り出し
Double PutPixelSizeX() # RPMTのX軸Pixelサイズ取り出し(0.205)
Double PutPixelSizeY() # RPMTのY軸Pixelサイズ取り出し(0.207)

落下パラメータを利用してConvertToQspaceを実行する必要があるので、対応した

  • ConvertToQspace::SetIncidentBeamWithGravityRPMTDetectInfoを追加した

    • DetectorInfoに書き込まれている落下パラメータBとTypicalL2を読み込む

  • ConvertToQspace::Executeで、落下パラメータAが0でもIncident vectorを計算するようにした

Jan 7 2023

[update:Utsusemi:4.0] Add new class UtsusemiDetectorInfoEditorNeunet

DetectorInfoEditorNeunetにSetRunNoなどの機能(UtsusemiDetectorInfoEditorBaseにある)を加えるために、新たにUtsusemiDetectorInfoEditorNeunetクラスを作成した。

ただし、UtsusemiDetectorInfoEditorBaseと共通化するための布石として、 - UtsusemiDetectorInfoEditorTemplate.hh を用意し利用している。

次のステップはUtsusemiDetectorInfoEditorBaseも置き換えること。

Jan 3 2023

[bugfix:Utsusemi-SAS:4.0] The issue about ModuleNotFoundError on import Manyo.SAS

Jan 3 2023

[update:Utsusemi-SAS:4.0devRPMT] unify the code indent in RPMTDataConverter (replace a tab charactor with 8 spaces, trim spaces)

Jan 3 2023

[update:Utsusemi-SAS:4.0devRPMT] RTMPDataConverter uses SASDetectorInfoEdirotRPMT instead of BoostXmlParser

DATA_RDCT-184 BL15:RPMT処理の範囲の自由度を上げる

RPMTDataConverterでのDetectorInfoを扱うのにBoostXmlParserを利用していたが、SASDetectorInfoEditorRPMTを利用するようにした。 また、RPMTDataConverter::Execute実行時にLLD_X, HLD_Xなどの値が0の場合はDetectorInfoの値を利用するようにした。

  • SASDetectorInfoEdirotRPMTにsas/rpmtのパラメータを取り出すメソッドを追加

  • RPMTDataConverter::SetParamsFromAnaEnvを書き換え

  • LLD_Xなどの値もDetectorInfoから取り出しストックするようにし、またそれを利用するように変更

  • RPMTDataConverter::ExecuteのLLD関連パラメータのデフォルトを0に

  • HistBaseCommandsのいくつかのメソッドで上記仕様に対応させた

  • Bank=”RPMT”のみを使用すると、DetectorInfo内の情報をそのまま利用する

  • Bank=”RPMT,<LLD_X>,<HLD_X>,<LLD_Y>,<HLD_Y>,<LmtCoi>”だと指定した値を利用する

Jan 3 2023

[update:Utsusemi:4.0] replace a tab charactor with 8 spaces, trim spaces (2)

Jan 3 2023

[update:Utsusemi:4.0] replace a tab charactor with 8 spaces, trim spaces

Dec 31 2022

[bugfix:Utsusemi:4.0] The issue that depend.mac occurs error

Dec 31 2022

[bugfix:Utsusemi:4.0] The issue that the warning messages ‘sprintf is deprecated’ are shown on compiling with clang++ on macOS

macOS上でコンパイル(clang++) した際に出されるWarningに対応した。

なお、Warningは以下の通り。

warning: 'sprintf' is deprecated: This function is provided for compatibility reasons only.  Due to security concerns inherent in the design of sprintf(3), it is highly recommended that you use snprintf(3) instead.
Jan 1 2023

[update:Utsusemi-SAS:4.0devRPMT] Add new functions to do fitting on 2D map of RPMT data

DATA_RDCT-184 BL15:RPMT処理の範囲の自由度を上げる

  • RPMTの2Dデータに対して2Dフィティング(Gauss関数)を行えるようにした(結果はBeam Center位置のLambda依存性)

Get beam center positions at each lambda range
RPMTGetBeamCenterDropPosi(DAT=None, lamStep="1.0,2.0,3.0,4.0,5.0,6.0,7.0", deltaLam=0.5, init_par="1.0e14, 5.0, 5.0, 150.0, 150.0", factor=1e-10, withPlot=False)

@param DAT (ElementContainerMatrix)
@param lamStep (string) list of the center lambda
@param deltaLam (float) width of lambra range for each the center lambda
@param init_par (string) Initial values for fitting "<A>, <w_X>, <w_Y>, <c_X>, <c_Y>"
@param factor (float) Intensity = factor*Intensity
@param withPlot (bool) Plot results or not
@retval EC ElementContainer for X-Y positions of beam center
  • RPMTDataConverterに指定したDetectorInfoを渡せるようにした(GetHistogramBaseSASの引数paramFilesを用いて)

Jan 1 2023

[update:Utsusemi-SAS:4.0devRPMT] Enables RPMTDataConverter to treat data conversion with given DetectorInfo

DATA_RDCT-184 BL15:RPMT処理の範囲の自由度を上げる

RPMTDataConverterクラスで、任意のDetectorInfoを与えて処理させることを可能とした。

Jan 1 2023

[update:Utsusemi-SAS:4.0devRPMT] Add new class SASDetectorInfoEditorRPMT to treat RPMT information and read/write sas/rpmt block in DetectorInfo

DATA_RDCT-184 BL15:RPMT処理の範囲の自由度を上げる

RPMT本体の設置誤差による誤差(中心ずれと回転)を修正するための枠組みを作成した。

DetectorInfoに存在する以下のブロックに対し、読み取り、書き込みができるクラスを作成した。

<detectorInfo>
    <instrumentInfo>
        <sas>
            <rpmt>
                <numOfLines>1024</numOfLines>
                <binWidth>2</binWidth>
                <sizeXch>304</sizeXch>
                <sizeYch>304</sizeYch>
                <XchShift>16</XchShift>
                <YchShift>35</YchShift>
                <PHeighXRange>128,1024</PHeighXRange>
                <PHeighYRange>128,1024</PHeighYRange>
            </rpmt>
        </sas>
    </instrumentInfo>
</detectorInfo>

またこのクラスではDetectorInfoを読み込んだのち、以下の情報を与えることで、そのpositionの情報を平行移動+回転させてPixelの位置情報の補正を行う。

  • ビームセンターの位置(Pixelによる指定、実数)

  • 回転角度

サンプルコード

mu_x = 150.95064536755632
mu_y = 150.67972084344447
angl = -2.7
t=ms.SASDetectorInfoEditorRPMT()
if t.Read(dfile):
   if t.SetBeamCenterPixel(mu_x, mu_y):
      if t.SetRotateAngle(angl):
         if t.Write(dfile2):
            DAT=Hist3.GetHistogramSAS( runNo="206316", Xrange="0.7 15.5 0.1 dL", Bank="RPMT", TimeSlice="-1 -1", frameBoundary="0.0", isTimeFoc=False, SolAngCor=True, paramFiles="- "+dfile2 )

次の作業はこのクラスを用いてRPMTDataConverterも修正する。

Dec 31 2022

[update:Utsusemi-SAS:4.0] Add uninstall option in Makefile.py3.mac

Dec 31 2022

[bugfix:Utsusemi-SAS:4.0] Small bugfix for compile on macOS

最新macOS上でコンパイルするのに必要な修正を行った。

  • depend.macで python-configが見つからない問題

  • Makefile.py3.macで不要な環境変数UTSUSEMIMANYOREVNUMBERが設定されている(エラーを起こす)のを削除

Dec 31 2022

[bugfix:Utsusemi-SAS:4.0] The issue that the warning messages ‘sprintf is deprecated’ are shown on compiling with clang++ on macOS

macOS上でコンパイル(clang++) した際に出されるWarningに対応した。

なお、Warningは以下の通り。

warning: 'sprintf' is deprecated: This function is provided for compatibility reasons only.  Due to security concerns inherent in the design of sprintf(3), it is highly recommended that you use snprintf(3) instead.
Dec 27 2022

[bugfix:Utsusemi-SAS:4.0] The issue that UBSlicer occurs error on PySide6 environment (2)

UBSlicerをPySide6でも動作するように修正した(2) PySide6用のuiファイルと作成用スクリプトを追加した。

Dec 27 2022

[bugfix:Utsusemi-SAS:4.0] The issue that UBSlicer occurs error on PySide6 environment

UBSlicerをPySide6でも動作するように修正した。

Dec 27 2022

[update:Utsusemi:4.0] Add DEFAULT_FONTSIZE environment variable in default bashrc

Dec 27 2022

[bugfix:Utsusemi:4.0] The issue that DlgSetUtsusemiEnv does not work about treating WORK_DIR

Dec 27 2022

[update:Utsusemi:4.0] Improve treating of working directory in applications using the environment variables

環境変数のUTSUSEMI_WORK_DIRを利用するように、以下のアプリケーションに変更を加えた。

  • DlgSetUtsusemiEnv.py

  • SequencerQ.py

  • D4MatSlicerQ.py

  • D4Mat2SlicerQ.py

  • DetectMap.py

あとUtsusemiHeader::UtsusemiEnvGetWorkDirにおいて環境変数が未設定の場合はUTSUSEMI_USR_DIRを返すようにした。

Dec 27 2022

[update:Utsusemi:4.0] Add new method in DetectorInfoEditorBase to pick up list of detId of position information in DetectorInfo

DetectorInfoから、position情報を持つdetIdを抜き出しvector<UInt4>で取り出せるメソッドをDetectorInfoEditorBaseクラスに追加した。

Dec 26 2022

[update:Utsusemi-SAS:4.0devRPMT] Add functions to treat shift values for visualization area on RPMT + KEK

DATA_RDCT-184 BL15:RPMT処理の範囲の自由度を上げる

RPMT本体の設置誤差による誤差(中心ずれと回転)を修正するための枠組みを作成した。

RPMTの観測全体領域(以下全体領域)のうち、304x304部分を抜き出して(以下可視化領域)PSDとして扱うようにしている。 これまで全体領域と可視化領域の関係は固定されていたが、それを自由にシフトできるようにした。

同時に設置時に回転したものを修正できるようにしたが、これは無効にしている。

コードに以下の変更を加えた。

  • RPMTDataConverter

    • 新たにシフト情報(_XchShift, _YchShift)を追加し指定できるようにした

    • DetectorInfoからシフト情報を取り出せるようにした

    • シフト情報を用いて全体領域から可視化領域を取り出すようにした

    • DetectorInfoから回転情報を取り出して回転できるようにも実装はしたがコメントアウトして使用しない

      • これは整数値のPixelを回転させることになるので強度のないPixelがでたり強度が偏ってしまうPixelがでたりするため

  • HistBaseCommands

    • ConvertFromRPMTK2Psdを、RPMTDataConverterに新しく作成した関数を用いるように改変した

  • 回転はRPMTDataConverterではせずにDetectorInfoのposition情報を回転させることで対応

DetectorInfoにおける、RPMT可視化領域シフト情報などのフォーマットは以下の通り。

<instrumentInfo>
    <sas>
        <rpmt>
            <numOfLines>1024</numOfLines>
            <binWidth>2</binWidth>
            <sizeXch>304</sizeXch>
            <sizeYch>304</sizeYch>
            <XchShift>0</XchShift>
            <YchShift>0</YchShift>
        </rpmt>
    </sas>
</instrumentInfo>
Dec 23 2022

[update:Utsusemi:4.0] Rewrite RPM SPEC files for HPN

BL11用に空蝉4のRPMパッケージビルド環境を調整した

Dec 23 2022

[update:Utsusemi:4.0] Add some files usefull for compiling Utsusemi on macOS with AppleSilicone

Dec 21 2022

[update:Utsusemi-SAS:0.3.7] Add the functions to apply LLD and HLD for each axis on RPMTDataConverter class independently

DATA_RDCT-184 BL15:RPMT処理の範囲の自由度を上げる

RPMTのX軸及びY軸それぞれの波高値の制限(LLD, HLD)を行えるようにした。

GetHisstogramSASのBank引数に以下のようにRPMTの後ろに各種パラメータを与えることで、各軸の制限を加えることを可能にした。

RPMT,<LLD_X>,<HLD_X>,<LLD_Y>,<HLD_Y>,<LmtCoi>

4.0.221220 or later

Dec 20 2022

[bugfix:Utsusemi:4.0] The issue the results of DymPDF calculation are invalid on Windows Utsusemi.

DATA_RDCT-186 空蟬4:DymPDFの処理がWindows上では正しく動作しない

Windows上のコンパイルで作成されたバイナリでは、ShamotoDymPDFクラス内のいくつかの変数の値が0となり結果がnanとなってしまっていた。 コード内部で PI という定数が使用されているが、出どころがよくわからない。 PI はLinuxでは円周率が入っているようだが、VisualCではエラーにならないが0.0を返す。

いずれにせよ PI は問題があるので全て M_PI を使用する(これは math.hで定義)。

また使用しない変数も散見されたので削除した。

Dec 19 2022

[bugfix:Utsusemi:0.3.7] The issue that DetectorInfoEditorBase occurs error on compiling.

Dec 19 2022

[update:Utsusemi:0.3.7] Add new methods at the classes around DetectorInfoEditorBase

DetectorInfoBase内でPosiInfoとBankInfoを扱うためのいくつかの機能をそれぞれのクラス内に移動した。

Dec 19 2022

[bugfix:Utsusemi:4.0] Typo in VisualContM ( Units of lattice constants )

Dec 19 2022

[update:uGao:master] Change the format to show scale parameters

Dec 18 2022

[update:Utsusemi:4.0] Update codes to compile manyo-lib on AppleSilicon macOS

AppleSiliconのmacOS上で万葉ライブラリをコンパイルするためのスクリプト群の動作検証を行い、必要な修正を行った。

  • nexusformatのコンパイルが従来のバージョンが4.4だと失敗、masterだと成功するので、masterを取得することにした

  • libsslやlibompに対するLibraryパスやIncludeパスを指定しないとコンパイルでエラーとなったのでsetenv.shに追加

  • libsslやlibompに対するパスを自動的に探しsetenv.shを作成するスクリプトを追加

  • PyVerの設定をsetenv.shに移動

Dec 18 2022

[update:Utsusemi:4.0] rename folder m1 to AppleSilicon including the scripts to build Utsusemi on macOS

Dec 17 2022

[update:Utsusemi-SAS:0.3.7] Add new WiringInfo (WiringInfo_20221125.xml)

Dec 17 2022

[update:Utsusemi-SAS:0.3.7] Add new WiringInfo (WiringInfo_after2021B_20220118.xml)

Dec 16 2022

[bugfix:uGao:master] The issue that error occurs on plotting after changing X Key on DetectMap mode.

DetectMapモードで表示する際に、XkeyやYkeyを変更した場合にShowボタンでプロットするとDETIDの情報が読み取れずにエラーとなる問題に対処した。

Dec 13 2022

[update:Utsusemi-SAS:0.3.7] Add arguments in ConvertFromRPMTK2Psd to set LLD, HLD and limit of coincidence

DATA_RDCT-181 BL15のRPMTデータからPulseHeightを取り出したい

RPMTのデータをPSD型イベントデータに変換する時のLLDやHLDなどを指定できるようにした。

GetHistogramSASの引数Bankに以下のようにカンマ区切りであたえる。

RPMT,<LLD>,<HLD>,<LmtCoi>
Dec 13 2022

[update:Utsusemi-SAS:0.3.7] Update environ_ana.xml from the beamline environment

Dec 10 2022

[update:Utsusemi-SAS:0.3.7] Add new method in RPMTDataConverter to pull out the pulse height information from RPMT event data

DATA_RDCT-181 BL15のRPMTデータからPulseHeightを取り出したい

RPMTのデータ変換コードに、Pulse Heightをヒストグラム化して取り出せる関数を加えた。

manyo::SAS::RPMTDataConverter::PutPulseHeight(ElementContainer* ecX, ElementContainer* ecY, vector<string> orgfiles, UInt4 width_bin, UInt4 max_bin, UInt4 LmtCoin)

X軸方向とY軸方向のイベントをコインシデンスした後の情報をヒストグラム化する。 結果はecXとecYに入る。

PythonコードをHistBaseCommands.pyに加え、facade化する必要がある。

Dec 9 2022

[update:Utsusemi-SAS:0.3.7] Add new envion_ana.xml and DetectorInfo for RPMT

Dec 9 2022

[bugfix:Utsusemi-SAS:4.0] The issue that 2D data from QzProjection and MakeRegionOfSectAve is plotted with only index on M2Plot+

DATA_RDCT-182 BL15:M2Plot+の2Dプロットで横軸のラベルがPixelのままの問題

QzProjectionとMakeRegionOfSectAveの出力データをM2Plot+で表示すると、必ず横軸がindexになる問題に対応した。

M2Plot+起動直後の2Dプロット用のXKeyとYKeyは指定することができる(そういう機能がM2Plot+には搭載されている)。

与えるデータ(ElementContainerArray, Matrix)のヘッダに以下のキーでXKeyとYKeyを指定しておけばよい。

M2PP_X_KEY
M2PP_Y_KEY

QzProjectionとMakeRegionOfSectAveの出力データのヘッダに上記の情報を与えることで解決した。

Dec 8 2022

[bugfix:Utsusemi:0.3.7] Improvement about treatment of cases in a frame using Ambiguity param=3 at UtsusemiFileterBase::CheckAmbiguousFrame

Dec 8 2022

[update:Utsusemi:0.3.7] Add new functions to crean the dictionary of Run Data Path.

DATA_RDCT-180 BL15:空蟬でRPMTのヒストグラム化処理で1度目失敗し、2度目は成功する

空蟬ではデータ処理で使用したデータファイルのパスをキャッシュ的に残して同じRunNoが来れば再利用するのだが、今回はそれが悪さをしている。

SASにおけるRPMTの処理はedbデータをPSD形式に変換する処理により、オリジナルのedbデータがある場所とは異なるフォルダに変換後のデータを配置する。 その変換後のデータの場所がキャッシュには入っていないために、データが見つからないというエラーが出た。

対応としては、RPMT処理の時にはこのキャッシュをクリアするようにすれば解決するので、そのキャッシュをクリアする関数をUtsusemiHeaderに加えた。

追加したのは以下。

..code-block:: c

UtsusemiHeader.hh

void UtsusemiDumpRunDataPathDict(); void UtsusemiClearRunDataPathDict();

キャッシュのキーを表示する機能(UtsusemiDumpRunDataPathDict)と、キャッシュをクリアする機能(UtsusemiClearRunDataPathDict)である。

Dec 8 2022

[bugfix:Utsusemi-SAS:0.3.7] The issue that treatment of RPMT occurs error about ‘No data of given run(s)’

DATA_RDCT-180 BL15:空蟬でRPMTのヒストグラム化処理で1度目失敗し、2度目は成功する

このエラーはRPMTのオリジナルイベントデータをPSDタイプのイベントデータに変換した後のデータが見つからないというものである。

これは空蟬の中でRun Numberを与えた時にそのイベントデータの場所(フォルダ)を探す際に、見つけたフォルダはキャッシュに蓄えられる。以降、Pythonを閉じない限り、同じRun Numberでフォルダを探す場合、必ずキャッシュの情報を利用する。

一方BL15のRPMT処理では別のデータフォルダに変換後のイベントデータを配置するので、キャッシュの情報と食い違うため、データが見つからないというエラーとなる。 よってRPMT処理の場合は変換後に一旦キャッシュをクリアすれば、新たに作成したフォルダも検索されるので無事にデータが発見されることになる。

そのキャッシュをクリアするコマンドをRPMT処理の適当な場所へ加えた。

Nov 29 2022

[update:Utsusemi-SAS:4.0] Add installation bin/UBSlicer for debian package on Ubuntu22

Nov 29 2022

[bugfix:Utsusemi-SAS:4.0] The issue about failure to install bin/UBSlicer for debian package

Nov 29 2022

[update:Utsusemi-SAS:4.0] Add installation bin/UBSlicer for debian package

Nov 28 2022

[updata:Utsusemi:4.0] Add new WiringInfo and update environ_ana for BL01

Nov 28 2022

[update:Utsusemi:4.0] Add new MaskInfo_220121.xml and update environ_ana.xml for BL01

Nov 28 2022

[update:Utsusemi-SAS:4.0] Add UBSlicer louncher in SAS/bin

Nov 22 2022

[update:Utsusemi-SAS:4.0] Update bashrc.py3.SAS

Nov 22 2022

[update:Utsusemi-SAS:4.0] Add ubslicer and MPlot aliases settings into bashrc.py3.SAS

Nov 22 2022

[update:Utsusemi-SAS:4.0] Add environment variable MLF_T0PIDCHECK_IGNORED into bashrc.py3.SAS

Nov 22 2022

[update:Utsusemi-SAS:4.0] Update do_make_Utsusemi.py to latest one

Nov 22 2022

[bugifx:Utsusemi-SAS:0.3.7] The issue that the events outputted from RPMTDataConverter occurs warnings that T0 Event is broken becase module in T0Event is not same as given moduleNo

Nov 21 2022

[bugfix:Utsusemi-SAS:0.3.7] put environ_ana.xml back to use previous WiringInfo_newRPMT_190123.xml

Nov 10 2022

[bugfix:Utsusemi:4.0] The issue that wrong python version is used in setting file of debian package for Ubuntu22 ( DATA_RDCT-177 )

Nov 10 2022

[bugfix:manyo:0.3.4] The issue that wrong distribution version is used in setting file of debian package for Ubuntu22

Nov 10 2022

[bugfix:manyo:0.3.4] The issue that wrong python version is used in setting file of debian package for Ubuntu22

Nov 10 2022

[bugfix:Utsusemi-SAS:4.0] The issue that wrong python version is used in setting file of debian package for Ubuntu22 ( DATA_RDCT-177 )

Nov 10 2022

[bugfix:Utsusemi-DNA:4.0] The issue that wrong python version is used in setting file of debian package for Ubuntu22 ( DATA_RDCT-177 )

Nov 10 2022

[bugfix:Utsusemi-DNA:4.0] The issue that compile on Ubuntu22 environment failes

DATA_RDCT-177 空蟬4:Ubuntu22.04LTS対応

Ubuntu22環境でのmanyo-LevmarToolsやmanyoのコンパイルに失敗するため修正した。

  1. napi.hが見つからない問題

これはUtsusemiで使用しているdo_make_Utsusemi.py (Ubuntu22対応済み)をコピーして使えるようにすることで対応した。

  1. ISO C++17対応問題

以下のようなエラーが出る。

AdvDomain.hh:87:47: error: ISO C++17 does not allow dynamic exception specifications
   87 |      void SetSource(ElementContaienr &src) throw(invalid_argument) ;
      |                                            ^~~~~

これの回避は該当するコードを全て書き換える必要があるが、Makefileの CXX_OPTに -std=c++11を付与することで、とりあえず回避した。 だが、これは将来的には修正が必要かと思われる。

Nov 9 2022

[update:Utsusemi:4.0] Fixed typo in setting files to make debian pakcage for Ubuntu22

Nov 9 2022

[update:Utsusemi:4.0] Add setting files to make debian pakcage for Ubuntu22

Nov 9 2022

[update:manyo:0.3.4] Add setting files to make debian pakcage for Ubuntu22

Nov 9 2022

[update:Utsusemi-SAS:4.0] Fixed typo in setting files to make debian pakcage for Ubuntu22

Nov 9 2022

[update:Utsusemi-SAS:4.0] Add setting files to make debian pakcage for Ubuntu22

Nov 9 2022

[update:Utsusemi-DNA:4.0] Add setting files to make debian pakcage for Ubuntu22

Nov 7 2022

Bugfix of the issue that PySide2 installation fails on Windows Binary Installer for Anaconda Python.

Oct 18 2022

[bugfix:Utsusemi:4.0] The issue that DetectMap occurs error at some conditions.

Oct 18 2022

[bugfix:Utsusemi:4.0] The issue that ImportError about QAction occurs on PySide

Oct 18 2022

[bugfix:uGao:master] The issue that ImportError occurs on PySide

Oct 18 2022

[bugfix:Utsusemi-DNA:4.0] The issue that new facade functions are not shown on SequenceEditor ( DATA_RDCT-154 空蟬4:DNAの新しいモニターの処理 )

Oct 8 2022

[update:manyo:0.3.4] Update do_make_Manyo.py to change –without-para as default

Sep 30 2022

[update:Utsusemi:4.0] Add DNA and NBR to instrument selection on Utsusemi Environment Setting Dialog.

空蟬のGUI-onlyモード時の環境設定ダイアログの装置選択にDNAとNBRを加えた。

Sep 9 2022

[bugfix:4.0] The issue that Syntax error occurs on using Makefile

Sep 9 2022

[bugfix:0.3.4] The issue that Syntax error occurs on using Makefile

Sep 9 2022

[bugfix:Utsusemi-SAS:4.0] The issue that Syntax error occurs on using Makefile

Sep 9 2022

[update:Utsusemi-SAS:4.0] replace /usr/bin/python to python3 in some executable codes

いくつかのコードで、/usr/bin/python とpython2を前提に書かれている部分が多かったので、/usr/bin/python3 に修正した

Sep 9 2022

[bugfix:Utsusemi-DNA:4.0] The issue that Syntax error occurs on using Makefile

Aug 30 2022

[bugfix:master] Restore removed code at last update (Remove useless code which is required on old macOS environment. Recently not need.)

昔からあるQtCom.pyの以下の部分は、m1 mac + montereyなら削除しても問題なかったが、 intel mac + big sur では接続エラーとなったため、元に戻した。

class CommQt(object) :

def NewComm(self, portno, args):

    # プラットフォームが Mac なら
    if sys.platform == "darwin":
        # 起動待ち時間を追加。不具合により、Mac では一度接続に失敗すると
        # リトライによる再接続ができないため
        time.sleep(9.0)
Aug 29 2022

[update:master] Remove useless code which is required on old macOS environment. Recently not need.

Aug 29 2022

[update:master] Add or improve docstrings of M2PlotPlusCui

4.0.220825 or later

Aug 25 2022

[update:Utsusemi:4.0] improve treatments of environment variables in codes

空蟬で使用できる環境変数が具体的に何なのかがUtsusemiHeaderのコードの各所に分散しているためわかりにくい。 それを解消し、UtsusemiHeader.hh にまとめた。

Aug 25 2022

[update:Utsusemi:4.0] improve version indication methods.

Pythonスクリプトで確認するバージョンの表記を見直した。

現状、 utsusemi.__version__import UtsusemiInfo の確認があるが、これらのバージョン表記を以下のように、x.y + rev に統一する方針。

  • 4.0.220825

  • 4.0 (rev 220825)

実際には下記のように空蟬のC++モジュールの定数を使用する。

utusemi/__init__.py

import Manyo.Utsusemi as mu
__version__ = "{}.{}".format(mu.UTSUSEMIMANYOVERSION,mu.UTSUSEMIMANYOVERSIONREV)

なお、それぞれの定数は以下で指定される。

  • UTSUSEMIMANYOVERSION は UtsusemiHeader.hh のコードに直書き

  • UTSUSEMIMANYOVERSIONREV は コンパイル時の環境変数 UTSUSEMI_REV をMakefileで使用

また、do_make_Utsusemi.pyでは、UTSUSEMI_REV があれば使用、なければ 0 となるようにした。

Aug 16 2022

[update:Utsusemi:4.0] Update do_make_Utsusemi.py to be used on Ubuntu 22.04

  • Ubuntu 22.04環境で動作するように更新

  • “–with-para”を加えた(デフォルトはコンパイルの並行処理をしない)

Jul 20 2022

[bugfix:uGao:master] The issue that Confirm region menu occurs the error

DATA_RDCT-166 uGao:Error on calling “Confirm region” from Edit menu on M2Plot+

M2Plot+のConfirm regionメニューを選択するとエラーが出現する問題に対応した。

このメニューは、u2dplotのスライス表示なしのモード時に選択した領域をストックできる機能(RegionDialog)であり、クリックした点やドラッグした始点と終点の座標を取り出す部分で不要な値にNoneが入ったため、エラーとなっていた。

Noneが入ることでエラーとなるのはいつからかはわからないが、必要な座標にNoneが入っていた場合に処理を変更した。 エラー箇所は MakeDiagramであり、その戻り値は matplotlib.patches のオブジェクトである。 戻り値のオブジェクトの作成に失敗する場合には None を戻すようにし、MakeDiagram() が None だった場合の処理(図形オブジェクトの追加など)を適正化した。

PySide6で実行した場合に正しく座標の値がRegionDialogに設定できない問題にも対処した。

Jul 19 2022

[update:manyo:0.3.4] move function to treat MLF_T)PIDCHECK_IGNORED environment variable from T0TreatToolsBase to MlfHeader

Jul 19 2022

[bugfix:manyo:0.3.4] typo of methods name around AcquireNeuntronSource series

Jul 19 2022

[update:manyo:0.3.4] Add new function to AcquireNeutronSource codes to get proton current information from the server constructed by N.Okazaki placed outside of J-PARC.

DATA_RDCT-169 万葉:外部からのプロトンカレント取得の仕様決定と実装

インターネットからのプロトンカレント取得に、岡崎さんが作成したサーバー https://www-cont.j-parc.jp へアクセスするように改変した。

  • これまでのhttp接続に加え、httpsで接続できるよう内部を改変した。内部変数 string HostProtocol (新規に用意)が “http” か “https” で AcquireNeutronSourceInformationBase::SendRequset の処理を分ける。

AcquireNeutronSourceInformationBase::SendRequestHTTP(string& request)
AcquireNeutronSourceInformationBase::SendRequestHTTPS(string& request)
  • ホスト名設定関数 AcquireNeutronSourceInformationBase::SetHostName で与えたホスト名にhttpsが含まれる場合に HostProtocol を “https” にし、それ以外では “http” とする。

  • ホスト名(プロトコル込み)を環境変数 MLF_PROTONSERV_HOSTNAME に指定してあれば、それを利用するようにした。無い場合はこれまで通りJLAN内の( http://www-cont.j-parc.jp )をデフォルトで使用する。

  • openssl/ssl.h, openssl/err.h をincludeに追加した。

  • 環境変数を読むための関数をMlfHeaderに追加した。

MlfEnvGetProtonServerHostName()
MlfEnvGetIsQuiet()
  • MLF/Makefileを ssl ライブラリをリンクするように修正

Jul 4 2022

[update:uGao:master] Change rule to create file names for SaveAsText.. function on uGao.MPlot.

MPlotの Save as Text のファイル名の改変。

これまで、MPlot上でのプロットデータをテキストファイルに書き出す際には、複数のプロットが表示されていることを前提に下記のようなフォーマットとなっていた。

<filename>-#.txt

ここで<filename>はファイル保存ダイアログで与えたファイル名から拡張子を除いた部分であり、# はナンバリング(1からスタート)である。

ただし、この形だと以下のような不便な点があった

  • プロットが一つしかない場合でもにナンバリングされる

  • 似たようなファイル名を指定するのに保存ダイアログ上で既存のファイルをクリックすることが多いが、その際に既存のファイル名に入っていたナンバリングも含めて指定してしまうことが多く、例えば filename-1-1.txt という二重にナンバリングされるファイルを作成してしまうことが多い

そこで、以下のような命名ルールにした。

  • 最初のプロットはファイル保存ダイアログで指定したファイル名をそのまま使用

  • 二つ目以降のファイル名には順次ナンバリングしたファイル名をつける。

  • この場合、似たようなファイル名を指定する場合、ナンバリングのないファイル(最初のプロットデータ)を指定することで、二重にナンバリングされたファイル名にはならない

sample.txt
sample-1.txt
sample-2.txt
sample-3.txt
Jun 29 2022

[bugfix:Utsusemi:4.0] Fix typo on DetectMap GUI parts

Jun 29 2022

[bugfix:Utsusemi:4.0] The issue that new plotter function on DetectMap causes the error

DATA_RDCT-168 空蟬4:DetectMapのNew Plotterの処理に問題

DetectMapでNew Plotterボタンを押すと、新しいMPlotは起動するが、エラーメッセージが出てPlottersリストに追加されない。 Python2時代には大丈夫だったコードがエラーを吐いたようだ。

あとマウス位置の情報表示の表記を少し変更した。

Jun 27 2022

[update:uGao:master] Add CUI commands to load/save text file

DATA_RDCT-167 夕顔:MPlotのOpen… とSave As…のCUI追加

以下の点について機能を追加した。

  • 夕顔のMPlotのメニューから選べるテキストファイル入力・出力機能のCUIを追加

    • MPlot::LoadFromText

    • MPlot:SaveAsText

  • メニューのSaveAsするとプロッタのMainTitleとSubTitleが保存されるが、Open…でそのSaveAsで作成したファイルを読み込んでもMainTitleとSubTitleが反映されないので、反映されるようにした。

  • MPlot::SetMainTitleとSetSubTitleで文字列にスペースが入っているとうまく動作しない問題に対処(uGaoUtil::STRING_TO_REPLACE_SPACEを利用)

## 付記 SaveAsTextの引数は、SaveAs、およびSaveAsHistを選択して出てくるダイアログの設定を反映している。

::

MPlot::SaveAsText( filepath, isHist=False, useMask=False, maskVal=None)

  • filepath : 保存ファイルのパス

  • isHist : ヒストグラム型で保存するか、散布型で保存するか

  • useMask : 自分でマスク値を指定する場合はTrue

  • maskVal : 自分で指定したいマスク値を指定

Jun 17 2022

[bugfix:uGao:master] The issue fails to import the external fitting function defined by BL staff and users.

DATA_RDCT-165 夕顔MPlotフィッティングでの外部関数使用機能修正

装置やユーザー定義の外部フィッティング関数の読み込み時の問題に対処した。

  • 古い環境変数を使用していたのを修正

  • 仕様では装置定義関数のファイルとして ${UTSUSEMI_BASE_DIR}/${UTSUSEMI_INST_CODE}/facadeに置かれているMPlotFitingFuncs_XXX.py がターゲットだったが、正しく読み込まれないのを修正

  • ユーザー定義ファイルを ${UTSUSEMI_USR_DIR}/facade においても読み込むように更新(その時のファイル名は”MPlotFittingFuncs_*.py” )

  • その他、Fitting Dialogのボタンで関数を読み込んだときにエラーが出るのを修正

Jun 16 2022

[update:manyo:0.3.4] Add new environment variable MLF_T0PIDCHECK_IGNORED to ignore T0 pulse id check in MLF/T0TreatToolsXXX

DATA_RDCT-164 空蟬:問題のあるNEUNETからのイベントが処理できない

T0TreatToolsBaseで、対象イベントファイルのキッカーイベントが壊れていてPulseIdが正しく並んでいないことがある。 この場合T0TreatTools内ではPulseIdの不連続を見つけた時点でそれまで蓄えてきたPulseIdやT0Table、T0Clockなどのテーブルを一旦クリアするようになっている。 この仕様を以下の環境変数で制御できるようにした。

MLF_T0PIDCHECK_IGNORED=y

この環境変数が y の時はPulseIdが不連続であってもキッカーのテーブルをクリアしないようにした。

Jun 13 2022

[update:uGao:master] Add detId and PixelNo to the pixel information shown at u2dplot on moving mouse pointer.

DATA_RDCT-163 夕顔:M2Plot+のDetecertMapモードでの挙動改良

マウス移動中に示されるPixel情報に、detId(検出器ID)とPixelNo(端から何番目のPixelか)を加えた

May 27 2022

[bugfix:manyo:0.3.4] Add new function to BoostXmlParser

DATA_RDCT-156 BoostXmlParserの機能追加

  • 目的の要素の子要素の名前を一覧(vector<string>)で取り出す機能を追加

  • DebugModeを追加(Quiet Modeにも影響する)

4.0.220520 or later

May 20 2022

[bugfix:Utsusemi:4.0] The about that data reduction for continuous rotation mode on D4Mat2Slicer

DATA_RDCT-150 空蟬4:D4Mat2Slicerの連続回転測定用オンラインモードの問題

現象

連続回転測定のデータ処理でオンラインモードでの処理で、with Projection チェックボックスをオンにして自動的にProjectionを行なった場合、データが正しくない問題に対処。 チェックボックスをオフにして手動でProjectionを行った場合は正しい。

問題点と対応

Projection処理を行うルーチンを同じにしても問題は解決しない。結果的に試料の各軸の回転角度を正しく読み込めていないことが判明。その原因は with Projectionをオンにした場合、試料情報のパネルが全て disabled 状態になるが、各軸の回転角度を読み込むコードの中で、 disabled 状態なら読み込まないという設定にしていた。この禁止設定をなくすことで対応した。

オンラインモードでのコード処理なので、ほぼ他の処理には影響はないはず。

May 20 2022

[update:Utsusemi:4.0] Gives default data dir path (UtsusemiEnvGetDataDir) to UtsusemiEventDataMonitor::_PathToDataRoot

May 19 2022

[update:Utsusemi:4.0] Update MakeRunList to treat LakeShore336 information

MakeRunListでLakeShore336 (LS336) の情報が取得できるようにした。

MakeRunListのdevTempのパラメータとして、LS336のデバイス名と見たいセンサー二つをカンマ区切りで以下のように指定する。

<DevName>,<S1>,<S2>

例えば、デバイス名が SELakeShore336 , 対象となるセンサーが KelvinA 及び KelvinC だとすると下記のようになる。

SELakeShore336,A,C

センサーの指定は KelvinA => A , KelvinB => B という感じで、D5まで受け付ける。

May 17 2022

[bugfix:Utsusemi:4.0] The issue that normalization by kickers on D4Mat2Slicer fails on using external script

DATA_RDCT-155 空蟬4:D4Mat2Slicerで強度がおかしくなる

ここまで行ってきた修正に対し、外部スクリプトを使用した際のチェックを行ったところ、若干勘違いをしている部分があったので、修正した。

これに関連して、PutNumOfT0ListInCasesの戻り値であるが、コードを見ると、ret[caseId]++ の表記があり、すなわち戻り値のvectorのインデックスは CaseID である、つまり CaseID=0 も含める必要がある。 一方、NumOfCasesは、CaseId=0は含まないとみなしているので、retがオーバーフロー ( retのサイズが NumOfCasesだったため) することになる。

具体的には NumOfCases=10だった場合、とりうるCaseIdは無視される0も含めて

[0,1,2,3,4,5,6,7,8,9,10]

となるため、PutNumOfT0ListInCasesの戻り値のベクターサイズも (NumOfCases + 1)である。

May 17 2022

[bugfix:Utsusemi:4.0] The issue that normalization by kickers on D4Mat2Slicer fails.

DATA_RDCT-155 空蟬4:D4Mat2Slicerで強度がおかしくなる

現象

二つのRunを重ね合わせた時、境目近傍の一部の強度がおかしい。おそらくキッカーのノーマライズに失敗している。

対応

D4Matrix2::ImportEcmsContRotのキッカーでのノーマライズを与えているが、その指定方法が間違っていた(本来CaseId[ind]であるはずが、ind であった)ので修正することでおかしな強度は消えた。

May 16 2022

[bugfix:Utsusemi:4.0] The issue that normalization by kickers on D4Mat2Slicer fails at some caseInfo patterns with user external scripts on data reduction

DATA_RDCT-155 空蟬4:D4Mat2Slicerで強度がおかしくなる

データリダクション外部スクリプトを使用したときに、相変わらずノーマライズに失敗する。

外部スクリプトを使用する直前に、マージしたキッカー数を使用してECMのヘッダのキッカー情報を置き換えることでうまくいく。

May 16 2022

[bugfix:Utsusemi:4.0] fixed small problems on D4Mat2Slicer

  • D4Mat2SlicerQのGUI上のパラメータを反映するメソッドUpdateXtalParamFromGUI()を実行した際に、DataReductionパネルのReductionボタンを押すのと同じ挙動を行うが、その際に一部上書きされるパラメータ self.doneOnLineModeFirstPrmSet があったので、実行前の設定に戻すように処理を加えた

  • SPEファイル保存時のファイル名で、ピリオドが複数ファイル名に入ると問題が発生する(外部のコードで読み込むときなど)時があるので、最後の角度の小数点のピリオドを “_” に変更した。

May 16 2022

[bugfix:Utsusemi:4.0] The issue that normalization by kickers on D4Mat2Slicer fails at some caseInfo patterns

DATA_RDCT-155 空蟬4:D4Mat2Slicerで強度がおかしくなる

調査

調査の結果、規格化に失敗するパターンがあることがわかった。

  • CaseInfoで指定したCaseの範囲を逸脱したCaseIdが出現した場合に規格化が行われない

この差が生じる原因は以下。

内部でCaseId毎のキッカー数を取り出すPutNumOfT0ListInCases()を実行すると、逸脱したCaseIdが出現した場合その時の値も戻り値に加えようとして、出力の配列を拡張し逸脱したCaseIdのキッカー数を加えるために、PutNumOfCasesの値と誤差が出てしまう。

この差があるために規格化が行われない。

結論

  • CaseInfoで指定されたCaseInfoの範囲を逸脱した分は、PutNumOfT0ListInCasesには含めないこととする

  • D4Ma2SlicerQの中でCase毎のキッカー数を収める配列が、なぜかPutNumOfToListInCases()-1のサイズになっていたのを同じサイズにした

May 13 2022

[bugfix:Utsusemi:4.0] Small typo on sub sindow of D4MatSlicer.

May 12 2022

[update:Utsusemi:4.0] Remove print commands for PySide version

May 12 2022

[update:Utsusemi:4.0] Update LICENCE.txt

4.0.220512 or later

May 12 2022

[update:Utsusemi:4.0] Remove print commands for PySide version

May 12 2022

[update:Utsusemi:4.0] Update LICENCE.txt

May 12 2022

[update:uGao:master] Remove print commands for PySide version

May 12 2022

[bugfix:uGao:master] The issue that FastPlot causes error on showing SetAxisTickStyleDialog.

May 12 2022

[bugfix:uGao:master] The issue the function to turn on/off for Ticks mark on axes by checkboxes on FastPlot when matplotlib version is 3.0.0 or later

DATA_RDCT-147 夕顔:u2dplotのTickのオン・オフが効かない(matplotlib 3.x以降)

調査の結果、matplotlib 3.5.1ではTrue/Falseしか受け付けなかったが、matplotlib 3.1.2 でも同様にTrue/Falseしか受け付けないことがわかった。 いずれにせよ、”on”/”off”を使うか、True/Falseを使うかの両者を分けるバージョンとしては “3.0.0” とした。

結局のところ、内部でのパラメータはTrue/Falseでもち、3.0.0以下のバージョンでの”on”/”off”切り替えはプロット直前に判定するシンプルな形にした。

  • ほぼu2dplot.pyと同様の変更

  • 不要なmatplotlibのバージョンによる分岐を無くした

May 11 2022

[bugfix:uGao:master] The issue the function to turn on/off for Ticks mark on axes by checkboxes on u2dplot when matplotlib version is 3.0.0 or later

DATA_RDCT-147 夕顔:u2dplotのTickのオン・オフが効かない(matplotlib 3.x以降)

調査の結果、matplotlib 3.5.1ではTrue/Falseしか受け付けなかったが、matplotlib 3.1.2 でも同様にTrue/Falseしか受け付けないことがわかった。 いずれにせよ、”on”/”off”を使うか、True/Falseを使うかの両者を分けるバージョンとしては “3.0.0” とした。

結局のところ、内部でのパラメータはTrue/Falseでもち、3.0.0以下のバージョンでの”on”/”off”切り替えはプロット直前に判定するシンプルな形にした。

  • U2Params内部で持つ”TopSide”,”BottomSide”,”LeftSide”,”RightSide”パラメータはTrue/Falseで持たせる

  • 新しく保存するときはTrue/Falseで、保存した設定ファイルから読み込む時に”on”/”off”だったら、True/Falseに変換する

May 11 2022

[bugfix:Utsusemi-SAS:4.0] The issue that compile error occurs in LambdaDependCorrection and TreatWhklWithUB on macOS

May 7 2022

[update:Utsusemi:4.0] improve codes and output format on the conversion functions between U-V vectors and UB matrix in UtsusemiSqeCalc2

DATA_RDCT-131 空蟬4: VisualContQのUBマトリックス対応

いくつかのコードの整理と出力される値の調整を行なった。

  • UtsusemiSqeCalc2::_CalcInverseMatrix

    • gsl_linalg_LU_invertを使用するように変更

  • UtsusemiSqeCalc2::ConvToUBMatrix, ConvToUVvector

    • 戻り値が極端に小さい値(DBL_EPSILON以下)の場合に0.0とする機能を追加

    • 上記の機能を発現させるフラグ(bool flagRound)を加えた

  • UtsusemiSqeCalc2::ConvToUVvector

    • Uベクトル, Vベクトルの値が極端に小さい値(DBL_EPSILON以下)の場合に0.0とする機能を追加

    • Uベクトル, Vベクトルの値のうち、最大値が1.0となるようにした

    • 上記の機能を発現させるフラグ(bool flagRound)を加えた

May 7 2022

[update:Utsusemi:4.0] improve and bugfix for the conversion functions between U-V vectors and UB matrix in UtsusemiSqeCalc2

DATA_RDCT-131 空蟬4: VisualContQのUBマトリックス対応

いくつかのバグ修正とコードの整理を行なった。

  • UtsusemiSqeCalc2::ConvToUBMatrix

    • 余分な逆行列演算を行なっていたのを修正

  • UtsusemiSqeCalc2::ConvToUVvector

    • newで作成したクラス(SqeCalcXtalParam)をdeleteしていなかった問題に対処

    • 行列演算の部分を極力gsl_matrixやその関数を使用するように変更

May 6 2022

[update:Utsusemi:4.0] Add new conversion functions between U-V vectors and UB matrix in UtsusemiSqeCalc2

DATA_RDCT-131 空蟬4: VisualContQのUBマトリックス対応

UtsusemiSqeCalc2に、格子定数やU,VベクトルからUB行列を計算したり、その逆を行う関数を追加した(入力はPythonのリスト)。

vector<Double> UtsusemiSqeCalc2::ConvToUBMatrix( PyObject* LC, PyObject* UV, PyObject* VV )

vector<Double> UtsusemiSqeCalc2::ConvToUVvector( PyObject* LC, PyObject* UB )

サンプルコード

import Manyo.Utsusemi as mu

LC = [4.8,8.4,2.9,90.0,90.0,90.0]
UV=[0.0,1.0,0.0]
VV=[0.0,0.0,1.0]

tt=mu.UtsusemiSqeCalc2()
UB=tt.ConvToUBMatrix( LC, UV, VV )
print( "     {},{},{}".format(UB[0],UB[1],UB[2]))
print( "UB = {},{},{}".format(UB[3],UB[4],UB[5]))
print( "     {},{},{}".format(UB[6],UB[7],UB[8]))

UB_list= [UB[0],UB[1],UB[2],UB[3],UB[4],UB[5],UB[6],UB[7],UB[8]]
uvv=tt.ConvToUVvector( LC, UB_list )
print( "UVect = {},{},{}".format( uvv[0],uvv[1],uvv[2] ))
print( "VVect = {},{},{}".format( uvv[3],uvv[4],uvv[5] ))
Apr 26 2022

[update:Utsusemi-SAS:4.0] update some files about debug mode ane MakeFile.obj

Apr 26 2022

[update:Utsusemi-SAS:0.3.7] Add new class LambdaDependCorrection to correct data by the lambda dependency on the intensity

DATA_RDCT-124 BL15 波長依存性の関数作成

lambda依存性のある強度補正を行う。

基本的にはテキストファイルにlambdaとfactorを以下のように羅列し、これを読み込ませる必要がある。 テキストファイルの離散データを利用し、線形補完でFactorを計算する。

# Lambda, Factor
0.7, 1.0
0.8, 1.2
...

なお、このFactorでデータの強度を割ることになる。また、Bank単位での指定も可能である。

このfacadeは以下の通りである。

import Corr
Corr.LambdaDependCorrect(dat1,P1="SM,SC:dep_lambda1.txt")

ここで与えるパラメータは

"<Bank(s)>:<File>"

となる。<Bank(s)> は、複数のバンクをカンマ区切りで与えることも可能である。 また”ALL”を与えると全てのバンクに適応される。

<File>は、フルパスを与える必要がある。

Apr 24 2022

[bugfix:uGao:master] The issue thatn small intensity range is treated correctly on ParamDialog of u2dplot

DATA_RDCT-149 夕顔: 強度の欄に小さな値が入らない問題

ParamDialogの強度範囲の表記が”%.3f”だったので、0.001の桁より小さい数値が無視された。”%g”にすることで修正。

Apr 24 2022

[bugfix:Utsusemi-SAS:0.3.7] The issue the warning on compiling RPMTDataCoverter

RPMTDataConverterコンパイル時に下記のようなWarningが出る問題に対処。

RPMTDataConverter.cc: In member function ‘bool RPMTDataConverter::Execute(std::vector<std::__cxx11::basic_string<char> >, std::string, UInt4, UInt4, UInt4, UInt4)’:
RPMTDataConverter.cc:159:60: warning: ‘__builtin___sprintf_chk’ may write a terminating nul past the end of the destination [-Wformat-overflow=]
  159 |         sprintf( outfile_name_c, "SAS%06d_%02d_%03d_000.edb", runNo, _DaqId, i+1 );
      |                                                            ^
In file included from /usr/include/stdio.h:867,
             from /usr/include/python3.8/Python.h:25,
             from /opt/mlfsoft/manyo/include/Header.hh:29,
             from RPMTDataConverter.hh:4,
             from RPMTDataConverter.cc:1:
/usr/include/x86_64-linux-gnu/bits/stdio2.h:36:34: note: ‘__builtin___sprintf_chk’ output between 25 and 45 bytes into a destination of size 30
   36 |   return __builtin___sprintf_chk (__s, __USE_FORTIFY_LEVEL - 1,
      |          ~~~~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
   37 |       __bos (__s), __fmt, __va_arg_pack ());
      |       ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

問題のsprintf直前に

char outfile_name_c[30];

があるが、”SAS%06d_%02d_%03d_000.edb”が30でかつ、char文字列は最後にendを示す文字が必要なので、1つ足りない。そこで、char列の数を31にしたら、直った。

Apr 22 2022

[update:Utsusemi:4.0] Add new method to give ElementContainerArray as sliced data on ShamotDymPDF class

DATA_RDCT-152 空蟬4:DyPDFをテキスト入力

M2Plot+でのテキスト出力フォーマットのテキストファイルをDymPDFで使用するためのスクリプトを作成する目的で、テキストファイルをElementContainerArray (ECA) に変換し、そのECAをスライス済みデータとしてDymPDMに与えるメソッドを追加した。

これによりどのようなテキストファイルでもECAに変換すればDymPDFを使えるようになる。

tt=mu.ShamotoDymPDF()
tt.SetSlicedData(ECA)

なお、M2Plot+テキスト出力フォーマットをECAに入れるためのサンプルスクリプトは以下。

import Manyo
import Manyo.Utsusemi as mu

fname="Map_LSMO_03K_24meV.txt"
f=open(fname,"r")
pre_hw = None
conveted = []
sqe_q=[]
sqe_i=[]
sqe_e=[]
ECA = Manyo.ElementContainerArray()
while(True):
    l=f.readline()
    if l=="":
        break
    if l.find("#")==0:
        continue

    v=l.split(",")
    if pre_hw == None:
        pre_hw=float(v[1])
    if pre_hw==float(v[1]):
        sqe_q.append(float(v[0]))
        sqe_i.append(float(v[2]))
        sqe_e.append(float(v[3]))
    else:
        # make file for a slice
        EC = Manyo.ElementContainer()
        EC.PutHeaderPointer().Add(mu.UTSUSEMI_KEY_HW, pre_hw)
        EC.Add(mu.UTSUSEMI_KEY_MOMENTTRANSFER, sqe_q, mu.UTSUSEMI_KEY_MOMENTTRANSFER_UNIT)
        EC.Add(mu.UTSUSEMI_KEY_INTENSITY, sqe_i, mu.UTSUSEMI_KEY_ARB_UNIT)
        EC.Add(mu.UTSUSEMI_KEY_ERROR, sqe_e, mu.UTSUSEMI_KEY_ARB_UNIT)
        EC.SetKeys(mu.UTSUSEMI_KEY_MOMENTTRANSFER, mu.UTSUSEMI_KEY_INTENSITY, mu.UTSUSEMI_KEY_ERROR)
        ECA.Add(EC)
        pre_hw=float(v[1])
        sqe_q=[float(v[0])]
        sqe_i=[float(v[2])]
        sqe_e=[float(v[3])]
Apr 21 2022

[bugfix:Utsusemi:4.0] The issus that DetectMap shows error message on slicing along PIXEL and PSD

DATA_RDCT-153 空蟬4:DetectMapで選択領域ありスライスでエラー

原因

  • データを1Dプロットする際にプロッタのタイトルに使用するヘッダ情報(dictionary)で、存在しないキー(”PixelPosition”など)を取り出そうとしてエラー

対応

  • ヘッダ内のキーを確認してから取り出すようにした

  • along PSD or PIXELの時は、ヘッダに”Label”というキーのみ(おそらくMPlot上の”Label”として)登録されていたので、より細かい情報を”SubTitle”と言うキーで収めて、それをプロット時にタイトルに埋め込むようにした。

Apr 20 2022

[update:Utsusemi:4.0] Add DyPDF function

DATA_RDCT-77 空蟬4 Dynamical PDF 計算コード移植

飯田氏より依頼された下記に対応。

Magnetic Form Factorがないバージョンを作成してほしい(Facade名: DyPDF)

対応:ShamotoDymPDFの強度計算部分を修正した

Apr 18 2022

[bugfix:Utsusemi:4.0] The issue that arguments of NormFactor and detectorEffi are not used on data reduction in D4Mat2 continuous mode with on-line analysis.

DATA_RDCT-82 D4Mat2Slicer関連の要望

連続回転測定の処理でNormByKickersに対してNormFactorやdetectEffiが効かない問題に対処した。

  • UtsusemiReductionCommon::NormByKickers に double normFactor を入力し作用させるように改変した

  • UtsusemiD4Matrix2::ImportEcmsContRotPseudoOnLine に与える引数を ImoprtEcmsContRot とほぼ同じにした( normFactor, detEffi, reductCase の追加)

  • 上記に関連するPythonコードの修正

Apr 18 2022

[bugfix:Utsusemi:4.0] The issue that D4Mat2 continuous mode with on-line analysis causes error.

DATA_RDCT-82 D4Mat2Slicer関連の要望

オンラインモードで、[with Projection]にチェックが入っていない時に、[Projection]ボタンを押すと、オフラインモードの処理が行われる問題に対処した。

新しくオンライン用のProjection処理 OnProjForOnLine 関数を加え、self.IsOnLineMode=Trueの時に実行するようにした。

Apr 18 2022

[bugfix:Utsusemi:4.0] The issue that the experimental information is not shown on 2D-plotter of M2Plot+ produced by D4Mat2Slicer on continuous rotation mode.

Apr 15 2022

[bugfix:Utsusemi:4.0] The issue that D4Mat2 continuous mode with on-line analysis causes error.

DATA_RDCT-82 D4Mat2Slicer関連の要望

D4Mat2Slicerで、連続回転測定でのオンライン処理モードで、エラーが発生する問題に対処。 また同様にエラーが発生すると思われる箇所も修正した。 (以前に複数のRunNoを扱えるようにしたことの余波)

4.0.220408 or later

Apr 8 2022

[update:Utsusemi:4.0] Add warning message for obsolete method UtsusemiD4Matrix2::ProjectionStepByStep.

Apr 8 2022

[bugfix:Utsusemi:4.0] fixed do_make_Utsusemi.py to enable to distinguish OS version (RedHat series) correctly.

Apr 7 2022

[bugfix:Utsusemi:4.0] The issus about showing a memory leak message

Python3錠で、Manyo.Utsusemi.UtsusemiSqeXtalParamsのインスタンスに対してPython3の補完機能(TAB)を用いると、下記のメッセージが表示される

swig/python detected a memory leak of type 'Map< std::pair< std::string,std::vector< Double > > > *', no destructor found.

理由はよくわからないが、Map< pair< string, vector<Double> > > plotAxis をpublicからprivateに移動させると、このメッセージが消えた。

この際なので、いくつか存在するpublicにおいてあった内部変数を全て名前を変えて(_を付与し)privateにおいた。

Apr 7 2022

[update:Utsusemi:4.0] Revice codes to prepare for PySide6

DATA_RDCT-146 夕顔,空蟬4.2:PySide6対応

将来PySide6への対応へ向け、以下の置き換えを行った。

  • 古いPySideで使用されていたQComboBox.activated[str]をQComboBox.activatedに置き換える

  • 古いPySideで使用されていたQTreeWidget.setItemSelectedが廃止されるので、QTreeWidgetに登録される個別のQTreeWidgetItemオブジェクトのメソッドsetSelected()を使用する

動作検証環境

  • PySide(Ubuntu16.04LTS)

  • PySide2(Ubuntu20.04LTS)

Apr 6 2022

[bugfix:Utsusemi:4.0] The issue that finishing of DetectMap used on python interactive mode makes users leave the mode.

Pythonのコマンドラインから下記のようにDetectMapアプリを起動して、そのアプリを閉じるとPythonから抜けてしまう問題に対処した。

import utsusemi.vis.DetectMap as DM
DM.DetectMap(DAT)
Apr 5 2022

[update:uGao:master] replace obsolete use of QComboBox.activated for newer PySide6

DATA_RDCT-146 夕顔,空蟬4.2:PySide6対応

古いPySideで使用されていたQComboBox.activated[str]をQComboBox.activatedに置き換えて、将来PySide6への対応に備える。

Apr 4 2022

[update:uGao:rm_import_wild] Remove import statements using wildcard (2)

DATA_RDCT-101 空蟬4や夕顔のPythonコードからfrom XXX import * をなくしたい

MPlotとM2PlotPlus関連のコードに書かれていた from <module> import * とワイルドカードを用いたimportを撲滅する試み。

いくつかのコードで未定義のモジュールが出てきてエラーとなったのを修正した。

  • uGaoUtil::PlotException

  • uGaoUtil::PlotMessage

  • codecs

Apr 4 2022

[bugfix:uGao:master] The issue that M2PlotPlus cannot produce hi-resolution GUI on launching from other application

Apr 4 2022

[update:uGao:rm_import_wild] Remove import statements using wildcard

DATA_RDCT-101 空蟬4や夕顔のPythonコードからfrom XXX import * をなくしたい

MPlotとM2PlotPlus関連のコードに書かれていた from <module> import * とワイルドカードを用いたimportを撲滅する試み。

方針(仮)

  • numpyのモジュールは一般的な名前のものが多いため(exp,sqrt,..)、np という別名で扱う(import numpy as np)

import numpy as np
  • uGaoUtilのモジュールは、必要なモジュールのみをimportする形にした(が、importするモジュールや変数が結構多いことがわかり検討中)

from uGao.uGaoUtil as import XXX
  • from pylab でのモジュールは、本当は何が呼ばれているのか非常にわかりにくいため、numpyで置き換えられるものは置き換える。

from pylab import setp, getp, Normlize, Rectangle
  • pyside-uicでの変換後のファイル (ui_XXX.py, ui2_XXX.py) には適応しない

Mar 30 2022

[update:Utsusemi:4.0] Update DoxySwig40.i for current source codes

Mar 29 2022

[bugfix:Utsusemi:4.0] fixed wrong class name causing compile errors and fixed typo about comments with doxygen style

Mar 29 2022

[update:Utsusemi:4.0] Improve the command tree structure of SequenceEditor to enable to change the group and commands list freely

DATA_RDCT-135 空蟬4:SequenceEditorのコマンドのリストのグルーピング

SequenceEditorのコマンド選択欄の構造が、ComやCmm, DR など、facadeフォルダに入っているファサードファイルごとにグルーピングされていたが、そのグルーピングと並び方を変更できるようにした。

変更された例は以下のようなものである。

- SIK
    - File
        - Cmm.SaveDataToManyoBinary
        - Cmm.LoadDataFromManyoBinary
        - ...
    - DataReduct
        - Cmm.GetNeunetHist
        - Cmm.GetMultiEi2
        - DR.GetDataOfMonochroEi2
        - ...
    - Original
        - Com
        - Cmm
        - DR
    - Visualizer
        - D1Plotter

仕様詳細

これまでは以下のように、root(Functions)のSIKの下にCmm.pyのコマンド群がCmmの中に、という形で自動的にグループ化されていた。

- Functions
    - SIK
        - Com
        - Cmm
        - DR
    - Visualizer
        - D1Plotter

ちなみにこれまでもこの構造は、facadeフォルダに入っている Sequencer_facades.py を編集することで若干変更はできていた。 今回の更新で Sequencer_facades.py に対し、以下のような __Structures__ というリストを追記することで、上記の構造を変えることができるようにした。

__Structures__ = [("File",["Cmm.SaveDataToManyoBinary",
                           "Cmm.LoadDataFromManyoBinary",
                           "Cmm.SaveDataToDAVEgrp",
                           "Cmm.SaveDataToDump",
                           "Cmm.LoadDataFromDump"]),
                  ("DataReduct",["Cmm.GetNeunetHist",
                                 "Cmm.GetMultiEi2",
                                 "DR.GetDataOfMonochroEi2",
                                 "DR.GetDataOfMonochroEi3",
                                 "DR.ToPowder",
                                 "DR.MakeRunList"])
                 ]

なお、これまで使用していたComやCmmなどは、新たに Original というグループに移動する。

また、追記しない場合は、これまで通りの表示となる。

設定用リストの構造

一つのグループは、タイトルとコマンドのリストをタプルにしたものである。

それを順番に複数並べてリストとする。

[ (<title>, <list of commands>), (<title>, <list of commands>), (...) ]

編集手段とオーバーライト順序

この設定を書き込む Sequencer_facades.py は、空蟬のそれぞれの装置コードのフォルダにあるfacadeフォルダに格納されているが、同時に通常個人のファサードファイルを配置するフォルダ(環境変数 ${UTSUSEMI_USR_DIR}/facade で指定される)に置くことも可能である。

その場合、個人のフォルダに __Structures__ を設定したファイルを作成した場合、装置側の設定が個人フォルダのそれで上書きされる。

また、個人のフォルダにおくファイル名は必ず、 Sequencer_facades_XXX.py (XXXは任意でユニークなもの)という名前にすること。装置側の設定 ( ${UTSUSEMI_BASE_DIR}/${UTSUSEMI_INST_CODE}/facade/Sequencer_facades.py )の名前と被ると反映されないため。

使用例

上記の設定を個人のfacadeフォルダ、すなわち下記の場所のSequencer_facades_xxx.pyファイルに書き込む。

$ gedit ~/facade/Sequencer_facades_hoge.py

すると、上記のようにSequenceEditorのコマンド欄が変化することが確認できるはず。

Mar 29 2022

[bugfix:Utsusemi:4.0] The issue that D4Mat2Slicer occurs error when Xtalparam is loaded on MakeNewMatrix dialog in file menu.

D4Mat2Slicerで、Fileメニューの”Make New Matrix…”を選択すると現れるダイアログにおいて、その”Load param file”ボタンを用いてXtalParamファイルを読み込むとエラーとなる問題に対処した。

内部で存在しないメソッドUtsusemiSqeCalcXtalParams::PutAxUnitsを呼び出そうとしてエラーとなっていた PutAxLabelsは存在しているが、この戻り値は “X”のラベル,”Y”のラベル、”T”のラベル×2の順番であり、一方”Make New Matrxi”ダイアログはAx1,Ax2,Ax3,Ax4の順であるので、実際には不都合である。 よって、PutAxLabelsではなく、PutViewAxesLabelsを用いるのが正解。 同様に、Unitの方もPutViewAxesUnitsを用いるように改変した。

他の修正

  • PutAxLabelsの戻り値と同じ並び方のUnitもあれば良いだろうと、今回PutAxUnitsを追加した。

  • Make New MatrixダイアログやMake Virtual D4matパネルで、XtalParamではないファイルを読み込んだときにエラーを出すようにした。

  • いくつかdoxygenコメントをUtsusemiSqeCalcXtalParamsに追加した。

Mar 28 2022

[bugfix:Utsusemi:4.0] Small fix about line-indents in code of UtsusemiSqeCalcXtalParams.cc

Mar 28 2022

[bugfix:Utsusemi:4.0] The issue that UtsusemiSqeCalcXtalParam outputs a XtalParams.xml with wrong format about UBMatrix information.

DATA_RDCT-131 空蟬4: VisualContQのUBマトリックス対応

  • UtsusemiSqeCalcXtalParamの出力するUBマトリックス情報のタグ位置が間違っていたのを修正した

  • ちいさなバグ修正

Mar 27 2022

[bugfix:Utsusemi:4.0] The issue that pixel info (Pixel position, Polar and Azimuth angles) by DetectMap summation or integration of given pixels does not correct.

DATA_RDCT-111 空蟬4:DetectMap関連 DATA_RDCT-79 空蟬4 DetectMapでMPlotの出力にPixel情報(PolarAngle, AzimAngle, L2など)を見せるように

DetectMapで、Pixel範囲を指定してプロットした時に受け渡されているPixel情報(位置や2Theta, Azimuth角度など)が、選択領域の端のPixelのものが使われているが、正しい値としては選択(積分)領域の平均値であるべきである。 その点を修正した。

Mar 25 2022

[update:Utsusemi:4.0] Change method name from UtsusemiD4Matrix2::ProjectionStepByStep to ::Projection

DATA_RDCT-59 空蟬4 : D4Mat2のデータ保存・読み込み機能

  • ProjectionStepByStep名をProjectionに変更

次に必要なこと

  • オンラインモードでの挙動を確認(ここはいずれRedisPubSubに移行)

Mar 25 2022

[update:Utsusemi:4.0] Add the default values for arguments of methods in UtsusemiGetNeunetHistogram and WiringInfoEditorBase

Mar 24 2022

[bugfix:Utsusemi:4.0] The issue that runNo the delimitor of runNo argument in GetDataOfMonochroEi3 must be comma

GetDataOfMonochroEi3の引数 runNo で複数のRunを与えるときに、スペース区切りではなく、カンマ区切りでないと受け付けない問題に対処した。

基本的に他の関数では、引数にstringを用いていて複数指定が可能な場合、カンマ区切りを基本としている。 GetDataOfMonochroEi3の引数は、基本スペース区切り(オリジナルのSequenceEditorの仕様のため)であったが、後ほどカンマ区切りも受け付けるようにした。 一方で、GetDataOfMonochroEi3はGetNeunetHist -> Manyo.Utsusemi.UtsusemiGetNeunetHistogramを使用するようになり、RunNoはカンマ区切りのみとなった。 これらの仕様の混在により、問題が発生した。 今回は引数runNoを与えた場合に、スペース区切り、カンマ区切り、両方を許可するように修正した。

今後も、引数で複数の値を与える場合カンマ区切りを基本とするが、後方互換のためにいくつかはスペース区切りも許可するのは今まで通り。

あと、この変更でエラーが出るようになった部分も修正した。

Mar 24 2022

[bugfix:Utsusemi:4.0] Typo in GetDataOfMonochroEi3 docstring

Mar 23 2022

[bugfix:Utsusemi:4.0devApp] The issue that DlgSetUtsusemiEnv.py does not work correctly on saving file without change of beam line.

DATA_RDCT-138 空蟬4.2:GUIコードのアプリ化

_loadenvのアップデートに伴い、挙動の不自然なところがあったので修正した。

  • DlgSetUtsusemiEnv.pyを起動してビームライン選択リストに触れずに保存した場合に、必ず”SIK”が選ばれる問題

Mar 23 2022

[update:Utsusemi:4.0devApp] Improved environment settings

DATA_RDCT-138 空蟬4.2:GUIコードのアプリ化

以下の仕様を満たすために変更を行った。

想定仕様

主なファイル

  • _loadenv

  • _setEnvUbuntu

  • bashrc.SIK

_loadenv

全ての基本となるファイル。全てのAppスクリプトの先頭で読み込まれる。主な機能は以下の通り。

  1. OS依存性

    OS環境により、OS環境依存設定ファイル(_setEnvUbuntu, _setEnvMac)、ユーザー環境設定ファイル(utsusemienv.cfg)のパス、UTSUSEMI_DATA_DIR, UTSUSEMI_USR_DIRのデフォルト位置が設定される。

  2. ユーザー環境設定ファイル

    ユーザー環境設定ファイル(utsusemienv.cfg)がなければ作成する。さらにあらかじめUTSUSEMI_INST_CODEが指定されていれば、それを設定とする。

  3. ユーザー環境設定ファイルにより設定

    ユーザー環境設定とは EnvironSetting アプリで変更可能な、データ処理に関連するものである。このファイルを利用して以下の環境変数の設定を行う。

    • UTSUSEMI_DATA_DIR

    • UTSUSEMI_USR_DIR

    • UTSUSEMI_DEBUGMODE

    • UTSUSEMI_INST_CODE

    • UTSUSEMI_LOG_QUIET

    • UTSUSEMI_MULTH

    • UTSUSEMI_DEFAULT_FONTSIZE

  4. OS環境依存の環境変数設定

    後述の_setEnvUbuntuを利用して設定する。

_setEnvUbuntu

主に空蟬本体の起動に関係する環境変数を設定する。

  • MLFSOFT_PATH

  • MANYO_PATH

  • UTSUSEMI_BASE_DIR

  • PYTHONPATH, PATH, LD_LIBRARYPATH

設定

最小限の設定

最小限の設定は _loadenv ファイルのあるbinフォルダを環境変数 PATH に追記するだけである。

export PATH=/path/to/utsusemi/bin:${PATH}
使用BLの固定

使用するBLを固定したい場合は、 UTSUSEMI_INST_CODE を先に指定しておく。

export UTSUSEMI_INST_CODE=SIK
export PATH=/path/to/utsusemi/bin:${PATH}
空蟬環境を複数利用

使用する空蟬環境を MLFSOFT_PATH レベルで複数作成し、あらかじめ指定しておけば良い。

なお、 MLFSOFT_PATH は指定しないとデフォルト (“/opt/mlfsoft”) が使用される。

export MLFSOFT_PATH=/opt/mlfsoft
export PATH=/path/to/utsusemi/bin:${PATH}
設定サンプル

今回の変更に対する設定として、以下を参照すること。

python-utsusemi-SIK/bashrc.SIK

主要な部分は以下である。

# Utsusemi Environment
export UTSUSEMI_INST_CODE=SIK
export MLFSOFT_PATH=/opt/mlfsoft

# BackUp PATH
export PATH_UTSUSEMI_BACKUP=${PATH_UTSUSEMI_BACKUP:-${PATH}}
# Executable path
export PATH=${MLFSOFT_PATH}/python-utsusemi/utsusemi/bin:${PATH_UTSUSEMI_BACKUP}
Mar 23 2022

[update:Utsusemi:4.0] Add new facade GetEiMultiEi2 produced by R.Kajimoto

新しく梶本氏が作られたGetEiMultiEi2ファサードを追加した。

概要

梶本氏のメール(2021/01/17)より一部抜粋

最近、四季でモニタ代わりに使っていたダイレクトビームの検出器の強度を落としてからGetMultiEiが強度不足でうまく行かないことが多く不便でしたので、任意の検出器を積分してそこからEiを求めるコマンドを作ってみました。

#好みで出力にもこだわってみました:)

最初にGetNeunetHistを使って中性子エネルギーのヒストグラムになおして、選択した検出器のデータを足し合わせてから、エネルギースペクトルをガウス関数でフィットしています。エネルギーのヒストグラムに変換する時点で各検出器のL2の差は補正されているはずなので、広い範囲の検出器を選択してもエネルギーのズレはないはずです。
Mar 23 2022

[update:Utsusemi:4.0] small improvement of D4Mat2Slicer about showing experimental information on M2Plot+

DATA_RDCT-136 空蟬4:D4Mat2SlicerのXtalParamの読み込みとそのほか細かいGUI

スライスをM2Plot+で表示する際に実験情報の表示を少し見栄えをよくした。

Mar 22 2022

[update:Utsusemi:4.0devApp] Add desktop launcher for apps.

DATA_RDCT-138 空蟬4.2:GUIコードのアプリ化

Ubuntuのデスクトップ(Gnome)にラウンチャーを作成するスクリプトとアイコン画像を加えた。 なお、ランチャー作成時にその時の環境変数を読み込むので、環境が変わったら再度作り直す必要がある。

使用方法

python-utsusemi/bin/をPATHに追加する。

続けて、以下のコマンドを実行する。

$ CreateGnomeDesktopApps

結果、デスクトップに以下のファイルが作成される。

  • Sequencer.desktop

  • D4mat.desktop

  • D4mat2.desktop

  • M2Plot.desktop

  • EnvironSetting.desktop

これらのファイルを右クリックし、出てきたメニューから”Allow Launching”もしくは「起動を許可する」を選択すれば、アイコンのついたランチャーとなる。

Mar 22 2022

[update:Utsusemi:4.0devApp] Update DlgSetUtsusemiEnv.py

DATA_RDCT-138 空蟬4.2:GUIコードのアプリ化

環境設定用GUIである、DlgSetUtsusemiEnv.pyをアップデートした。

  • GUIのソースとなる.uiファイルがなかったので、GUIをいちから書き直した
    • DlgSetUtsusemiEnv.ui

    • ui2_DlgSetUtsusemiEnv.py)

  • 環境変数として UTSUSEMI_DEFAULT_FONTSIZE を加えた

Mar 22 2022

[update:Utsusemi:4.0devApp] Add scripts as App launchers

DATA_RDCT-138 空蟬4.2:GUIコードのアプリ化

最初のアップロード。

python-utsusemi/binを作成し、その中に起動用スクリプト(App)を配置する。 このbinフォルダをPATHに追加することでそれぞれのAppをダイレクトに起動すル。

これらのAppは、内部に _loadevnを呼び出し、必要な環境設定を行う。 同フォルダの_setEnvUbuntuは、OSの環境依存を集約する目的でおいている。 またユーザーごとの設定ファイルは、現状 ~/.mlfsoft/utsusemi/utsusemi.cfg に置かれる。

Mar 20 2022

[update:Utsusemi:4.0] small improvement (changed args name of RotStep to RotAngle on GetOriginPixel seriese )

Mar 19 2022

[update:Utsusemi:4.0] Add some scripts to compile c++ codes of manyo+Utsusemi.

Mar 19 2022

[update:Utsusemi:4.0] Add uninstall option to Makefile

Mar 19 2022

[update:Utsusemi:4.0] Remove useless codes in WiringInfoEditor series

Mar 18 2022

[bugfix:Utsusemi:4.0] The issue that some actions on D4Mat2Slicer about treating XtalParams and GUI is not correct.

DATA_RDCT-136 空蟬4:D4Mat2SlicerのXtalParamの読み込みとそのほか細かいGUI

問題

部分的にXtalParamを読み込む際に、GUIの情報が古い情報に置き換わる

対処

読み込んだXtalParamの情報で変更する場合、実施に変更する情報以外は内部で保存してる情報で置き換えるために発生する。 すなわちGUI上で変更された情報が内部情報に取り込まれるタイミングがないので、保存されていた古い情報で上書きされる。 よって、以下のアクション時に内部情報を更新するようにした。

  • XtalParamを読み込む直前

  • Projectionを行なった直後

その他の要望

  1. メインパネルのData Reduction欄に示される角度の情報が、たまに桁が非常に多い場合がある

  2. スライスのプロット画面にData Reductionの情報を載せてほしい

対処1

角度情報を内部で保管する際に、必ず round( x, 3 )で小数点3桁までの数値に丸めてから保管するようにした

対処2

プロット時に与えるタイトルとサブタイトルにData Reduction情報も加えた

4.0.220317 or later

Mar 17 2022

[update:Utsusemi:4.0] Add facade functions CalcYRotAngle seriese and add functions to show command name on execute RadialCollimaterCorrect with UTSUSEMI_LOG_QUIET=y

以下の機能追加を行った

  • UTSUSEMI_LOG_QUIET=y状態で、Cmm.RadialCollimatorCorrectの実行時に、コマンド名が表示されない問題に対処

  • 新しくfacadeとして Cmm.CalcYRotAngleFromQXtalParam および Cmm.CalcYRotAngleFromQString を追加

Mar 17 2022

[bugfix:Utsusemi:4.0] The issue that error calculation in ShamotoDymPDF class fails because of wrong conversion about Q values

DymPDF計算結果をプロッタで表示すると、一部抜けがあるように見えた問題に対応。

調査すると、計算結果のエラー値がnanになっているデータがあり、マスクがかけられていたため抜けがあるように見えた。 エラーの値が誤って計算されていることが原因と見られるので修正した。

また、一部移植時にtypoもあったので修正した。

Mar 17 2022

[update:uGao:master] Add new color map of ‘turbo’

DATA_RDCT-134 夕顔:新しいカラーマップの追加

推薦のあったColorMapである turbo を追加した。 これは、matplotlib 3.3.0以降では採用されているので、将来的には不要となる。

なお、matplotlibのcmapへの取り込みは下記のスクリプトを利用させてもらった。

https://gist.github.com/FedeMiorelli/640bbc66b2038a14802729e609abfe89

Mar 11 2022

[update:Utsusemi-SAS:0.3.7] Improve some functions to treat multi data using with CaseInfo analysis.

DATA_RDCT-133 BL15でのCaseInfoを用いたデータ処理をするファサードがない問題

CaseInfoを用いた場合、単独のRunNoにたいして複数のデータが出現する。 例えばヒストグラム作成時にCaseInfoで分割を行うと、ファサードの戻り値としてはそれらのデータをリスト形式を用いることになる。 今回「リストに収められた複数データ」を通常のファサード関数でも使えるようにする試みの初手である。

ヒストグラム化

いくつかあるヒストグラム化の関数にたいして変更を行った。 変更方針は下記となる。

  1. CaseInfoを与えるのに、引数paramFilesを使用し、三つ目のパラメータファイルとしてCaseInfoを追加

  2. 内部での処理は「リストに収められた複数データ」を基本とする

  3. 戻り値は複数データの場合はリスト、一つだけリストにデータがある場合はそのデータのみ返すことで、以前の関数と同じ動作を保証する

  • HistBaseCommands::GetHistogramBaseSAS

    • 上記の1-3以外に以下の修正などを行った

      • モニターデータのCaseInfoによる分割がうまくいかない問題に対処

      • GateNETのモニターのPulseIdとNEUNETおよびTrigNETのPulseIdとが一致しないために発生する。UtsusemiGetNeunetHistogram::SetFlagOfPulseIdCheckの制御で回避

  • HistBaseCommands::GetMonHistSAS

    • 上記の1-3以外に下記の修正を行った

      • 引数にGetHistogramSASと同様に 引数paramFilesを追加し、CaseInfoに対応できるようにした

  • TransBaseCommands::GetTransNormByMon系列

    • 上記の1-3に対応し、内部でGetMonHistSASを呼び出すので、引数にparamFilesを加えてCaseInfoを渡せるようにした。

      • GetTransNormByMonCounts

      • GetTransNormByMonCountsTS

      • GetTransNormByMon

      • GetTransNormByMonTS

補正関数

基本、引数で「リストに収められたデータ」を与えられたら、それに対応できるようにした。

  • TransBaseCommands::TransmittanceCorrectionExp

  • TransBaseCommands::TransmittanceCorrectionPoly3

  • TransBaseCommands::FitExponentialWoBase

  • TransBaseCommands::FitExponential

  • TransBaseCommands::FitPolynominal3

  • Trans::TransMittanceCorrection

  • Trans::TransMittanceCorrectionExp

  • Trans::TransMittanceCorrectionPoly3

ファサード関数

  • Cmm::GetNeunetHistSAS

    • 複数のRunNoに対応しているようでしていなかったので修正

    • RunNoごとにBaseCommands::GetNeunetHistを実行し、戻り値はリストがくることを想定し修正

  • Cmm::DataReductionMulti

    • 複数のRunNoを与えたときのモニターの処理に不備があったので修正

    • データが一つの時はデータそのものを返すようにした

  • Cmm::SubtractBackMulti

    • 「リストに収められた複数データ」から共通のバックグランドRunを引き算できるようにする機能を追加した

  • Hist3::GetMonHistSAS

    • 引数にparamFilesを加えてCaseInfoを渡せるようにした

今後

他にも「リストに収められた複数データ」対応が必要そうな関数があれば対応してゆく。

ユーザーが直接扱うファサードとして今回は、ヒストグラム化(Hist3::GetNeunetHistSAS,GetMonHistSAS)およびリダクション補正(Cmm::DataReductionMulti)と透過率(Trans::TransMittanceCorrection)の補正だけにとどまる。

Mar 8 2022

[bugfix:Utsusemi:0.3.7] The issue that core dump occurs in UtsusemiTrignetDictionary::SetClock

Mar 8 2022

[bugfix:Utsusemi-SAS:0.3.7] The issue that wrong results return when signal as virtual time origin has chattering region on TrigNET.

BL15で、TrigNETに矩形波(周期10秒以上)を打ち込んで、そのRiseとFallのシグナルを仮想的な時間原点として時間分解し、かつサイクリックにデータを集める手法がある。

この場合、CaseInfoを以下の二つに分けて処理する。

  • Riseをキッカーとして時間分解するcaseinfo

  • Fallをキッカーとして時間分解するcaseinfo

問題

この実験で実際に装置を組むと、Riseは綺麗なシグナルだが、Fall時にチャタリングが発生する事態となった。この場合、チャタリングが発生する時に短時間に複数回の時間原点が発生することになり、正しく時間分解ができない可能性がある。そこで時間分解のレンジ内に別のトリガーが来た時に、そのトリガーを無視する機能をつけた。しかしながら、それがうまく動作しなかったので、修正を試みた。

原因1

結局、CountEvent関数の中で、Counter Triggerを仮想原点Kickerとする場合に、SetClock( clock )を行う。これは戻り値としてCaseを返すのだが、SetClock関数の仕様として、直前のCase(_preCase)と同じだと、Case=0を返す、という仕様となっていた。

原因2

CountEvent関数では、SetClockの戻り値(Case)が0だと、次のトリガーを探しにゆく流れとなっているので、_preCaseと同じだと次のトリガーが発動していた。

修正

SetClock関数でConditionType=1(羅列タイプ)の時に以下のように変更した。

  • _preCaseと同じならそのまま_preCaseを戻す

  • 羅列のリストで範囲に飛びや抜けがある場合、その隙間の値の時にはCase=0が戻ってしまう。その時は_preCaseを返す。

Mar 7 2022

[bugifx:Utsusemi:4.0] The issue that import error of HPN/facade/Cmm.py

Mar 7 2022

[bugfix:Utsusemi:4.0] The issue that nxspe file made by the other software cannot be read correctly.

DATA_RDCT-127 空蟬4: nxspe出力関連

以下の問題に対処

  • 他のアプリのnxspeを読み込む際に、内部のpixelごとのデータはElementContainerに変換し、さらにnum_of_pixel/PSDの個数ごとにElementContainerArrayに収めるのだが、あまりが出た時の処理が正しくない

Mar 7 2022

[bugfix:Utsusemi:4.0] Small bugfix

Mar 7 2022

[bugfix:Utsusemi:4.0devUB] The issue that VisualContQ occurs error on using UtsusemiSqeCalc2 and UtsusemiSqeCalcXtalParams with UB matrix

DATA_RDCT-131 空蟬4: VisualContQのUBマトリックス対応

UB行列対応したUtsusemiSqeCalc2やUtsusemiSqeCalcXtalParamsを利用する環境でVisualContQで使用すると以下の問題が発生するので対処した

  • VisualContではこれまで使用していなかったUB行列や優先度の情報を扱っていないことに起因し処理できない問題があったので修正した

  • XtalParamファイルの書き出しのフォーマットに問題があったので修正した

Mar 7 2022

[update:Utsusemi:4.0devUB] Improve functions to treat UB matrix in UtsusemiSqeCalc2 class

DATA_RDCT-131 空蟬4: VisualContQのUBマトリックス対応

UtsusemiSqeCalc2クラス内でUB行列を扱うにあたり、役割分担と関数名を一致させて処理の流れを整えた

以前

MakeProjectionMatrix(LA,U,V,R,Vi) -> _MakeProjectionMatrix(LA,U,V,R,Vi) -> 変換行列A作成
MakeProjectionMatrix(UB,R,Vi)     -> _MakeProjectionMatrix(UB,R,Vi)     -> 変換行列A作成

変更後

MakeProjectionMatrix(LA,U,V,R,Vi) -> _MakeUBIMatrix(LA,U,V)
                                                           |
                                                           V
MakeProjectionMatrix(UB,R,Vi)     -> _MakeUBIMatrix(UB) -> _MakeProjectionMatrix(R,Vi) -> 変換行列A

役割

  • _MakeUBIMatrix

    • 内部でUB行列の逆行列(UBI)を作成する

  • _MakeProjectionMatrix

    • 内部のUBIと引数(回転情報、スライス軸情報)で最終的な変換行列Aを計算

Mar 5 2022

[bugfix:Utsusemi:4.0] The issue that compiler shows some warning messages on macos.

macOS 上でコンパイルした時に以下のWarningが出る問題に対処。

Utsusemi_wrap.cxx:82719:3: warning: delete called on 'UtsusemiReadoutEventDecoderTemplate<WiringInfoEditorReadout, DetectorInfoEditorReadout2d>' that is abstract but has non-virtual destructor [-Wdelete-abstract-non-virtual-dtor]
  delete arg1;
  ^
(以下同様のメッセージが4つほど)

このメモリリークは仮想関数を定義した時、具体的には以下のように定義した時に、デストラクタにもvirtualをつける必要がある(仮想デストラクタが必要)というC++言語仕様のせいらしい。

virtual void method() = 0;

そこで、問題が発生しているクラス

  • manyo/UtsusemiEventDataConverterReadoutTemplate.hh

  • manyo/UtsusemiReadoutEventDecoderTemplate.hh

のデストラクタにvirtualを付与した。結果、上記のWarningは消えた。

Mar 5 2022

[bugfix:Utsusemi:4.0] The issue that “the error for object : pointer being freed was not allocated” occurs on exiting from python3 after import Manyo.Utsusemi on macos

macOS 上でコンパイルしたManyo.Utsusemiをpython3上でimportしてctrl-Dで終了すると、以下のエラーが出る問題に対処。

Python(20680,0x102494580) malloc: *** error for object 0x102494580: pointer being freed was not allocated
Python(20680,0x102494580) malloc: *** set a breakpoint in malloc_error_break to debug
zsh: abort      python3

このエラーが出ると、Appleに報告する旨のダイアログが出る。その詳細は以下の文章で始まるものである。

-------------------------------------
Translated Report (Full Report Below)
-------------------------------------
(後略)

このメッセージをつらつら眺めていると、libmxml.1.dylibがエラーを起こしているように見えた。元々libmxmlはUtsusemiでは不要であり、Linux版では大昔に削除されていたものだった。 よってmacOS上でのコンパイルに使用するMakefile.py3.macに含まれていた以下を削除した。

-lmxml  \

その結果、上記の無駄なポインタの解放によるエラーがなくなった。

Mar 3 2022

[bugfix:Utsusemi:4.0] The issue that deb packages comple fails because manyo/Makefile.obj is not updated about EventDataCreater class

Mar 1 2022

[update:Utsusemi:4.0devUB] Add functions to treat UB matrix in UtsusemiSqeCalc2 class

DATA_RDCT-131 空蟬4: VisualContQのUBマトリックス対応

UtsusemiSqeCalc2クラス内でUB行列を扱えるようにする。

UB行列定義

(qx,qy,qz):装置系Q座標

|qx|   |         | |H|
|qy| = |UB-Matrix|x|K|
|qz|   |         | |L|

変更点

  • UB行列の逆行列を内部で持つ(これがSqeCalc2内での変換に一番近い)

  • MakeProjectionMatrixの多様化

    • 格子定数+U,Vベクトル, 回転情報, View Axes(従来)

    • UB行列, 回転情報, View Axes (追加)

    • いずれも内部でUB行列の逆行列を算出し、それを用いて最終的なProjectionMatrixを計算するロジックで共通化する

  • _SetViewMatrixの見直し

    • View Axesを用いた変換行列とは結局、基底変換行列の作成であるから、_SetBasisVectToMatrixに統合する

    • _SetViewMatrix は _SetBasisVectToMatri(vector<Double>, gsl_matrix )にする

  • SetUBMatrix追加

4.0.220228 or later

Feb 28 2022

[bugfix:Utsusemi:4.0] fixed small typo in BaseCommands:CopyData

Feb 20 2022

[update:Utsusemi-SAS:4.0] Improve Cmm.GetNeunetHistSAS to enable to give several run numbers

Feb 20 2022

[update:Utsusemi-SAS:4.0] Update UBSlicer

DATA_RDCT-113 空蟬:BL15 QxQyQzをQhklに変換しスライスする機能の実装

UBSlicerを以下の点で改良した

  • 読み込んだデータ(ElementContainerMatrix)のヘッダからRunNoを取り出してGUI上(WindowTitleやLabel)に表示

  • 2Dプロットのタイトルの表示を改良

    • RunNoをM2Plot+のMain Title

    • Sub TitleのUB行列の表現方法を改良

  • Projectionを行う前ではSlice情報の領域をdisabledとなるようにした

    • FileメニューからLoad … を選択した場合も同様の挙動となるようにした

Feb 19 2022

[bugfix:Utsusemi-SAS:4.0] The issue of TreatQhklWithUB that calculation with ViewAxes has problem.

DATA_RDCT-113 空蟬:BL15 QxQyQzをQhklに変換しスライスする機能の実装

TreatQhklWithUBで、ViewAxesをデフォルトから異なる行列にすると、うまく動作しない問題に対処した。

  • UB行列をgsl_matrixに置き換える部分に問題があったので修正

    • ViewAxesを行列に変換するやり方をそのままUB行列の代入に使用していた。そのため、結果的に射影結果を取り出す時にもおかしな取り出し方をしていた。それらを正しい(UtsusemiSqeCalc2と同じ)方法に修正した。

Feb 18 2022

[bugfix:Utsusemi:4.0] Improvement about treatment of cases in a frame using Ambiguity param=3 at UtsusemiFileterBase::CheckAmbiguousFrame(2)

Feb 18 2022

[bugfix:Utsusemi:4.0] Improvement about treatment of cases in a frame using Ambiguity param=3 at UtsusemiFileterBase::CheckAmbiguousFrame

Feb 18 2022

[update:Utsusemi-SAS:4.0] Add facade functions to Load/Save of ManyoBinary format

Feb 18 2022

[update:Utsusemi-SAS:4.0] Improved UBSlicer to add save and load UB matrix parameters

DATA_RDCT-113 空蟬:BL15 QxQyQzをQhklに変換しスライスする機能の実装

UBSlicerに以下の機能をつけた

  • UB matrix情報を保存し、読み込めるようにした

    • 将来、非弾性のVisualContのもの(XtalParam.xml)と共通フォーマットにする

  • UI上にProject AxesにUnit(単位)の欄をつけた

Feb 17 2022

[update:Utsusemi-SAS:0.3.7] Update WiringInfo and DetectroInfo for current status at BL Ana PC

Feb 16 2022

[update:Utsusemi-SAS:0.3.7] Add new facade functions for the inelastic sacattering data treatments

DATA_RDCT-126 BL15: 非弾性散乱処理の実装

BL15における非弾性散乱処理(ヒストグラム化と円環平均処理)の関数を加えた。 またGetHistogramSASで横軸Energyで処理できるようにした。

追加ファサード関数

Hist3.GetHistInelaSAS

def GetHistInelaSAS( runNo="0", Bank="SM", Ei=10.0, Erange="-5 5", dHW=0.1):
    """
    Histogram Creation for inelastic scattering on SAS

    @param runNo     (string)  Run Number "10,11,12"
    @param Bank      (string)  "SM"...  Monitors by "MON1" or "MON2"
    @param Ei        (float)   Incident energy
    @param Erange    (string)  <hw_min>, <hw_max>
    @param dHW       (float)   bin width of hw
    @retval DAT (ElementContainerMatrix)
    """

Hist3.ToPowder

def ToPowder(dat=DAT,startQ=-1.0,endQ=-1.0,deltaQ=0.1):
    """
    Convert data from crystal to powder

    @param dat [Def:DAT] (ElementContaienrMatrix)
    @param startQ (double) Q value of range; if minus, auto calculated
    @param endQ   (double) Q value of range; if minus, auto calculated
    @param deltaQ (double) binning of Q
    @retval ECM   (ElementContainerMatrix)
    """

GetHistogramSAS

Xrangeにtype:”ene”を追加

@param Xrange    (string)  "startX endX widthX type" separated with space (not comma) : type=[dL, dL/L, tof, d, ene]
Feb 14 2022

[update:Utsusemi-SAS:4.0] Add new visualization application to use TreatQhklWithUB class

DATA_RDCT-113 空蟬:BL15 QxQyQzをQhklに変換しスライスする機能の実装

manyo.SAS.TreatQhklWithUB を使用し、結果を可視化するためのGUIアプリを作成したので追加した。

変更・追加したファイル

新たに(今回初めて)python-utsusemi/SAS/visにUBSlicer.pyを作成した。

名前はもう少し考えたいが・・・

GUIアプリ

vis
├── UBSlicer.py
├── __init__.py
├── ui2_SAS_UBSlicer.py
└── uis
    ├── SAS_UBSlicer.ui
    └── conv2_UB_Slicer.sh

ファサードの登録

python-utsusemi-SAS/facade/VisualModule.py
Feb 14 2022

[update:Utsusemi-SAS:0.3.7] Update manyo/TreatQhklWithUB class to treat HKL with UB matrix

DATA_RDCT-113 空蟬:BL15 QxQyQzをQhklに変換しスライスする機能の実装

  • ConvertToQspace::Executeの修正(Q=ki-kf)の結果、UB matrixを原点対称する機能を廃止

    • いくつかのメソッドで使用していた引数”isOrgSyn”とUB matrixを原点対称にする処理が不要となったので修正した

  • UB matrixを作用させた軸を”Q1”,”Q2”,”Q3”と規定した

    • ElementContainerに登録するKEYを、これまでのSetViewAxesLabelで与えていた_Labelsから、”Q1”,”Q2”,”Q3”(_Keys[])に変更

    • KEYとLABELの分離(LABELは自由に与えられるためKEYに相応しくない文字列が使われる可能性が高いため)

    • これらのKEYを取り出すメソッド PutQKeysList() も追加

Feb 14 2022

[bugfix:Utsusemi-SAS:0.3.7] The issue that the calculation of <Qx Qy Qz> is wrong.

manyo.SAS.ConvertToQspace::Execute で行われている検出器位置情報と波長から装置系のQx,Qy,Qzを計算する際に

Q = kf - ki

と定義していたのを修正した。

Q = ki - kf
Feb 13 2022

[update:manyo:0.3.4] Add -std=c++11 to core/Makefile

Feb 13 2022

[bugfix:manyo:0.3.4] the issue that ManyoData Binary format does not include units of ElementContainer data.

DATA_RDCT-128 万葉: ManyoBinaryフォーマットElementContainerの単位情報が記録されない?

ElementContainerの単位の情報は、内部のHeaderBase UnitHeader に保管されている。 ManyoDataIOクラス内のWrite部分とRead部分で、このUnitHeaderを保存・読み込み部分がコメントアウトされていた。 これを戻すだけだと、ElementContainer読み込み時にAdd関数でvectorを追加する際UnitHeaderに対して再度書き込みを行うためWarningを起こす。(それがコメントアウトの原因?)

以下のように対応した。

  • 保存時 : UnitHeaderを保存する

  • 読み込み : UnitHeaderは読み込むがElementContainerには直接登録せず、Add関数の時のキーに対する単位用Mapとして使用することでWarning回避

Feb 13 2022

[update:Utsusemi-SAS:0.3.7] Update manyo/TreatQhklWithUB class to treat HKL with UB matrix

DATA_RDCT-113 空蟬:BL15 QxQyQzをQhklに変換しスライスする機能の実装

  • ViewAxesを設定できるようにした

  • GUIをつけることを想定して関数を追加した

  • いくつかの関数と引数、内部変数の名前を整理した

処理の流れ

  • UBmatrixを設定

  • ViewAxesを設定(各軸をQ1, Q2, Q3とした)

  • SliceでのプロットのX軸,Y軸,厚み軸をQ1, Q2, Q3で指定

  • Slice軸の範囲指定はX軸, Y軸, 厚みで指定

サンプルコード

import Manyo
import Manyo.SAS as ms

ubmat = [ 0.306,0.164,-0.961,
         -0.007,0.767, 0.012,
         0.836,0.420, 0.352 ]

TQ=ms.TreatQhklWithUB(DAT)
TQ.SetUBmatrix( ubmat, True )

TQ.SetViewAxes( [1,0,0],[0,1,0],[0,0,1]) #Q1=[H,0,0], Q2=[0,K,0], Q3=[0,0,L]
TQ.SetViewAxesLabels( "H","K","L","rlu","rlu","rlu" ) # Q1:"H(rlu)", Q2:"K(rlu)", Q3:"L(rlu)"
TQ.Projection() # cordinate projection (Qx,Qy,Qz) -> (Q1,Q2,Q3)

# Setting for slice
TQ.SetSliceAxes("X","Y","T") # Q1:X-axis Q2:Y-axis Q3:Thickness for slicing
allr = TQ.PutSliceMaxRangeList() # [<X min>,<X max>,<Y min>,<Y max>,<Thickness min>,<T max>]
Xrange = [allr[0],allr[1], 0.01] # Xrange = [<min>,<max>,<bin width>]
Yrange = [allr[2],allr[3], 0.01] # Yrange = [<min>,<max>,<bin width>]
Trange = [ -1-0.05, -1+0.05 ] # T range = [<min>,<max>]
# Slice
ECA = Manyo.ElementContainerArray()
TQ.Slice( ECA, Xrange, Yrange, Trange )
Feb 11 2022

[update:Utsusemi-SAS:0.3.7] Update manyo/TreatQhklWithUB class to treat HKL with UB matrix

DATA_RDCT-113 空蟬:BL15 QxQyQzをQhklに変換しスライスする機能の実装

TreatQhklWithUBへの入力と一部の出力をPyObject(リスト)を利用できるようにした。

主な追加

TreatQhklWithUB::SetUBMatrix

  • 中島さんのUBマトリックスは座標軸が空蟬のものと原点対称なので、それを反転させるためのフラグを追加

  • 代わりにSetUBMatrixTNを削除

  • Pythonのリストを入力で受け付けるようにした

TreatQhklWithUB::Slice

  • Pythonのリストを入力で受け付けるようにした

その他 - PutAxesRangeをvector<Double>ではなくPythonリストで返す関数を追加した(TreatQhklWithUB::PutAxesRangeList) - コメントを追記

サンプルコード

import Manyo
import Manyo.SAS as ms

# UB matrix
ubmat = [ 0.306,0.164,-0.961,
         -0.007,0.767, 0.012,
          0.836,0.420, 0.352 ]

# Set Data and UB matrix to calculate HKL axes
tt=ms.TreatQhklWithUB(DAT)
tt.SetUBmatrix( ubmat, True ) # required to use Taro Nakajima's UB matrix
tt.SetAxesLabel( "H","K","L" )
tt.Execute()

# Slice Range
allr = tt.PutAxesRangeList() # [<H min>,<H max>,<K min>,<K man>,<L min>,<L max>]
## H range (X-axis)
Hrange = allr[0:2]
Hrange.append( 0.01 )
## K range (Y-axis)
Krange = allr[2:4]
Krange.append( 0.01 )
# L range (Thickness)
Lrange = [ -1-0.05, -1+0.05 ]

# Slicing
ECA = Manyo.ElementContainerArray()
tt.Slice( ECA, Hrange, Krange, Lrange )
Feb 10 2022

[update:Utsusemi-SAS:0.3.7] Add manyo/TreatQhklWithUB class to treat HKL with UB matrix

DATA_RDCT-113 空蟬:BL15 QxQyQzをQhklに変換しスライスする機能の実装

大観のデータ(最低以下を行なったデータ)に対し、UBマトリックスを与え、HKL軸に変換しスライスする機能を実装した。

  • Hist3.GetHistogramSAS

  • Corr.ConvertQSpace

サンプルコード

import Manyo
import Manyo.SAS as ms

# Make UB matrix
ubmat = Manyo.MakeDoubleVector()
ubmat.append( 0.306 )
ubmat.append( 0.164 )
ubmat.append( -0.961 )
ubmat.append( -0.007 )
ubmat.append( 0.767)
ubmat.append( 0.012 )
ubmat.append( 0.836 )
ubmat.append( 0.42 )
ubmat.append( 0.352 )

# Set Data and UB matrix to calculate HKL axes
tt=ms.TreatQhklWithUB(DAT)
tt.SetUBmatrix( ubmat )
#tt.SetUBmatrixTN( ubmat )
tt.SetAxesLabel( "H","K","L" )
tt.Execute()

# Slice
allr = tt.PutAxesRange()
# H range (X-axis)
Hrange = Manyo.MakeDoubleVector()
Hrange.append( allr[0] )
Hrange.append( allr[1] )
Hrange.append( 0.01 )
# K range (Y-axis)
Krange = Manyo.MakeDoubleVector()
Krange.append( allr[2] )
Krange.append( allr[3] )
Krange.append( 0.01 )
# L range (Thickness)
Lrange = Manyo.MakeDoubleVector()
Lrange.append( -1-0.05 )
Lrange.append( -1+0.05 )
# Slicing
ECA = Manyo.ElementContainerArray()
tt.Slice( ECA, Hrange, Krange, Lrange )
Feb 1 2022

[bugfix:Utsusemi:devCalcPosi] remove useless codes and move messages for debug to show them on Debug mode.

Feb 1 2022

[bugfix:Utsusemi:devCalcPosi] The issue that the calculated pixels are wrong when given Q position has distance from a horizontal plane

DATA_RDCT-108 空蟬4:単結晶試料データ処理後のQ空間の座標を測定するために必要な試料の方位を求める手段

角度計算(CalcYRotAngleFromQ)の第2候補のPixel情報がおかしいという問題に対処

問題点

水平面から離れると、計算されたPixelがおかしくなる現象。

解決方法

まず押さえるべき点は、実験室系のki_o(0,0,ki)と、Q(qx,qy,qz)から求めたkiとの間の角度を計算することが目的であること。 また、ki_oとkiを揃えるための回転方向はY軸を軸中心とした回転方向のみである。

一方、Q_vec=ki_vec-kf_vecを満たすkiとkfは、OQベクトルに垂直で、中心がOQ上にある円周上のどこでも良いはずである。 (正確には、Q_vecの始点を中心とした半径kfの球面と、Q_vecの終点を中心とした半径kiの球面の交差する円周) よって、ki_oとの角度を計算する際に最も適している場所を選ぶべきだ。

すなわち、Y軸に対して垂直な同一面内にQ_vecの終点(先端)とkiの始点が乗る、つまりkiをその面内でY軸中心に回転させれば ki_oと一致できるようなkiを選ぶことにする。 そのためには、kiとkfの円周の式で、Y軸=qy(Q_vecの先端のY)の点での直線式を用いて、二つのkiを求めればよい。

修正

これまで、CalcTwoSpharePlaneで計算された二つの球面の重なる円周の面の式( Sa*X + Sb*Y + Sc*Z + Sd = 0 )にY=0を入れた直線の式を利用して、二つのkiを求めていた。これだとQがY=0平面に近ければ問題はないが、Y=0平面から離れると角度がおかしくなってしまっていた。

そこで、今回は円周の面の式のYにqyを入れることで、ki_oとkiが同一平面となり、回転角度も正しく計算されるようになった。

前回の疑問点

  • qx,qy,qzの方位であるが、-qx/kf, -qy/kf, (ki-qz)/kf という値は使わなくて良いか確認が必要

    • この値を用いると各軸での演算により方位が狂うので不要であると結論。

Feb 1 2022

[update:Utsusemi:devCalcPosi]

DATA_RDCT-108 空蟬4:単結晶試料データ処理後のQ空間の座標を測定するために必要な試料の方位を求める手段

角度計算(CalcYRotAngleFromQ)の第2候補のPixel情報がおかしいという問題に対処

修正

  • GetOrigPixelFromQ

    • px,py,pzの方向ベクトルとPSDの交点を求める際に、(-px,-py,-pz)方向の交点も許可していたのを修正した

    • 一つも見つからなかった時に、Raiseしていた。しかし見つからない場合はNoneであるので、Noneを返すようにした

  • CalcYRotAngleFromQ

    • 散乱方向kfの方位を計算する際に、ベクトル方向が逆だったので修正した

今後の疑問点

  • qx,qy,qzの方位であるが、-qx/kf, -qy/kf, (ki-qz)/kf という値は使わなくて良いか確認が必要

Jan 31 2022

[update:Utsusemi:0.3.7] improve EventDataConverterTemplate::SetDataPath to show search path

TSUSEMI_DATA_DIRの中に複数のフォルダがあったときに、SetDataPathがうまくフォルダを選べないことがある。 その原因がわかりにくいので、UtsusemiMessageでフォルダを表示することにした(様子見)。

Jan 31 2022

[bugfix:Utsusemi:0.3.7] The issue core dump happened on histogram creation when given daqId or moduleNo are not defined in WiringInfo.

DATA_RDCT-123 BL15のHDバンクのデータの処理中に落ちる問題

原因

T0イベントから読み込んだmoduleNoがWiringInfoに情報(ABCパラメータなど)が記載されてなかったため、存在しない情報(NULL)にアクセスして落ちていた。

対処

  1. WiringInfoの情報にアクセスする場合に、与えられたDaqIdとmoduleNoがWiringInfoに登録されていない場合でも落ちることがないようにした

  2. T0イベントから読み込んだmoduleNoが、Incrementの引数で渡されたNoと違った場合にWarningを出力するようにした

Jan 28 2022

[bugfix:Utsusemi:4.0] The issue that CalcYRotAngleFromQ and GetOrigPixelFromQ do not work correctly(2)

DATA_RDCT-108 空蟬4:単結晶試料データ処理後のQ空間の座標を測定するために必要な試料の方位を求める手段

以下の関数で、わかりにくい表現をする問題や正しく動作しない問題を修正した。

  • ana.Reduction.BaseCommandsInEla.GetDetectorPixelFromOrientation

    • 与えられたポジションが検出器のカバーする範囲外の時に”Out of range”と表示し None を返すようにした

  • ana.Reduction.BaseCommandsInEla.CalcYRotAngleFromQ

    • 最終的なPixelを計算する部分で、Qy方向の情報を計算していなかったので修正した

    • GetDetectorPixelFromOrientationがNoneを返すときの処理を追加した

  • ana.Reduction.BaseCommandsInEla.CalcYRotAngleFromQXtalParam

    • 回転情報を入力するとエラーとなるのを修正

Jan 27 2022

[bugfix:Utsusemi:4.0] The issue that CalcYRotAngleFromQ and GetOrigPixelFromQ do not work correctly

DATA_RDCT-108 空蟬4:単結晶試料データ処理後のQ空間の座標を測定するために必要な試料の方位を求める手段

以下の関数で、正しく動作しない問題を修正した。

  • ana.Reduction.BaseCommandsInEla.CalcYRotAngleFromQ

    • 最終的なPixelを計算する部分が間違っていたのを修正

  • ana.Reduction.BaseCommandsInEla.GetOrigPixelFromQ

    • 回転情報を入力するとエラーとなるのを修正

Jan 27 2022

[update:Utsusemi:4.0] Update Makefile.obj.vc to build Manyo.Utsusemi module on Windows

4.0.220125 or later

Jan 20 2022

[Bugfix:Utsusemi:0.3.7] The issue that ABC parameter detID=70 was wrong.

Jan 20 2022

[Update:Utsusemi:4.0] Simplify WiringInfo format in SIK/ana/xml for Utsusemi4

DATA_RDCT-116 空蟬4:WiringInfo, DetectorInfoでタグの単純化

空蟬4では、WiringInfoやDetectorInfoのタグのルールを単純化している。 すなわち昔は同じタグが複数含まれている場合、親タグの属性に”n”、子タグの属性に”i”をつけるルールがあったが撤廃したので、主にその点についてより単純なフォーマットで対応できるようになった。

その単純化を進めた。最初はSIK/ana/xml/WiringInfoである。

Jan 20 2022

[Bugfix:Utsusemi:4.0] The issue that error occurs when MakeNewMatrix and RebinMatrix on the menu in D4MatSlicer are executed.

以前に行った、「XtalParam.xmlに軸の単位を追加、D4MatSlicer系への対応」の結果、manyo/UtsusemiD4Matrix::AllocateNewMat に新しく単位を指定する引数が追加された。 この結果、D4MatSlicer.pyのメニューから選べるMakeNewMatrixとRebinMatrixを実行するとこの引数が追加されていなかったためエラーが起きる。 この部分を修正した。

Jan 20 2022

[Update:Utsusemi:4.0] Add new argument at UtsusemiWiringInfoEditorTemplate::MakeTempWiringInfo to save xml information as a file.

Jan 18 2022

[update:Utsusemi:0.3.7] Improve ABC parameters in WiringInfo to add new one

Jan 5 2022

[Update:Utsusemi:4.0] Add new facade functions to treat Shamoto’s DymPDF class

DATA_RDCT-77 空蟬4 Dynamical PDF 計算コード移植

社本氏のDynamical PDFの計算クラス (ShamotoDymPDF) を使用するためのファサード関数を作成した。

  • BaseCoomandsInEla.pyにDymPDF関数として追加

  • SIK/facade/Cmm.py および AMR/facade/Cmm.py にDymPDFファサードとして追加