= Timing Scan =
'''~+【概要】+~''' <
>
Timing Scanの引き継ぎ(2019.4.9~12)のときのlog <
>
詰まったところ。
<>
== Raw Data Analysis ==
CERNのサーバーがslc6からCentOS7に変わった(2019.4.2?)こともあり2018年のままのコードでは動かなかった。<
>
=== コンパイル ===
source setup.shができなかった。<
>
{{{
-bash: /afs/cern.ch/sw/lcg/external/gcc/4.9/x86_64-slc6/setup.sh: 許可がありません
-bash: /afs/cern.ch/sw/lcg/app/releases/ROOT/6.04.14/x86_64-slc6-gcc49-opt/root/bin/thisroot.sh: 許可がありません
}}}
といわれた<
>
setup.shとconfig/localconfig.lxplusの2つを変更。afsじゃなくてcvmfsに変えたかつrootのversionとコンパイラのversionをおとした。<
>
setup.shの中身は
{{{
#!/bin/sh
thisDir=$(dirname $(readlink -f ${BASH_SOURCE[0]}))
echo $thisDir
if [ -d /cvmfs/sft.cern.ch/lcg ] ; then
source /cvmfs/sft.cern.ch/lcg/releases/LCG_72a/ROOT/5.34.25/x86_64-slc6-gcc48-opt/bin/thisroot.sh
source /cvmfs/sft.cern.ch/lcg/external/gcc/4.8.4/x86_64-slc6/setup.sh
fi
export LD_LIBRARY_PATH=$thisDir/lib:$LD_LIBRARY_PATH
export PATH=$thisDir/bin:$thisDir/script:$PATH
export RAWDATADECODER_PATH=$thisDir
}}}
他にもDSO missing from command lineとかいうエラーが出た。config/localconfig.lxplusの中身を書き換えた。
{{{
ROOTFLAGS= -pthread -Wno-deprecated-declarations -m64 -I/cvmfs/sft.cern.ch/lcg/releases/LCG_72a/ROOT/5.34.25/x86_64-slc6-gcc48-opt/include
ROOTLIBS= $(shell root-config --libs)
CXXFLAGS= $(ROOTFLAGS) -std=c++11 -O3 -Iinc -Isrc
LIBS += $(ROOTLIBS) -Llib -lRawDataAnalysis -lz
OUT= RawDataDecoder_Pixel RawDataDecoder_IBL skim_pixel
SO= libRawDataAnalysis
.PHONY: all clean
SRC_EXTS := cxx cpp
SO_EXTS := so
BIN_DIR := bin
LIB_DIR := lib
MACRO_DIR := macros
SRCS := $(foreach E,$(SRC_EXTS),$(wildcard src/*.$(E)))
BINS := $(foreach E,$(SRC_EXTS),$(patsubst src/%.$(E),$(BIN_DIR)/%,$(filter %.$(E),$(SRCS))))
MACROS := $(wildcard $(MACRO_DIR)/*.C)
MACROS_SO := $(foreach E, C, $(patsubst $(MACRO_DIR)/%.$(E), $(MACRO_DIR)/%_C.so, $(filter %.$(E), $(MACROS)) ) )
}}}
-lzを加えた。これが具体的に何に効いたのかは不明。
=== skimming ===
src/skim_pixel.cxxを変更<
>
read_payload()の中のbufferの定義を、malloc()を用いたものに変えた。メモリアクセスをスタック領域からじゃなくてヒープ領域からにしないと<
>
segmentation fault(コアダンプ)とエラーが出て止まっていた。<
>
buf_sizeの付近とBUF_MAXの付近の2箇所を変更。
{{{
unsigned char* buf = nullptr;
unsigned char* uncomp_buf = nullptr;
size_t buf_size_forMalloc = static_cast< size_t >( buf_size );
size_t uncomp_size_forMalloc = static_cast< size_t >( uncomp_size );
buf = static_cast< unsigned char* >( malloc( buf_size_forMalloc ) );
uncomp_buf = static_cast< unsigned char* >( malloc( uncomp_size_forMalloc ) );
// unsigned char buf[buf_size];
// unsigned char uncomp_buf[uncomp_size];
free(buf);
free(uncompromising_buf);
}}}
malloc()は使用したあとif文の最後で必ずfree()する。
== Timing Scan Analysis ==
=== コンパイル ===
Raw Data Analysisのときと同様にsetup.shとconfig/localsetup.lxplusを書き換えた。<
>
TimingAnalysisのコードはROOT6に対応させてあったので、
{{{
/cvmfs/sft.cern.ch/lcg/releases/LCG_81c/ROOT/6.04.14/x86_64-slc6-gcc49-opt/include
/cvmfs/sft.cern.ch/lcg/external/gcc/4.9.1/x86_64-slc6/setup.sh
}}}
{{{
/cvmfs/sft.cern.ch/lcg/releases/LCG_81c/ROOT/6.04.14/x86_64-slc6-gcc49-opt/bin/thisroot.sh
}}}
を使用した。
=== batch job ===
batch jobがLSF batch systemからHTCondorに変わったのでbatch jobを投げるスクリプトを書き換えた。<
>
HTCondorの説明については CernBatchSystem 参照。<
>
各LBごとにjobを投げるsubファイルを生成するためのスクリプト(makesub.sh)をつくった。<
>
condor batchはsubファイルに何も指定しないと実行ディレクトリに生成物を持ってきてしまうので、'''実行ファイルの最後で生成物を消しておく'''必要があった。<
>
実行ファイルはbsub_pixel_timing.shで、subファイルは00348197test.sub<
>
bsub_pixel_decode.shはXXX.out.rootまでは出来たけどXXX.hist.rootがbatchで出来なかったときに使うためのスクリプト。<
>
XXX.out.rootからXXX.hist.rootへの変換だけを行う。<
>
変更が必要なのは、bsub_pixel_timing.sh(bsub_pixel_decode.sh)の中のeos directoryとoutput directory, bsub_pixel_timing.shの中で使われているdownload_skim.shの中のコードを取ってくるディレクトリの場所。
== 2020 Milestone run ==
DAOD_INDETRACKVARIDをつくるのに、errorが出て、作れない。 <
>
"NameError: name 'InDetPixelConditionsSummarySvc' is not defined")
Using Athena/21.0.120 [cmake] with platform x86_64-centos7-gcc62-opt
== 関連リンク ==
・CERN Batch Service User Guide, Job submission [[http://batchdocs.web.cern.ch/batchdocs/local/submit.html]]