-
Notifications
You must be signed in to change notification settings - Fork 1
/
Copy pathntuple_production.jobscript
163 lines (127 loc) · 3.48 KB
/
ntuple_production.jobscript
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
#!/bin/bash
#
#These must be defined
if [ -z $FCL_FILE ]; then
echo "Fatal Must provide FCL_FILE env var"
exit 1
fi
if [ -z $NTUPLE_DIR ]; then
echo "Fatal Must provide NTUPLE_DIR env var"
exit 1
fi
stat ${NTUPLE_DIR}
if [ $? -ne 0 ]; then
echo "Failed to $NTUPLE_DIR. Exiting safely"
exit 0
fi
source /cvmfs/dune.opensciencegrid.org/products/dune/setup_dune.sh
setup metacat
export METACAT_SERVER_URL=https://metacat.fnal.gov:9443/dune_meta_prod/app
export METACAT_AUTH_SERVER_URL=https://metacat.fnal.gov:8143/auth/dune
if [ -n "$PROTODUNEANA_TAR" ]; then
stat ${PROTODUNEANA_TAR}
if [ $? -ne 0 ]; then
echo "Failed to stat $PROTODUNEANA_TAR. Exiting safely"
exit 0
fi
export PRODUCTS=$PROTODUNEANA_TAR:$PRODUCTS
echo "Set protoduneana to $PROTODUNEANA_TAR"
fi
if [ -n "$GEANT4REWEIGHT_TAR" ]; then
stat ${GEANT4REWEIGHT_TAR}
if [ $? -ne 0 ]; then
echo "Failed to stat $GEANT4REWEIGHT_TAR. Exiting safely"
exit 0
fi
export PRODUCTS=$GEANT4REWEIGHT_TAR:$PRODUCTS
echo "Set protoduneana to $GEANT4REWEIGHT_TAR"
fi
#Setup recent lar software suite
DUNE_VERSION=${DUNE_VERSION:-v09_81_00d01}
setup dunesw \
"${DUNE_VERSION}" \
-q "${DUNE_QUALIFIER:-e26:prof}"
setup_exit=$?
if [ $? -ne 0 ]; then
echo "Failed to setup dunesw $DUNE_VERSION $DUNE_QUALIFIER"
exit $setup_exit
fi
echo "DUNESW loc:"
ups active | grep dunesw
if [ -z ${JUSTIN_PROCESSORS} ]; then
JUSTIN_PROCESSORS=1
fi
echo "Justin processors: ${JUSTIN_PROCESSORS}"
export TF_NUM_THREADS=${JUSTIN_PROCESSORS}
export OPENBLAS_NUM_THREADS=${JUSTIN_PROCESSORS}
export JULIA_NUM_THREADS=${JUSTIN_PROCESSORS}
export MKL_NUM_THREADS=${JUSTIN_PROCESSORS}
export NUMEXPR_NUM_THREADS=${JUSTIN_PROCESSORS}
export OMP_NUM_THREADS=${JUSTIN_PROCESSORS}
echo "printing env"
env
echo "Justin specific env vars"
env | grep JUSTIN
echo "Will use justin-get-file"
#
nfiles=${NFILES:-1}
python $NTUPLE_DIR/ntuple_prod_utils.py get_nfiles_justin \
-n $nfiles \
--dids input_dids.list \
--pfns input_pfns.list
#pfn_exit=$?
#if [ $pfn_exit -ne 0 ]; then
# echo "Error in get_nfiles_justin. Exiting"
# exit $pfn_exit
#fi
n_files_retrieved=`wc -l input_pfns.list | cut -f1 -d' '`
echo "Files retrieved: ${n_files_retrieved}"
if [ $n_files_retrieved -eq 0 ]; then
echo "No files retrieved. Exiting safely"
exit 0
fi
pfn_list=`cat input_pfns.list`
echo "PFN list:"
echo $pfn_list
now=$(date -u +"%Y%m%dT%H%M%SZ")
##TODO -- edit this
#jobid=`echo "${JUSTIN_JOBSUB_ID:-1}" | awk -F '.' '{print $1}'`
jobid=`echo "${JUSTIN_JOBSUB_ID:-1}" | cut -f1 -d'@' | sed -e "s/\./_/"`
PREFIX=${PREFIX:-"pdspana"}
OUTFILE="${PREFIX}_${jobid}_${JUSTIN_STAGE_ID}_${JUSTIN_WORKFLOW_ID}_${now}.root"
nevents=${NEVENTS:--1}
echo "Running pdspana"
touch ana.log
starttime=`date +"%s"`.0
lar -c ${FCL_FILE} \
-n ${nevents} \
-T ${OUTFILE} \
-s ${pfn_list} >ana.log 2>&1
larExit=$?
endtime=`date +"%s"`.0
if [ $larExit -ne 0 ]; then
echo "Error in ntuple production"
cat ana.log
exit $larExit
fi
echo "Ran successfully"
echo "Forming metadata"
### Get the metadata
python $NTUPLE_DIR/ntuple_prod_utils.py \
metadata \
--root_file ${OUTFILE} \
--dids input_dids.list \
--version ${DUNE_VERSION} \
--fcl_name ${FCL_FILE} \
--tree_name ${TREE_NAME:-"beamana/pduneana"} \
-o $OUTFILE.json
#--log_file md.log \
mdExit=$?
if [ $mdExit -ne 0 ]; then
echo "Error in ntuple metdata production"
cat md.log
exit $mdExit
fi
echo "formed"
cat ${OUTFILE}.json
echo "$pfn_list" > justin-processed-pfns.txt