Skip to content

Commit bcace7e

Browse files
authored
Merge branch 'AliceO2Group:master' into tpc_cmc
2 parents 8ee32ba + 198c1c8 commit bcace7e

36 files changed

Lines changed: 1543 additions & 119 deletions

DATA/production/calib/tpc-laser-aggregator.sh

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@ FILEWORKDIR="/home/wiechula/processData/inputFilesTracking/triggeredLaser"
88

99
PROXY_INSPEC="A:TPC/LASERTRACKS;B:TPC/CEDIGITS;D:TPC/CLUSREFS"
1010

11-
CALIB_CONFIG="TPCCalibPulser.FirstTimeBin=450;TPCCalibPulser.LastTimeBin=550;TPCCalibPulser.NbinsQtot=300;TPCCalibPulser.XminQtot=2;TPCCalibPulser.XmaxQtot=602;TPCCalibPulser.MinimumQtot=8;TPCCalibPulser.MinimumQmax=6;TPCCalibPulser.XminT0=450;TPCCalibPulser.XmaxT0=550;TPCCalibPulser.NbinsT0=400;keyval.output_dir=/dev/null"
11+
CALIB_CONFIG="TPCCalibPulser.FirstTimeBin=450;TPCCalibPulser.LastTimeBin=550;TPCCalibPulser.NbinsQtot=600;TPCCalibPulser.XminQtot=2;TPCCalibPulser.XmaxQtot=1202;TPCCalibPulser.MinimumQtot=8;TPCCalibPulser.MinimumQmax=6;TPCCalibPulser.XminT0=450;TPCCalibPulser.XmaxT0=550;TPCCalibPulser.NbinsT0=400;keyval.output_dir=/dev/null"
1212

1313
[[ $RUNTYPE == "SYNTHETIC" ]] && CCDB_PATH="http://ccdb-test.cern.ch:8080" || CCDB_PATH="http://o2-ccdb.internal"
1414

DATA/production/calib/tpc-laser.sh

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -48,7 +48,7 @@ fi
4848
PROXY_INSPEC="A:TPC/RAWDATA;dd:FLP/DISTSUBTIMEFRAME/0"
4949
CALIB_INSPEC="A:TPC/RAWDATA;dd:FLP/DISTSUBTIMEFRAME/0"
5050

51-
CALIB_CONFIG="TPCCalibPulser.FirstTimeBin=450;TPCCalibPulser.LastTimeBin=550;TPCCalibPulser.NbinsQtot=250;TPCCalibPulser.XminQtot=2;TPCCalibPulser.XmaxQtot=502;TPCCalibPulser.MinimumQtot=8;TPCCalibPulser.MinimumQmax=6;TPCCalibPulser.XminT0=450;TPCCalibPulser.XmaxT0=550;TPCCalibPulser.NbinsT0=400;keyval.output_dir=/dev/null"
51+
CALIB_CONFIG="TPCCalibPulser.FirstTimeBin=450;TPCCalibPulser.LastTimeBin=550;TPCCalibPulser.NbinsQtot=400;TPCCalibPulser.XminQtot=2;TPCCalibPulser.XmaxQtot=802;TPCCalibPulser.MinimumQtot=8;TPCCalibPulser.MinimumQmax=6;TPCCalibPulser.XminT0=450;TPCCalibPulser.XmaxT0=550;TPCCalibPulser.NbinsT0=400;keyval.output_dir=/dev/null"
5252

5353
CCDB_PATH="http://o2-ccdb.internal"
5454

DATA/production/configurations/CTFSkimming/ctf-skim-workflow.sh

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -89,7 +89,7 @@ done
8989

9090
if [[ -z ${IRFRAMES:-} ]] || [[ -z ${CTFLIST:-} ]] ; then
9191
echo "Format: ${0##*/} -f <IRFramesFile> -c <CTFsList>"
92-
exit 1
92+
exit 1
9393
fi
9494

9595
[[ "0${ALLOW_MISSING_DET:-}" == "00" ]] && ALLOW_MISSING_DET= || ALLOW_MISSING_DET="--allow-missing-detectors"
@@ -107,12 +107,12 @@ add_W o2-ctf-reader-workflow "--ctf-data-subspec 1 --ir-frames-files $IRFRAMES $
107107

108108
if [[ -z ${NO_ITSMFT_MASKING:-} ]] ; then
109109
has_detector_ctf ITS && add_W o2-its-reco-workflow "--digits-from-upstream --disable-mc --disable-tracking --disable-root-output --pipeline $(get_N its-tracker ITS REST 1 ITSTRK)" "ITSClustererParam.maxBCDiffToMaskBias=10;"
110-
has_detector_ctf MFT && add_W o2-mft-reco-workflow "--digits-from-upstream --disable-mc --disable-tracking --disable-root-output --pipeline $(get_N mft-tracker MFT REST 1 MFTTRK)" "MFTClustererParam.maxBCDiffToMaskBias=10;"
110+
has_detector_ctf MFT && add_W o2-mft-reco-workflow "--digits-from-upstream --disable-mc --disable-tracking --disable-root-output --pipeline $(get_N mft-tracker MFT REST 1 MFTTRK)" "MFTClustererParam.maxBCDiffToMaskBias=10;"
111111
fi
112112

113113
has_detector_ctf ITS && add_W o2-itsmft-entropy-encoder-workflow "$RANS_OPT --select-ir-frames --irframe-margin-bwd ${ITS_MARGIN_BWD:-$DEF_MARGIN_BWD} --irframe-margin-fwd ${ITS_MARGIN_FWD:-$DEF_MARGIN_FWD} --mem-factor ${ITS_ENC_MEMFACT:-1.5} --pipeline $(get_N its-entropy-encoder ITS CTF 1)"
114114
has_detector_ctf MFT && add_W o2-itsmft-entropy-encoder-workflow "$RANS_OPT --select-ir-frames --irframe-margin-bwd ${MFT_MARGIN_BWD:-$DEF_MARGIN_BWD} --irframe-margin-fwd ${MFT_MARGIN_FWD:-$DEF_MARGIN_FWD} --mem-factor ${MFT_ENC_MEMFACT:-1.5} --runmft true --pipeline $(get_N mft-entropy-encoder MFT CTF 1)"
115-
has_detector_ctf TPC && add_W o2-tpc-reco-workflow "$RANS_OPT --select-ir-frames --irframe-margin-bwd ${TPC_MARGIN_BWD:-$DEF_MARGIN_BWD} --irframe-margin-fwd ${TPC_MARGIN_FWD:-$DEF_MARGIN_FWD} --mem-factor ${TPC_ENC_MEMFACT:-1.} --input-type compressed-clusters-flat --output-type encoded-clusters,disable-writer --pipeline $(get_N tpc-entropy-encoder TPC CTF 1 TPCENT)"
115+
has_detector_ctf TPC && add_W o2-tpc-reco-workflow "$RANS_OPT --select-ir-frames --irframe-margin-bwd ${TPC_MARGIN_BWD:-$DEF_MARGIN_BWD} --irframe-margin-fwd ${TPC_MARGIN_FWD:-$DEF_MARGIN_FWD} --mem-factor ${TPC_ENC_MEMFACT:-1.} --input-type compressed-clusters-flat-for-encode --output-type encoded-clusters,disable-writer --pipeline $(get_N tpc-entropy-encoder TPC CTF 1 TPCENT)"
116116
has_detector_ctf TRD && add_W o2-trd-entropy-encoder-workflow "$RANS_OPT --select-ir-frames --irframe-margin-bwd ${TRD_MARGIN_BWD:-$DEF_MARGIN_BWD} --irframe-margin-fwd ${TRD_MARGIN_FWD:-$DEF_MARGIN_FWD} --mem-factor ${TRD_ENC_MEMFACT:-1.5} --pipeline $(get_N trd-entropy-encoder TRD CTF 1 TRDENT)"
117117
has_detector_ctf TOF && add_W o2-tof-entropy-encoder-workflow "$RANS_OPT --select-ir-frames --irframe-margin-bwd ${TOF_MARGIN_BWD:-$DEF_MARGIN_BWD} --irframe-margin-fwd ${TOF_MARGIN_FWD:-$DEF_MARGIN_FWD} --mem-factor ${TOF_ENC_MEMFACT:-1.5} --pipeline $(get_N tof-entropy-encoder TOF CTF 1)"
118118
has_detector_ctf FT0 && add_W o2-ft0-entropy-encoder-workflow "$RANS_OPT --select-ir-frames --irframe-margin-bwd ${FT0_MARGIN_BWD:-$DEF_MARGIN_BWD} --irframe-margin-fwd ${FT0_MARGIN_FWD:-$DEF_MARGIN_FWD} --mem-factor ${FT0_ENC_MEMFACT:-1.5} --pipeline $(get_N ft0-entropy-encoder FT0 CTF 1)"

DATA/production/configurations/asyncReco/setenv_extra.sh

Lines changed: 9 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -349,12 +349,7 @@ if [[ $ALIGNLEVEL == 0 ]]; then
349349
elif [[ $ALIGNLEVEL == 1 ]]; then
350350
ERRIB="100e-8"
351351
ERROB="100e-8"
352-
if [[ $ALIEN_JDL_LPMANCHORYEAR == "2026" ]] ; then
353-
[[ -z $TPCITSTIMEERR ]] && TPCITSTIMEERR="0.05"
354-
EXTRA_PRIMVTX_TimeMargin="pvertexer.timeMarginVertexTime=0.3"
355-
else
356-
[[ -z $TPCITSTIMEERR ]] && TPCITSTIMEERR="0.2"
357-
fi
352+
[[ -z $TPCITSTIMEERR ]] && TPCITSTIMEERR="0.2"
358353
if [[ $ALIEN_JDL_LPMANCHORYEAR == "2023" && $BEAMTYPE == "PbPb" && $ANCHORED_PASS_NUMBER -lt 5 ]] || [[ $PERIOD == "LHC24al" ]] ; then
359354
[[ $ALIEN_JDL_LPMANCHORYEAR == "2023" ]] && [[ $BEAMTYPE == "PbPb" ]] && CUT_MATCH_CHI2=80 || CUT_MATCH_CHI2=100
360355
export ITSTPCMATCH="tpcitsMatch.safeMarginTimeCorrErr=2.;tpcitsMatch.XMatchingRef=60.;tpcitsMatch.cutMatchingChi2=$CUT_MATCH_CHI2;;tpcitsMatch.crudeAbsDiffCut[0]=6;tpcitsMatch.crudeAbsDiffCut[1]=6;tpcitsMatch.crudeAbsDiffCut[2]=0.3;tpcitsMatch.crudeAbsDiffCut[3]=0.3;tpcitsMatch.crudeAbsDiffCut[4]=2.5;tpcitsMatch.crudeNSigma2Cut[0]=64;tpcitsMatch.crudeNSigma2Cut[1]=64;tpcitsMatch.crudeNSigma2Cut[2]=64;tpcitsMatch.crudeNSigma2Cut[3]=64;tpcitsMatch.crudeNSigma2Cut[4]=64;"
@@ -558,18 +553,21 @@ export ITSEXTRAERR="ITSCATrackerParam.sysErrY2[0]=$ERRIB;ITSCATrackerParam.sysEr
558553
# ad-hoc options for ITS reco workflow
559554
EXTRA_ITSRECO_CONFIG=
560555
if [[ $BEAMTYPE == "PbPb" ]]; then
561-
EXTRA_ITSRECO_CONFIG="ITSCATrackerParam.deltaRof=0;ITSVertexerParam.clusterContributorsCut=16;ITSVertexerParam.lowMultBeamDistCut=0;ITSCATrackerParam.nROFsPerIterations=12;ITSCATrackerParam.perPrimaryVertexProcessing=false;ITSCATrackerParam.fataliseUponFailure=false;ITSCATrackerParam.dropTFUponFailure=true;ITSCATrackerParam.maxMemory=21474836480;"
556+
# tracker memory
557+
EXTRA_ITSRECO_CONFIG=";ITSCATrackerParam.perPrimaryVertexProcessing=false;ITSCATrackerParam.fataliseUponFailure=false;ITSCATrackerParam.dropTFUponFailure=true;ITSCATrackerParam.maxMemory=21474836480;"
562558
if [[ -z "$ALIEN_JDL_DISABLE_UPC" || $ALIEN_JDL_DISABLE_UPC != 1 ]]; then
563559
EXTRA_ITSRECO_CONFIG+=";ITSVertexerParam.nIterations=2;ITSCATrackerParam.doUPCIteration=true;"
564560
fi
565561
if [[ $LOWFIELD == "1" ]]; then
566-
EXTRA_ITSRECO_CONFIG+=";ITSCATrackerParam.minPt=2.5;"
562+
EXTRA_ITSRECO_CONFIG+=";ITSCATrackerParam.minPt=2.5;" # disables B-field scaling
567563
fi
568564
elif [[ $BEAMTYPE == "pp" || $LIGHTNUCLEI == "1" ]]; then
569-
EXTRA_ITSRECO_CONFIG="ITSVertexerParam.phiCut=0.5;ITSVertexerParam.clusterContributorsCut=3;ITSVertexerParam.tanLambdaCut=0.2;"
570-
EXTRA_ITSRECO_CONFIG+=";ITSCATrackerParam.startLayerMask[0]=127;ITSCATrackerParam.startLayerMask[1]=127;ITSCATrackerParam.startLayerMask[2]=127;"
565+
# allowed start layers
566+
EXTRA_ITSRECO_CONFIG=";ITSCATrackerParam.startLayerMask[0]=127;ITSCATrackerParam.startLayerMask[1]=127;ITSCATrackerParam.startLayerMask[2]=127;"
567+
# low pt-cutoffs
571568
EXTRA_ITSRECO_CONFIG+=";ITSCATrackerParam.minPtIterLgt[0]=0.05;ITSCATrackerParam.minPtIterLgt[1]=0.05;ITSCATrackerParam.minPtIterLgt[2]=0.05;ITSCATrackerParam.minPtIterLgt[3]=0.05;ITSCATrackerParam.minPtIterLgt[4]=0.05;ITSCATrackerParam.minPtIterLgt[5]=0.05;ITSCATrackerParam.minPtIterLgt[6]=0.05;ITSCATrackerParam.minPtIterLgt[7]=0.05;ITSCATrackerParam.minPtIterLgt[8]=0.05;ITSCATrackerParam.minPtIterLgt[9]=0.09;ITSCATrackerParam.minPtIterLgt[10]=0.167;ITSCATrackerParam.minPtIterLgt[11]=0.125;"
572-
EXTRA_ITSRECO_CONFIG+=";ITSCATrackerParam.deltaRof=1;ITSVertexerParam.deltaRof=1;" # enable delta-rof tracking
569+
# enable delta-rof tracking
570+
EXTRA_ITSRECO_CONFIG+=";ITSCATrackerParam.addTimeError[0]=30;ITSCATrackerParam.addTimeError[1]=30;ITSCATrackerParam.addTimeError[2]=30;ITSCATrackerParam.addTimeError[3]=30;ITSCATrackerParam.addTimeError[4]=30;ITSCATrackerParam.addTimeError[5]=30;ITSCATrackerParam.addTimeError[6]=30;ITSVertexerParam.seedMemberRadiusTime=1;"
573571
# this is to impose old pp pT cuts (overriding hardcoded pbpb24 apass1 settings)
574572
# EXTRA_ITSRECO_CONFIG+=";ITSCATrackerParam.minPtIterLgt[0]=0.05;ITSCATrackerParam.minPtIterLgt[1]=0.05;ITSCATrackerParam.minPtIterLgt[2]=0.05;ITSCATrackerParam.minPtIterLgt[3]=0.05;ITSCATrackerParam.minPtIterLgt[4]=0.05;ITSCATrackerParam.minPtIterLgt[5]=0.05;ITSCATrackerParam.minPtIterLgt[6]=0.05;ITSCATrackerParam.minPtIterLgt[7]=0.05;ITSCATrackerParam.minPtIterLgt[8]=0.05;ITSCATrackerParam.minPtIterLgt[9]=0.05;ITSCATrackerParam.minPtIterLgt[10]=0.05;ITSCATrackerParam.minPtIterLgt[11]=0.05;"
575573
fi

DATA/production/qc-workflow.sh

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -117,6 +117,7 @@ elif [[ -z ${QC_JSON_FROM_OUTSIDE:-} ]]; then
117117
[[ -z "${QC_JSON_CPV:-}" ]] && QC_JSON_CPV=apricot://o2/components/qc/ANY/any/cpv-physics-qcmn-epn
118118
[[ -z "${QC_JSON_TRD:-}" ]] && QC_JSON_TRD=apricot://o2/components/qc/ANY/any/trd-full-qcmn
119119
[[ -z "${QC_JSON_PHS:-}" ]] && QC_JSON_PHS=apricot://o2/components/qc/ANY/any/phos-raw-clusters-epn
120+
[[ -z "${QC_JSON_CTP:-}" ]] && QC_JSON_CTP=apricot://o2/components/qc/ANY/any/ctp-raw-qc-epn
120121
[[ -z "${QC_JSON_GLO_PRIMVTX:-}" ]] && QC_JSON_GLO_PRIMVTX=apricot://o2/components/qc/ANY/any/glo-vtx-qcmn-epn
121122
[[ -z "${QC_JSON_GLO_ITSTPC:-}" ]] && QC_JSON_GLO_ITSTPC=apricot://o2/components/qc/ANY/any/glo-itstpc-mtch-qcmn-epn
122123
if [[ -z "${QC_JSON_TOF_MATCH:-}" ]]; then

MC/bin/o2dpg_sim_config.py

Lines changed: 37 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -28,9 +28,19 @@ def add(cfg, flatconfig):
2828
if 302000 <= int(args.run) and int(args.run) < 309999:
2929
add(config, {"ITSAlpideParam.roFrameLengthInBC" : 198})
3030
# ITS reco settings
31-
add(config, {"ITSVertexerParam.phiCut" : 0.5,
32-
"ITSVertexerParam.clusterContributorsCut" : 3,
33-
"ITSVertexerParam.tanLambdaCut" : 0.2})
31+
add(config, {"ITSVertexerParam.phiCut": 0.4,
32+
"ITSVertexerParam.tanLambdaCut": 0.17,
33+
"ITSVertexerParam.pairCut": 0.0317563,
34+
"ITSVertexerParam.clusterCut": 0.6640964,
35+
"ITSVertexerParam.coarseZWindow": 0.2049018,
36+
"ITSVertexerParam.seedDedupZCut": 0.0711793,
37+
"ITSVertexerParam.refitDedupZCut": 0.0680009,
38+
"ITSVertexerParam.duplicateZCut": 0.1582193,
39+
"ITSVertexerParam.finalSelectionZCut": 0.1081465,
40+
"ITSVertexerParam.duplicateDistance2Cut": 0.0117033,
41+
"ITSVertexerParam.clusterContributorsCut": 2,
42+
"ITSVertexerParam.seedMemberRadiusZ": 0,
43+
"ITSVertexerParam.nSigmaCut": 0.032841})
3444
# primary vertexing settings
3545
if 301000 <= int(args.run) and int(args.run) <= 301999:
3646
add(config, {"pvertexer.acceptableScale2" : 9,
@@ -86,10 +96,6 @@ def add(cfg, flatconfig):
8696
if args.fwdmatching_cut_4_param == True:
8797
add(config, {"FwdMatching.cutFcn" : "cut3SigmaXYAngles"})
8898

89-
# deal with larger combinatorics
90-
if args.col == "PbPb" or (args.embedding and args.colBkg == "PbPb"):
91-
add(config, {"ITSVertexerParam.lowMultBeamDistCut": "0."})
92-
9399
# FIT digitizer settings
94100
# 2023 PbPb
95101
if 543437 <= int(args.run) and int(args.run) <= 545367:
@@ -105,6 +111,29 @@ def add(cfg, flatconfig):
105111
if COLTYPEIR == "PbPb":
106112
# 4 ADC channels / MIP
107113
add(config, {"FV0DigParam.adcChannelsPerMip": "4"})
114+
# 2025
115+
# first and last run of 2025
116+
if 562260 <= int(args.run) and int(args.run) <= 568721:
117+
# 14 ADC channels / MIP for FT0
118+
add(config, {"FT0DigParam.mMip_in_V": "7", "FT0DigParam.mMV_2_Nchannels": "2", "FT0DigParam.mMV_2_NchannelsInverse": "0.5"})
119+
if COLTYPEIR == "PbPb":
120+
# 4 ADC channels / MIP
121+
add(config, {"FV0DigParam.adcChannelsPerMip": "4"})
122+
# central and semicentral FT0 thresholds
123+
add(config, {"FT0DigParam.mtrg_central_trh": "1433", "FT0DigParam.mtrg_semicentral_trh": "35"})
124+
# FV0 trigger settings
125+
add(config, {"FV0DigParam.NchannelsLevel": "2", "FV0DigParam.InnerChargeLevel": "4", "FV0DigParam.OuterChargeLevel": "4", "FV0DigParam.ChargeLevel": "1080"})
126+
if COLTYPEIR == "pp" or COLTYPEIR == "OO" or COLTYPEIR == "NeNe" or COLTYPEIR == "pO":
127+
# central and semicentral FT0 thresholds
128+
add(config, {"FT0DigParam.mtrg_central_trh": "40", "FT0DigParam.mtrg_semicentral_trh": "20"})
129+
# FV0 trigger settings
130+
add(config, {"FV0DigParam.NchannelsLevel": "2", "FV0DigParam.InnerChargeLevel": "4", "FV0DigParam.OuterChargeLevel": "4", "FV0DigParam.ChargeLevel": "8"})
131+
if COLTYPEIR == "pp":
132+
# 15 ADC channels / MIP
133+
add(config, {"FV0DigParam.adcChannelsPerMip": "15"})
134+
if COLTYPEIR == "OO" or COLTYPEIR == "NeNe" or COLTYPEIR == "pO":
135+
# 11 ADC channels / MIP
136+
add(config, {"FV0DigParam.adcChannelsPerMip": "11"})
108137

109138
return config
110139

@@ -234,4 +263,4 @@ def overwrite_config(config, mainkey, subkey, value):
234263
if mainkey not in config:
235264
# Initialize the main key in the dictionary if it does not already exist
236265
config[mainkey] = {}
237-
config[mainkey][subkey] = value
266+
config[mainkey][subkey] = value

MC/bin/o2dpg_sim_workflow.py

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -302,6 +302,9 @@ def load_external_config(configfile):
302302
activeDetectors = { det:1 for det in activeDetectors.split(',') if det not in args.skipModules and det not in args.skipReadout}
303303
for det in activeDetectors:
304304
activate_detector(det)
305+
for det in args.skipModules:
306+
print(f"Skipping detector {det} in simulation")
307+
deactivate_detector(det)
305308

306309
# function to finalize detector source lists based on activeDetectors
307310
# detector source lists are comma separated lists of DET1, DET2, DET1-DET2, ...
@@ -1227,7 +1230,7 @@ def createRestDigiTask(name, det='ALLSMALLER'):
12271230
getDPL_global_options(),
12281231
f'-n {args.ns}',
12291232
simsoption,
1230-
'--onlyDet FT0,FV0,EMC,CTP',
1233+
'--onlyDet ' + ','.join([det for det in ['FT0', 'FV0', 'EMC', 'CTP'] if isActive(det)]),
12311234
f'--interactionRate {INTRATE}',
12321235
f'--incontext {CONTEXTFILE}',
12331236
f'--store-ctp-lumi {CTPSCALER}',
@@ -1387,7 +1390,6 @@ def getDigiTaskName(det):
13871390
ITSRECOtask['cmd'] = task_finalizer([
13881391
"${O2_ROOT}/bin/o2-its-reco-workflow" if args.detectorList == 'ALICE2' else "${O2_ROOT}/bin/o2-its3-reco-workflow",
13891392
getDPL_global_options(bigshm=havePbPb),
1390-
'--trackerCA' if args.detectorList == 'ALICE2' else '',
13911393
'--tracking-mode async',
13921394
putConfigValues(["ITSVertexerParam",
13931395
"ITSAlpideParam",
Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
### The setup uses an external event generator
2+
### This part sets the path of the file and the function call to retrieve it
3+
4+
[GeneratorExternal]
5+
fileName = ${O2DPG_MC_CONFIG_ROOT}/MC/config/PWGEM/external/generator/GeneratorEMCocktailV2.C
6+
funcName=GenerateEMCocktail(400,0,3,63,"${O2DPG_MC_CONFIG_ROOT}/MC/config/PWGEM/parametrizations/PbPb5TeV_central.json","5TeV_1020_wRatio_etatest",350,0.0,30.0,10000,1,1,0,0,"",0,1.1,"${O2DPG_MC_CONFIG_ROOT}/MC/config/PWGEM/decaytables/decaytable_LMee.dat",1)
Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
### The setup uses an external event generator
2+
### This part sets the path of the file and the function call to retrieve it
3+
4+
[GeneratorExternal]
5+
fileName = ${O2DPG_MC_CONFIG_ROOT}/MC/config/PWGEM/external/generator/GeneratorEMCocktailV2.C
6+
funcName=GenerateEMCocktail(400,0,3,63,"${O2DPG_MC_CONFIG_ROOT}/MC/config/PWGEM/parametrizations/PbPb5TeV_central.json","5TeV_2030_wRatio_etatest",350,0.0,30.0,10000,1,1,0,0,"",0,1.1,"${O2DPG_MC_CONFIG_ROOT}/MC/config/PWGEM/decaytables/decaytable_LMee.dat",1)
Lines changed: 64 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,64 @@
1+
int External()
2+
{
3+
4+
int checkPdgDecay = -11;
5+
std::string path{"o2sim_Kine.root"};
6+
TFile file(path.c_str(), "READ");
7+
if (file.IsZombie()) {
8+
std::cerr << "Cannot open ROOT file " << path << "\n";
9+
return 1;
10+
}
11+
12+
auto tree = (TTree*)file.Get("o2sim");
13+
std::vector<o2::MCTrack>* tracks{};
14+
tree->SetBranchAddress("MCTrack", &tracks);
15+
16+
int nMesons{};
17+
int nMesonsDiElectronDecay{};
18+
auto nEvents = tree->GetEntries();
19+
20+
for (int i = 0; i < nEvents; i++) {
21+
tree->GetEntry(i);
22+
for (auto& track : *tracks) {
23+
auto pdg = track.GetPdgCode();
24+
auto y = track.GetRapidity();
25+
if ((pdg == 111) || (pdg == 221) || (pdg == 331) || (pdg == 223) || (pdg == 113) || (pdg == 333)) {
26+
if ((y>-1.2) && (y<1.2)) {
27+
nMesons++;
28+
Int_t counterel = 0;
29+
Int_t counterpos = 0;
30+
int k1 = track.getFirstDaughterTrackId();
31+
int k2 = track.getLastDaughterTrackId();
32+
// k1 < k2 and no -1 for k2
33+
for (int d=k1; d <= k2; d++) {
34+
if (d>0) {
35+
auto decay = (*tracks)[d];
36+
int pdgdecay = decay.GetPdgCode();
37+
if (pdgdecay == 11) {
38+
counterel++;
39+
}
40+
if (pdgdecay == -11) {
41+
counterpos++;
42+
}
43+
}
44+
}
45+
if ((counterel>0) && (counterpos>0)) nMesonsDiElectronDecay++;
46+
}
47+
}
48+
}
49+
}
50+
51+
std::cout << "#events: " << nEvents << "\n"
52+
<< "#mesons: " << nMesons << "\n"
53+
<< "#mesons which decay semi-electronicly: " << nMesonsDiElectronDecay << "\n";
54+
if (nMesonsDiElectronDecay < nEvents) {
55+
std::cerr << "One should have at least one meson that decays into dielectrons per event.\n";
56+
return 1;
57+
}
58+
if (nMesons < nEvents) {
59+
std::cerr << "One meson per event should be produced.\n";
60+
return 1;
61+
}
62+
63+
return 0;
64+
}

0 commit comments

Comments
 (0)