物理の駅 Physics station by 現役研究者

テクノロジーは共有されてこそ栄える

CERN ROOT/Geant4

Python awkward: parquet形式で1億イベントのtreeのIO(入出力)速度を圧縮形式で比較する

Python の awkward パッケージに実装されている parquet ファイル形式を入出力するときの処理時間を、圧縮形式ごとに比較してみる。配列の型は awkward.highlevel.Array と呼ばれる形式である。 8バイト(int64_t)✕8メンバー✕1億エントリーなので、圧縮なしの…

ROOT: TFile形式で1億イベントのtreeのIO(入出力)速度を圧縮形式で比較する

CERN ROOT の TTreeを TFileで入出力するときの処理時間を圧縮形式ごとに比較してみる。Pythonで同様のことをやった記事も参照。 8バイト(int64_t)✕8メンバー✕1億エントリーなので、圧縮なしの場合は6.4GBのデータサイズとなる。 圧縮形式 ファイルサイズ 出…

1億イベントのtreeデータのグラフ化の速度をPythonとROOTで比較する

データはここのを使う。64バイト(double 8個)×1億イベント(エントリー)である。 phst.hateblo.jp 結果のまとめ 言語 ライブラリ ファイル形式 処理時間 スレッド数 Python awkward parquet 46 sec 1 C++ ROOT TTree ROOT 100 sec 1 C++ ROOT RDataFrame ROOT…

Windows ROOTとPython(numpy,awkward)でTreeファイルの生成と出力時間を比べる

エマルションの飛跡情報(x,y,ax,ay,ax0,ay0,ax1,ay1)とする。Visual StudioでコンパイルしたROOTと、Python+numpy,awkwardで作ったバージョンを比較する。イベント数は1億(108)本とする。 Visual Studio でコンパイルしたROOT版。248秒もかかった。 #include <TFile.h></tfile.h>…

Windows + Visual StudioでCERN ROOT6 64bit版 を動かす (2024年)

最終更新: 2024/02/24 CERNのROOT Release 6.26/04 - 2022-06-07 から Windows用のプリコンパイル済みバイナリが配布されはじめた。当初はバグがありまともに動かなかったと思われるが、執筆時点での最新 Release 6.30.04 - 2024-01-31 は1.5年も経過しそれ…

Windows 10/11 で CERN ROOT6 32bit版を動かす (2022年)

Windowsネイティブ(x86)で動かす方法 (日本語) github.com Windows上のWSL (Ubuntu)上で動かす方法 (日本語) github.com かなり急いで作ったので、皆さんデバッグをよろしくお願いします。 記事公開時点で告知はまだですが、2022年度のROOT講習会もよろしく。…

Geant4のGeometryの最もシンプルな記述法

一辺2メートルの立方体の空気(不可視)に、一辺2メートルの立方体のアルゴンガスを詰めた例 Geant4で定義されている物質一覧 G4VPhysicalVolume* Geometry::Construct() { G4NistManager* materi_Man = G4NistManager::Instance(); G4double leng_X_World = 2…

Geant4で重イオンをPrimaryGeneratorで入射する

Geant4で重イオンを入射したいという欲求に駆られた。Geant4で標準で扱える入射粒子はZが2以上だとヘリウム-4のみである。それ以外の原子核はやや特殊な方法で作る。 class PrimaryGenerator : public G4VUserPrimaryGeneratorAction { public: PrimaryGener…

WSL用のFedora RemixでROOT PyROOT などを使う

WSL用のFedora Remixを購入しインストールする Fedora Remix for WSL を購入 - Microsoft Store ja-JP $ sudo yum install root $ sudo yum install root python3-root root-notebook これで終わり。 WSLのデフォルトをFedora Remixにする wsl --set-default…

PyROOTでROOTファイルを読む TFileとRDataFrameの比較

PyROOTでROOTファイルを扱うには、ROOTの作法に従うか、Numpyで頑張るかの2択となる。 ROOTの作法に従った例 ROOTファイルに、イベントごとに色んなパラメータが固定長で格納されているものとする。データ名 ADC の[0]に格納されているデータをヒストグラム…

WSL上のJupyter LabでPython/ROOT C++/PyROOT、Jupyter Notebookでjsrootを動かす

超メモです。$は削除して実行してください WSLでJupyter Labを動かす方法 nodejsは最新版を推奨する。それ以外だとエラーが出ることがある。pip3でsudoは付けない。以下、実行すべきコマンド。 $ sudo sed -i.bak -e 's%http://[^ ]\+%mirror://mirrors.ubun…

Windows10 + Visual Studio 2019でCERN ROOT6 32bit版を動かす

64bit版の最新記事 phst.hateblo.jp 最終更新: 2021/10/24 仮想環境やリモート環境を使わずに、Windows 10 で直接ROOTバージョン6を使いたい・動かしたい奇特な人のためのドキュメントです。 ROOT6を取り巻く状況 ROOT6のビルド済みバイナリをライブラリとして…

Windows向けCERN ROOT5がどのVisual Studioでコンパイルされたか確認する

root -config の標準出力に含まれる文字列で、Visual Studio のバージョンを識別できる vc12 ならVisual Studio 2013 vc11 ならVisual Studio 2012 vc10 ならVisual Studio 2010 下記は、Visual Studio 2013の例 ROOT ./configure options: CMAKE_CXX_STANDA…

ダブルΛハイパー核 NagaraイベントをROOTとPythonを使ってMCで発生させてみる

3体崩壊で、粒子が完全にランダムに崩壊したとすると、粒子1と粒子2の不変質量の2乗と、粒子1と粒子3の不変質量の2乗分布が一様になるように崩壊する。 ROOT のライブラリを使って、これを実際に発生してみる。BΞとΔBΛΛは0としている。 #include <iostream> #include <fstream> </fstream></iostream>…

Windows10 + Visual Studio 2017で32bit版 GEANT4を動かす (2019年)

http://geant4.web.cern.ch/geant4/ WindowsでGeant4を入れたお話。 皆さん誤解しているかもしれませんが、WindowsでGeant4は動きます。GUIや、他のLinuxにしか対応していないツールや、マルチスレッド関連を除けば、ちゃんと動きます。 深いことをやろうと…

Windows Subsystem for Linux (WSL) でCERN ROOTバージョン6を動かそう

ROOT講習会2020向けのインストール方法(Ubuntu 18.04 LTS用 & ROOT v6.20.04) github.com 最新のインストール方法(Ubuntu 20.04 LTS用 & ROOT v6.22.02) github.com

CERN ROOT6の.rootlogon.C の記述例 (プロジェクタで見えづらい色も調整済み)

root.cern.ch ホームディレクトリに .rootlogon.C を置くと、自分のROOTの設定を毎回使えるので便利である。私が使ってるコードがあるので、サンプルとして公開してみる。Atlas styleを参考にした。 gitlab.com 黄緑色と空色はプロジェクタでの視認性が最悪…

Python scipyのcurve_fit で導出したパラメータと標準誤差をCERN ROOTの結果と比較

まずはCERN ROOT + C++ で実装する。 お手本通り、平均値0、標準偏差1、ガウス分布(正規分布)に沿う乱数を10000個作り、ROOTのヒストグラムに詰め、 TF1 の ガウス分布 gaus でフィッティングした。オプション等は何もつけていない。も普通に結果を引用した…

Geant4で原子核乾板 (10の12乗チャンネル) を実装した

ミクロンの空間分解能を持ちながら、ミリメートルからメートルのサイズを持つ放射線検出器は原子核乾板以外に存在しない。通常、チャンネル数はある特定の数になるが、原子核乾板の場合はそういう概念はないに近い。1平方センチあたり10の14乗を程度チャンネ…

3Dの位置と角度を持った情報の2次元プロジェクションマップ

CERNが開発しているROOT (バージョン5)を用いた検出器内の飛跡を2次元プロジェクションに投影して描画する方法。 具体的には三次元情報を持つ飛跡を2次元に投影したい時に使う。 #include <vector> #include <random> #include <limits> #include <TArrow.h> #include <TGraph.h> #include <TAxis.h> #include <TCanvas.h> #in</tcanvas.h></taxis.h></tgraph.h></tarrow.h></limits></random></vector>…