Skip to content

Commit d6092d7

Browse files
Adding apass5 of Oct 2021 data + new runs from June 2022
1 parent 2beb44c commit d6092d7

File tree

3 files changed

+305
-1
lines changed

3 files changed

+305
-1
lines changed
Lines changed: 199 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,199 @@
1+
#!/bin/bash
2+
3+
# Script to run the async processing
4+
#
5+
# if run locally, you need to export e.g.:
6+
#
7+
# export ALIEN_JDL_LPMRUNNUMBER=505673
8+
# export ALIEN_JDL_LPMINTERACTIONTYPE=pp
9+
# export ALIEN_JDL_LPMPRODUCTIONTAG=OCT
10+
# export ALIEN_JDL_LPMPASSNAME=apass4
11+
# export ALIEN_JDL_LPMANCHORYEAR=2021
12+
13+
14+
if [[ "${1##*.}" == "root" ]]; then
15+
#echo ${1##*.}
16+
#echo "alien://${1}" > list.list
17+
#export MODE="remote"
18+
echo "${1}" > list.list
19+
export MODE="LOCAL"
20+
shift
21+
elif [[ "${1##*.}" == "xml" ]]; then
22+
sed -rn 's/.*turl="([^"]*)".*/\1/p' $1 > list.list
23+
export MODE="remote"
24+
shift
25+
fi
26+
27+
POSITIONAL=()
28+
while [[ $# -gt 0 ]]; do
29+
key="$1"
30+
case $key in
31+
-rnb|--run-number)
32+
RUNNUMBER="$2"
33+
shift
34+
shift
35+
;;
36+
-b|--beam-type)
37+
BEAMTYPE="$2"
38+
shift
39+
shift
40+
;;
41+
-m|--mode)
42+
MODE="$2"
43+
shift
44+
shift
45+
;;
46+
-p|--period)
47+
PERIOD="$2"
48+
shift
49+
shift
50+
;;
51+
-pa|--pass)
52+
PASS="$2"
53+
shift
54+
shift
55+
;;
56+
*)
57+
POSITIONAL+=("$1")
58+
shift
59+
;;
60+
esac
61+
done
62+
63+
# now we overwrite if we found them in the jdl
64+
if [[ -n "$ALIEN_JDL_LPMRUNNUMBER" ]]; then
65+
export RUNNUMBER="$ALIEN_JDL_LPMRUNNUMBER"
66+
fi
67+
68+
# beam type
69+
if [[ -n "$ALIEN_JDL_LPMINTERACTIONTYPE" ]]; then
70+
export BEAMTYPE="$ALIEN_JDL_LPMINTERACTIONTYPE"
71+
fi
72+
73+
# period
74+
if [[ -n "$ALIEN_JDL_LPMPRODUCTIONTAG" ]]; then
75+
export PERIOD="$ALIEN_JDL_LPMPRODUCTIONTAG"
76+
fi
77+
78+
# pass
79+
if [[ -n "$ALIEN_JDL_LPMPASSNAME" ]]; then
80+
export PASS="$ALIEN_JDL_LPMPASSNAME"
81+
fi
82+
83+
if [[ -z $RUNNUMBER ]] || [[ -z $PERIOD ]] || [[ -z $BEAMTYPE ]] || [[ -z $PASS ]]; then
84+
echo "check env variables we need RUNNUMBER (--> $RUNNUMBER), PERIOD (--> $PERIOD), PASS (--> $PASS), BEAMTYPE (--> $BEAMTYPE)"
85+
exit 3
86+
fi
87+
88+
echo processing run $RUNNUMBER, from period $PERIOD with $BEAMTYPE collisions and mode $MODE
89+
90+
###if [[ $MODE == "remote" ]]; then
91+
# common archive
92+
if [[ ! -f commonInput.tgz ]]; then
93+
echo "No commonInput.tgz found exiting"
94+
exit 2
95+
fi
96+
# run specific archive
97+
if [[ ! -f runInput_$RUNNUMBER.tgz ]]; then
98+
echo "No runInput_$RUNNUMBER.tgz found exiting"
99+
exit 2
100+
fi
101+
tar -xzvf commonInput.tgz
102+
tar -xzvf runInput_$RUNNUMBER.tgz
103+
###fi
104+
105+
echo "Checking current directory content"
106+
ls -altr
107+
108+
if [[ -f "setenv_extra.sh" ]]; then
109+
source setenv_extra.sh $RUNNUMBER $BEAMTYPE
110+
else
111+
echo "************************************************************************************"
112+
echo "No ad-hoc setenv_extra settings for current async processing; using the one in O2DPG"
113+
echo "************************************************************************************"
114+
if [[ -f $O2DPG_ROOT/DATA/production/configurations/$ALIEN_JDL_LPMANCHORYEAR/$ALIEN_JDL_LPMPRODUCTIONTAG/$ALIEN_JDL_LPMPASSNAME/setenv_extra.sh ]]; then
115+
ln -s $O2DPG_ROOT/DATA/production/configurations/$ALIEN_JDL_LPMANCHORYEAR/$ALIEN_JDL_LPMPRODUCTIONTAG/$ALIEN_JDL_LPMPASSNAME/setenv_extra.sh
116+
source setenv_extra.sh $RUNNUMBER $BEAMTYPE
117+
else
118+
echo "*********************************************************************************************************"
119+
echo "No setenev_extra for $ALIEN_JDL_LPMANCHORYEAR/$ALIEN_JDL_LPMPRODUCTIONTAG/$ALIEN_JDL_LPMPASSNAME in O2DPG"
120+
echo " No special settings will be used"
121+
echo "*********************************************************************************************************"
122+
fi
123+
fi
124+
125+
rm -f /dev/shm/*
126+
127+
if [[ -f run-workflow-on-inputlist.sh ]]; then
128+
echo "Use run-workflow-on-inputlist.sh macro passed as input"
129+
else
130+
echo "Use run-workflow-on-inputlist.sh macro from O2"
131+
cp $O2_ROOT/prodtests/full-system-test/run-workflow-on-inputlist.sh .
132+
fi
133+
134+
if [[ -z $DPL_WORKFLOW_FROM_OUTSIDE ]]; then
135+
echo "Use dpl-workflow.sh from O2"
136+
cp $O2_ROOT/prodtests/full-system-test/dpl-workflow.sh .
137+
else
138+
echo "Use dpl-workflow.sh passed as input"
139+
cp $DPL_WORKFLOW_FROM_OUTSIDE .
140+
fi
141+
142+
if [[ ! -z $QC_JSON_FROM_OUTSIDE ]]; then
143+
echo "QC json from outside is $QC_JSON_FROM_OUTSIDE"
144+
fi
145+
146+
ln -sf $O2DPG_ROOT/DATA/common/setenv.sh
147+
ln -sf $O2DPG_ROOT/DATA/common/getCommonArgs.sh
148+
ln -sf $O2_ROOT/prodtests/full-system-test/workflow-setup.sh
149+
150+
# reco and matching
151+
# print workflow
152+
IS_SIMULATED_DATA=0 WORKFLOWMODE=print DISABLE_ROOT_OUTPUT="" TFDELAY=40 NTIMEFRAMES=-1 SHMSIZE=16000000000 DDSHMSIZE=32000 ./run-workflow-on-inputlist.sh CTF list.list > workflowconfig.log
153+
# run it
154+
IS_SIMULATED_DATA=0 WORKFLOWMODE=run DISABLE_ROOT_OUTPUT="" TFDELAY=40 NTIMEFRAMES=-1 SHMSIZE=16000000000 DDSHMSIZE=32000 ./run-workflow-on-inputlist.sh CTF list.list
155+
156+
# now extract all performance metrics
157+
IFS=$'\n'
158+
if [[ -f "performanceMetrics.json" ]]; then
159+
for workflow in `grep ': {' performanceMetrics.json`; do
160+
strippedWorkflow=`echo $workflow | cut -d\" -f2`
161+
cat performanceMetrics.json | jq '.'\"${strippedWorkflow}\"'' > ${strippedWorkflow}_metrics.json
162+
done
163+
fi
164+
165+
# now checking AO2D file
166+
if [[ -f "AO2D.root" ]]; then
167+
root -l -b -q $O2DPG_ROOT/DATA/production/common/readAO2Ds.C > checkAO2D.log
168+
exitcode=$?
169+
if [[ $exitcode -ne 0 ]]; then
170+
echo "exit code from AO2D check is " $exitcode > validation_error.message
171+
echo "exit code from AO2D check is " $exitcode
172+
exit $exitcode
173+
fi
174+
${O2DPG_ROOT}/MC/analysis_testing/o2dpg_analysis_test_workflow.py --merged-task -f AO2D.root
175+
${O2DPG_ROOT}/MC/bin/o2_dpg_workflow_runner.py -f workflow_analysis_test.json > analysisQC.log
176+
if [[ -f "Analysis/MergedAnalyses/AnalysisResults.root" ]]; then
177+
mv Analysis/MergedAnalyses/AnalysisResults.root .
178+
else
179+
echo "No Analysis/MergedAnalyses/AnalysisResults.root found! check analysis QC"
180+
fi
181+
if ls Analysis/*/*.log 1> /dev/null 2>&1; then
182+
mv Analysis/*/*.log .
183+
fi
184+
fi
185+
186+
# copying the QC json file here
187+
if [[ ! -z $QC_JSON_FROM_OUTSIDE ]]; then
188+
QC_JSON=$QC_JSON_FROM_OUTSIDE
189+
else
190+
if [[ -d $GEN_TOPO_WORKDIR/json_cache ]]; then
191+
echo "copying latest file found in ${GEN_TOPO_WORKDIR}/json_cache"
192+
QC_JSON=`ls -dArt $GEN_TOPO_WORKDIR/json_cache/* | tail -n 1`
193+
else
194+
echo "No QC files found, probably QC was not run"
195+
fi
196+
fi
197+
if [[ ! -z $QC_JSON ]]; then
198+
cp $QC_JSON QC_production.json
199+
fi
Lines changed: 105 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,105 @@
1+
# script to set extra env variables
2+
# taking some stuff from alien
3+
4+
# process flags passed to the script
5+
6+
export SETENV_NO_ULIMIT=1
7+
8+
# detector list
9+
export WORKFLOW_DETECTORS=ITS,TPC,TOF,FV0,FT0,FDD,MID,MFT
10+
11+
# ad-hoc settings for CTF reader: we are on the grid, we read the files remotely
12+
echo "*********************** mode = ${MODE}"
13+
unset ARGS_EXTRA_PROCESS_o2_ctf_reader_workflow
14+
if [[ $MODE == "remote" ]]; then
15+
export INPUT_FILE_COPY_CMD="\"alien_cp ?src file://?dst\""
16+
export ARGS_EXTRA_PROCESS_o2_ctf_reader_workflow="--remote-regex \"^alien:///alice/data/.+\""
17+
fi
18+
# other ad-hoc settings for CTF reader
19+
export ARGS_EXTRA_PROCESS_o2_ctf_reader_workflow="$ARGS_EXTRA_PROCESS_o2_ctf_reader_workflow --allow-missing-detectors "
20+
21+
# run-dependent options
22+
if [[ -f "setenv_run.sh" ]]; then
23+
source setenv_run.sh
24+
else
25+
echo "************************************************************"
26+
echo No ad-hoc run-dependent settings for current async processing
27+
echo "************************************************************"
28+
fi
29+
30+
# remove monitoring-backend
31+
export ENABLE_METRICS=1
32+
33+
# add the performance metrics
34+
#export ARGS_ALL_EXTRA=" --resources-monitoring 10 --resources-monitoring-dump-interval 10"
35+
export ARGS_ALL_EXTRA=" --resources-monitoring 50 --resources-monitoring-dump-interval 50"
36+
37+
# some settings in common between workflows
38+
export ITSEXTRAERR="ITSCATrackerParam.sysErrY2[0]=9e-4;ITSCATrackerParam.sysErrZ2[0]=9e-4;ITSCATrackerParam.sysErrY2[1]=9e-4;ITSCATrackerParam.sysErrZ2[1]=9e-4;ITSCATrackerParam.sysErrY2[2]=9e-4;ITSCATrackerParam.sysErrZ2[2]=9e-4;ITSCATrackerParam.sysErrY2[3]=1e-2;ITSCATrackerParam.sysErrZ2[3]=1e-2;ITSCATrackerParam.sysErrY2[4]=1e-2;ITSCATrackerParam.sysErrZ2[4]=1e-2;ITSCATrackerParam.sysErrY2[5]=1e-2;ITSCATrackerParam.sysErrZ2[5]=1e-2;ITSCATrackerParam.sysErrY2[6]=1e-2;ITSCATrackerParam.sysErrZ2[6]=1e-2;"
39+
40+
export MFT_STROBELGT="MFTAlpideParam.roFrameLengthInBC=198"
41+
42+
# ad-hoc options for ITS reco workflow
43+
export ITS_CONFIG=" --tracking-mode sync_misaligned"
44+
export CONFIG_EXTRA_PROCESS_o2_its_reco_workflow="ITSVertexerParam.phiCut=0.5;ITSVertexerParam.clusterContributorsCut=3;ITSVertexerParam.tanLambdaCut=0.2"
45+
46+
# ad-hoc options for GPU reco workflow
47+
export CONFIG_EXTRA_PROCESS_o2_gpu_reco_workflow="$VDRIFT;GPU_global.dEdxUseFullGainMap=1;GPU_global.dEdxDisableResidualGainMap=1"
48+
49+
# ad-hoc settings for TOF reco
50+
# export ARGS_EXTRA_PROCESS_o2_tof_reco_workflow="--use-ccdb --ccdb-url-tof \"http://alice-ccdb.cern.ch\""
51+
# since commit on Dec, 4
52+
export ARGS_EXTRA_PROCESS_o2_tof_reco_workflow="--use-ccdb"
53+
54+
# ad-hoc options for primary vtx workflow
55+
#export PVERTEXER="pvertexer.acceptableScale2=9;pvertexer.minScale2=2.;pvertexer.nSigmaTimeTrack=4.;pvertexer.timeMarginTrackTime=0.5;pvertexer.timeMarginVertexTime=7.;pvertexer.nSigmaTimeCut=10;pvertexer.dbscanMaxDist2=30;pvertexer.dcaTolerance=3.;pvertexer.pullIniCut=100;pvertexer.addZSigma2=0.1;pvertexer.tukey=20.;pvertexer.addZSigma2Debris=0.01;pvertexer.addTimeSigma2Debris=1.;pvertexer.maxChi2Mean=30;pvertexer.timeMarginReattach=3.;pvertexer.addTimeSigma2Debris=1.;"
56+
# following comment https://alice.its.cern.ch/jira/browse/O2-2691?focusedCommentId=278262&page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel#comment-278262
57+
export PVERTEXER="pvertexer.acceptableScale2=9;pvertexer.minScale2=2.;pvertexer.nSigmaTimeTrack=4.;pvertexer.timeMarginTrackTime=0.5;pvertexer.timeMarginVertexTime=7.;pvertexer.nSigmaTimeCut=10;pvertexer.dbscanMaxDist2=36;pvertexer.dcaTolerance=3.;pvertexer.pullIniCut=100;pvertexer.addZSigma2=0.1;pvertexer.tukey=20.;pvertexer.addZSigma2Debris=0.01;pvertexer.addTimeSigma2Debris=1.;pvertexer.maxChi2Mean=30;pvertexer.timeMarginReattach=3.;pvertexer.addTimeSigma2Debris=1.;pvertexer.dbscanDeltaT=24;pvertexer.maxChi2TZDebris=100;pvertexer.maxMultRatDebris=1.;pvertexer.dbscanAdaptCoef=20.;"
58+
export SVTX="svertexer.checkV0Hypothesis=false;svertexer.checkCascadeHypothesis=false"
59+
60+
export CONFIG_EXTRA_PROCESS_o2_primary_vertexing_workflow="$VDRIFT;$PVERTEXER;$MFT_STROBELGT"
61+
export CONFIG_EXTRA_PROCESS_o2_secondary_vertexing_workflow="$SVTX"
62+
63+
# ad-hoc settings for its-tpc matching
64+
export ITSTPCMATCH="tpcitsMatch.maxVDriftUncertainty=0.2;tpcitsMatch.safeMarginTimeCorrErr=10.;tpcitsMatch.cutMatchingChi2=1000;tpcitsMatch.crudeAbsDiffCut[0]=5;tpcitsMatch.crudeAbsDiffCut[1]=5;tpcitsMatch.crudeAbsDiffCut[2]=0.3;tpcitsMatch.crudeAbsDiffCut[3]=0.3;tpcitsMatch.crudeAbsDiffCut[4]=10;tpcitsMatch.crudeNSigma2Cut[0]=200;tpcitsMatch.crudeNSigma2Cut[1]=200;tpcitsMatch.crudeNSigma2Cut[2]=200;tpcitsMatch.crudeNSigma2Cut[3]=200;tpcitsMatch.crudeNSigma2Cut[4]=900;"
65+
export CONFIG_EXTRA_PROCESS_o2_tpcits_match_workflow="$VDRIFT;$ITSEXTRAERR;$ITSTPCMATCH"
66+
67+
# ad-hoc settings for TOF matching
68+
export ARGS_EXTRA_PROCESS_o2_tof_matcher_workflow="--output-type matching-info,calib-info --enable-dia"
69+
export CONFIG_EXTRA_PROCESS_o2_tof_matcher_workflow="$VDRIFT;$ITSEXTRAERR"
70+
71+
# ad-hoc settings for TRD matching
72+
export CONFIG_EXTRA_PROCESS_o2_trd_global_tracking="$VDRIFT;$ITSEXTRAERR"
73+
74+
# ad-hoc settings for FT0
75+
export ARGS_EXTRA_PROCESS_o2_ft0_reco_workflow="--ft0-reconstructor"
76+
77+
# ad-hoc settings for FV0
78+
export ARGS_EXTRA_PROCESS_o2_fv0_reco_workflow="--fv0-reconstructor"
79+
80+
# ad-hoc settings for FDD
81+
#...
82+
83+
# ad-hoc settings for MFT
84+
export CONFIG_EXTRA_PROCESS_o2_mft_reco_workflow="$MFT_STROBELGT;MFTTracking.forceZeroField=true;MFTTracking.FullClusterScan=true;MFTTracking.LTFclsRCut=0.2;"
85+
export ARGS_EXTRA_PROCESS_o2_mft_reco_workflow=" --run-assessment "
86+
87+
# Enabling AOD
88+
export WORKFLOW_PARAMETERS="AOD,${WORKFLOW_PARAMETERS}"
89+
90+
# ad-hoc settings for AOD
91+
#...
92+
93+
# Enabling QC
94+
export WORKFLOW_PARAMETERS="QC,${WORKFLOW_PARAMETERS}"
95+
export QC_CONFIG_PARAM="--local-batch=QC.root --override-values \"qc.config.Activity.number=$RUNNUMBER;qc.config.Activity.passName=$PASS;qc.config.Activity.periodName=$PERIOD\""
96+
export GEN_TOPO_WORKDIR="./"
97+
#export QC_JSON_FROM_OUTSIDE="QC-20211214.json"
98+
99+
if [[ ! -z $QC_JSON_FROM_OUTSIDE ]]; then
100+
sed -i 's/REPLACE_ME_RUNNUMBER/'"${RUNNUMBER}"'/g' $QC_JSON_FROM_OUTSIDE
101+
sed -i 's/REPLACE_ME_PASS/'"${PASS}"'/g' $QC_JSON_FROM_OUTSIDE
102+
sed -i 's/REPLACE_ME_PERIOD/'"${PERIOD}"'/g' $QC_JSON_FROM_OUTSIDE
103+
fi
104+
105+

DATA/production/configurations/2022/MayJunePilotBeam/apass1/selectSettings.sh

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,7 @@ if [[ $RUNNUMBER -ge 517684 ]] && [[ $RUNNUMBER -le 517693 ]]; then
1414
COLLISIONCONTEXT=collisioncontext_Single_3b_3_1_1.root
1515
fi
1616

17-
if [[ $RUNNUMBER -ge 519041 ]] && [[ $RUNNUMBER -le 519045 ]]; then
17+
if [[ $RUNNUMBER -ge 519041 ]] && [[ $RUNNUMBER -le 519499 ]]; then
1818
COLLISIONCONTEXT=collisioncontext_Single_16b_8_8_8_noLR.root
1919
fi
2020

0 commit comments

Comments
 (0)