Skip to content
Snippets Groups Projects
Commit 49233621 authored by Sergei Zharko's avatar Sergei Zharko
Browse files

BUGFIX:

1. CbmPVFinderKFGlobal: fix of track access
2. reco_mcbm.sh: default parameter path for the online binary is ${VMCWORKDIR}/parameters/online (explicit pass is not required anymore)
3. mcbm_event_reco_L1.C optional PV-finder routine
4. CbmGlobalTrack.h: TODO is added
parent 7db0ae72
No related branches found
No related tags found
1 merge request!1872BUGFIX:
Pipeline #30293 passed
...@@ -70,6 +70,7 @@ public: ...@@ -70,6 +70,7 @@ public:
void SetParamLast(const FairTrackParam* parLast) { fParamLast = *parLast; } void SetParamLast(const FairTrackParam* parLast) { fParamLast = *parLast; }
void SetParamFirst(const FairTrackParam& parFirst) { fParamFirst = parFirst; } void SetParamFirst(const FairTrackParam& parFirst) { fParamFirst = parFirst; }
void SetParamLast(const FairTrackParam& parLast) { fParamLast = parLast; } void SetParamLast(const FairTrackParam& parLast) { fParamLast = parLast; }
// TODO: SZh. 03.07.2024: Add initialization of time parameters for primary vertex!
void SetParamPrimaryVertex(const FairTrackParam* parPV) { fParamPrimaryVertex.Set(*parPV); } void SetParamPrimaryVertex(const FairTrackParam* parPV) { fParamPrimaryVertex.Set(*parPV); }
void SetPidHypo(int32_t iPid) { fPidHypo = iPid; } void SetPidHypo(int32_t iPid) { fPidHypo = iPid; }
void SetChi2(double chi2) { fChiSq = chi2; } void SetChi2(double chi2) { fChiSq = chi2; }
......
...@@ -5,7 +5,7 @@ ...@@ -5,7 +5,7 @@
// -------------------------------------------------------------------------- // --------------------------------------------------------------------------
// //
// Macro for reconstruction of mcbm data (2024) // Macro for reconstruction of mcbm data (2024)
// Combined reconstruction (event builder + cluster + hit finder + CA) for different subsystems. // Combined reconstruction (event builder + cluster + hit finder + CA + PV-finder) for different subsystems.
// //
// -------------------------------------------------------------------------- // --------------------------------------------------------------------------
...@@ -34,7 +34,8 @@ Bool_t mcbm_event_reco_L1(UInt_t uRunId = 3105, ...@@ -34,7 +34,8 @@ Bool_t mcbm_event_reco_L1(UInt_t uRunId = 3105,
Bool_t bL1 = kTRUE, Bool_t bL1 = kTRUE,
Bool_t bQA = kTRUE, Bool_t bQA = kTRUE,
Bool_t bFSD = kFALSE, Bool_t bFSD = kFALSE,
TString sInpFile = "" TString sInpFile = "",
Bool_t bPV = kFALSE
) )
{ {
/// FIXME: Re-enable clang formatting after parameters initial values setting /// FIXME: Re-enable clang formatting after parameters initial values setting
...@@ -629,6 +630,13 @@ Bool_t mcbm_event_reco_L1(UInt_t uRunId = 3105, ...@@ -629,6 +630,13 @@ Bool_t mcbm_event_reco_L1(UInt_t uRunId = 3105,
CbmL1GlobalTrackFinder* globalTrackFinder = new CbmL1GlobalTrackFinder(); CbmL1GlobalTrackFinder* globalTrackFinder = new CbmL1GlobalTrackFinder();
FairTask* globalFindTracks = new CbmL1GlobalFindTracksEvents(globalTrackFinder); FairTask* globalFindTracks = new CbmL1GlobalFindTracksEvents(globalTrackFinder);
run->AddTask(globalFindTracks); run->AddTask(globalFindTracks);
if (bPV) {
auto* pvFinder = new CbmPVFinderKFGlobal();
CbmFindPrimaryVertex* findVertex = new CbmFindPrimaryVertex(pvFinder);
findVertex->SetTrackType(ECbmDataType::kGlobalTrack);
run->AddTask(findVertex);
}
} }
// ========================================================================= // =========================================================================
// === QA === // === QA ===
......
...@@ -33,12 +33,12 @@ ...@@ -33,12 +33,12 @@
# Required options: # Required options:
# --tsa <path> Path to the input TSA file # --tsa <path> Path to the input TSA file
# NOTE: must contain a run index as a first integer in its base name. # NOTE: must contain a run index as a first integer in its base name.
# --param-online <path> Path to the online parameters
# NOTE: must be ${VMCWORKDIR}/parameters/online, but the current parameter repositories
# a diverged for the detector and online binary parameters.
# Auxiliary options: # Auxiliary options:
# -n [--nts] <N_TS> Number of timeslices to procede # -n [--nts] <N_TS> Number of timeslices to procede
# --setup, --unpack, --reco, --qa, --qa-module # --setup, --unpack, --reco, --qa, --qa-module
# --param-online <path> Path to the online parameters
# NOTE: must be ${VMCWORKDIR}/parameters/online, but the current parameter repositories
# a diverged for the detector and online binary parameters.
# #
# 3. File names involved: # 3. File names involved:
# <geo>: Input geometry file: <top_dir>/<setup>.geo.root # <geo>: Input geometry file: <top_dir>/<setup>.geo.root
...@@ -89,6 +89,7 @@ RECO_TOFtr=0 ...@@ -89,6 +89,7 @@ RECO_TOFtr=0
RECO_ALI=0 RECO_ALI=0
RECO_EvB=1 RECO_EvB=1
RECO_CA=1 RECO_CA=1
RECO_PV=1
RECO_QA=0 RECO_QA=0
...@@ -106,7 +107,7 @@ DO_UNPACK=0 ...@@ -106,7 +107,7 @@ DO_UNPACK=0
DO_RECO=0 DO_RECO=0
DO_QA=0 # Main QA Macro DO_QA=0 # Main QA Macro
DO_QA_MODULE=0 # QA Macro by Alexandru DO_QA_MODULE=0 # QA Macro by Alexandru
ONLINE_PAR= ONLINE_PAR=${VMCWORKDIR}/parameters/online
# ----- Run information # ----- Run information
RUN=-1 RUN=-1
...@@ -184,6 +185,8 @@ MACRO_QA="${VMCWORKDIR}/macro/mcbm/mcbm_qa.C" ...@@ -184,6 +185,8 @@ MACRO_QA="${VMCWORKDIR}/macro/mcbm/mcbm_qa.C"
MACRO_QA_MODULE="${VMCWORKDIR}/macro/qa/run_recoQa.C" MACRO_QA_MODULE="${VMCWORKDIR}/macro/qa/run_recoQa.C"
SETUP_NAME= SETUP_NAME=
# ----- !!! Setting selections vs.
if [[ ${RUN} -ge 2350 && ${RUN} -le 2397 ]]; then if [[ ${RUN} -ge 2350 && ${RUN} -le 2397 ]]; then
SETUP_NAME="mcbm_beam_2022_05_23_nickel" SETUP_NAME="mcbm_beam_2022_05_23_nickel"
MACRO_RECO="${VMCWORKDIR}/macro/beamtime/mcbm2022/mcbm_event_reco_L1.C" MACRO_RECO="${VMCWORKDIR}/macro/beamtime/mcbm2022/mcbm_event_reco_L1.C"
...@@ -207,12 +210,8 @@ fi ...@@ -207,12 +210,8 @@ fi
# ----- # -----
# File # File
FILE_LABEL=$(printf $(basename ${TSA_INP}) | cut -f 1 -d '.') FILE_LABEL=$(printf $(basename ${TSA_INP}) | cut -f 1 -d '.')
INP_FILE="${FILE_LABEL}" OUT_DIGI="${DATA_TOP_DIR}/${FILE_LABEL}.digi.out"
OUT_DIGI= INP_FILE="${DATA_TOP_DIR}/${FILE_LABEL}.digi.root"
if [[ ${RUN} -ge 2724 ]]; then
OUT_DIGI="${DATA_TOP_DIR}/${FILE_LABEL}.digi.out"
INP_FILE="${DATA_TOP_DIR}/${FILE_LABEL}.digi.root"
fi
# ********************* # *********************
# ** Steps execution ** # ** Steps execution **
...@@ -226,7 +225,7 @@ fi ...@@ -226,7 +225,7 @@ fi
# ----- Run unpacker # ----- Run unpacker
if [[ ${DO_UNPACK} -eq 1 ]]; then if [[ ${DO_UNPACK} -eq 1 ]]; then
# TODO: Define unpack options for different setups # TODO: Define unpack options for different setups
${ONLINE_BINARY} --steps Unpack -i ${TSA_INP} -r ${RUN} -p ${ONLINE_PAR} -O DigiTimeslice -o ${OUT_DIGI} -s STS BMON TOF TRD RICH ${ONLINE_BINARY} --steps Unpack -i ${TSA_INP} -r ${RUN} -p ${ONLINE_PAR} -O DigiTimeslice -o ${OUT_DIGI} -s STS BMON TOF TRD RICH -n ${N_TS}
root -l -b -q ${VMCWORKDIR}/macro/run/run_inspect_digi_timeslice.C"(\"${OUT_DIGI}\", \"${INP_FILE}\")" root -l -b -q ${VMCWORKDIR}/macro/run/run_inspect_digi_timeslice.C"(\"${OUT_DIGI}\", \"${INP_FILE}\")"
rm ${OUT_DIGI} rm ${OUT_DIGI}
...@@ -239,7 +238,7 @@ if [[ ${DO_RECO} -eq 1 ]]; then ...@@ -239,7 +238,7 @@ if [[ ${DO_RECO} -eq 1 ]]; then
DATA_PREF="${DATA_TOP_DIR}" DATA_PREF="${DATA_TOP_DIR}"
PARS="${RUN},${N_TS},\"${DATA_PREF}\",\"${DATA_PREF}\",${UNP_FILE_ID},${RECO_MVD},${RECO_STS},${RECO_TRD}" PARS="${RUN},${N_TS},\"${DATA_PREF}\",\"${DATA_PREF}\",${UNP_FILE_ID},${RECO_MVD},${RECO_STS},${RECO_TRD}"
PARS="${PARS},${RECO_TRD2d},${RECO_RICH},${RECO_MUCH},${RECO_TOF},${RECO_TOFtr},${RECO_PSD},${RECO_ALI},${RECO_EvB}" PARS="${PARS},${RECO_TRD2d},${RECO_RICH},${RECO_MUCH},${RECO_TOF},${RECO_TOFtr},${RECO_PSD},${RECO_ALI},${RECO_EvB}"
PARS="${PARS},${RECO_CA},${RECO_QA},${RECO_FSD},\"${INP_FILE}\"" PARS="${PARS},${RECO_CA},${RECO_QA},${RECO_FSD},\"${INP_FILE}\",${RECO_PV}"
root -b -l -q ${MACRO_RECO}"(${PARS})" root -b -l -q ${MACRO_RECO}"(${PARS})"
ln -s "${FILE_LABEL}.digi.root" "${DATA_TOP_DIR}/${FILE_LABEL}.raw.root" # TMP for QA ln -s "${FILE_LABEL}.digi.root" "${DATA_TOP_DIR}/${FILE_LABEL}.raw.root" # TMP for QA
ln -s "${FILE_LABEL}.reco.root" "${DATA_TOP_DIR}/${FILE_LABEL}.rec.root" # TMP for QA ln -s "${FILE_LABEL}.reco.root" "${DATA_TOP_DIR}/${FILE_LABEL}.rec.root" # TMP for QA
......
/* Copyright (C) 2023 GSI Helmholtzzentrum fuer Schwerionenforschung, Darmstadt /* Copyright (C) 2023-2024 GSI Helmholtzzentrum fuer Schwerionenforschung, Darmstadt
SPDX-License-Identifier: GPL-3.0-only SPDX-License-Identifier: GPL-3.0-only
Authors: Sergei Zharko [committer] */ Authors: Sergei Zharko [committer] */
...@@ -76,7 +76,7 @@ Int_t CbmPVFinderKFGlobal::FindEventVertex(CbmEvent* event, TClonesArray* tracks ...@@ -76,7 +76,7 @@ Int_t CbmPVFinderKFGlobal::FindEventVertex(CbmEvent* event, TClonesArray* tracks
CbmVertex* vertex = event->GetVertex(); CbmVertex* vertex = event->GetVertex();
// Copy input tracks to KF tracks // Copy input tracks to KF tracks
Int_t nTracks = event->GetNofData(ECbmDataType::kStsTrack); Int_t nTracks = event->GetNofData(ECbmDataType::kGlobalTrack);
if (nTracks <= 0) return 0; if (nTracks <= 0) return 0;
std::vector<CbmKFTrack> vKFTracks(nTracks); std::vector<CbmKFTrack> vKFTracks(nTracks);
...@@ -95,7 +95,7 @@ Int_t CbmPVFinderKFGlobal::FindEventVertex(CbmEvent* event, TClonesArray* tracks ...@@ -95,7 +95,7 @@ Int_t CbmPVFinderKFGlobal::FindEventVertex(CbmEvent* event, TClonesArray* tracks
} }
if (globalTrack->GetChi2() < 0.) continue; if (globalTrack->GetChi2() < 0.) continue;
CbmKFTrack& kfTrack = vKFTracks[iTrkEvent]; CbmKFTrack& kfTrack = vKFTracks[iT];
kfTrack.SetGlobalTrack(*globalTrack); kfTrack.SetGlobalTrack(*globalTrack);
if (!isfinite(kfTrack.GetTrack()[0]) || !isfinite(kfTrack.GetCovMatrix()[0])) continue; if (!isfinite(kfTrack.GetTrack()[0]) || !isfinite(kfTrack.GetCovMatrix()[0])) continue;
finder.AddTrack(&kfTrack); finder.AddTrack(&kfTrack);
...@@ -112,7 +112,8 @@ Int_t CbmPVFinderKFGlobal::FindEventVertex(CbmEvent* event, TClonesArray* tracks ...@@ -112,7 +112,8 @@ Int_t CbmPVFinderKFGlobal::FindEventVertex(CbmEvent* event, TClonesArray* tracks
for (int iT = 0; iT < nTracks; ++iT) { for (int iT = 0; iT < nTracks; ++iT) {
auto iTrkEvent = event->GetIndex(ECbmDataType::kGlobalTrack, iT); auto iTrkEvent = event->GetIndex(ECbmDataType::kGlobalTrack, iT);
auto* globalTrack = dynamic_cast<CbmGlobalTrack*>(tracks->At(iTrkEvent)); auto* globalTrack = dynamic_cast<CbmGlobalTrack*>(tracks->At(iTrkEvent));
auto& kfTrack = vKFTracks[iTrkEvent]; auto& kfTrack = vKFTracks[iT];
// TODO: SZh. 03.07.2024: Provide time initialization (to CbmTrackParam)
kfTrack.Fit2Vertex(kfVertex); kfTrack.Fit2Vertex(kfVertex);
FairTrackParam par; FairTrackParam par;
kfTrack.GetTrackParam(par); kfTrack.GetTrackParam(par);
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment