diff --git a/core/data/global/CbmGlobalTrack.h b/core/data/global/CbmGlobalTrack.h index aeca221ec867df3543bf8ac873961448add1e371..478b8126f8a84fe1cbbf998a663041c66a9efcfc 100644 --- a/core/data/global/CbmGlobalTrack.h +++ b/core/data/global/CbmGlobalTrack.h @@ -70,6 +70,7 @@ public: void SetParamLast(const FairTrackParam* parLast) { fParamLast = *parLast; } void SetParamFirst(const FairTrackParam& parFirst) { fParamFirst = parFirst; } 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 SetPidHypo(int32_t iPid) { fPidHypo = iPid; } void SetChi2(double chi2) { fChiSq = chi2; } diff --git a/macro/beamtime/mcbm2024/mcbm_event_reco_L1.C b/macro/beamtime/mcbm2024/mcbm_event_reco_L1.C index 43061f03c5d8024d49319442b5bdab182be03b44..f0b54c19a2831cc657bda5eb16752eb846271c9a 100644 --- a/macro/beamtime/mcbm2024/mcbm_event_reco_L1.C +++ b/macro/beamtime/mcbm2024/mcbm_event_reco_L1.C @@ -5,7 +5,7 @@ // -------------------------------------------------------------------------- // // 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, Bool_t bL1 = kTRUE, Bool_t bQA = kTRUE, Bool_t bFSD = kFALSE, - TString sInpFile = "" + TString sInpFile = "", + Bool_t bPV = kFALSE ) { /// FIXME: Re-enable clang formatting after parameters initial values setting @@ -629,6 +630,13 @@ Bool_t mcbm_event_reco_L1(UInt_t uRunId = 3105, CbmL1GlobalTrackFinder* globalTrackFinder = new CbmL1GlobalTrackFinder(); FairTask* globalFindTracks = new CbmL1GlobalFindTracksEvents(globalTrackFinder); run->AddTask(globalFindTracks); + + if (bPV) { + auto* pvFinder = new CbmPVFinderKFGlobal(); + CbmFindPrimaryVertex* findVertex = new CbmFindPrimaryVertex(pvFinder); + findVertex->SetTrackType(ECbmDataType::kGlobalTrack); + run->AddTask(findVertex); + } } // ========================================================================= // === QA === diff --git a/macro/beamtime/mcbm2024/reco_mcbm.sh b/macro/beamtime/mcbm2024/reco_mcbm.sh index 7fc3c80ddd9670e1cc8b5721d2eeb2733f2ec2b2..3c9aa11653bd3bf9c565f5395e119857ca138222 100755 --- a/macro/beamtime/mcbm2024/reco_mcbm.sh +++ b/macro/beamtime/mcbm2024/reco_mcbm.sh @@ -33,12 +33,12 @@ # Required options: # --tsa <path> Path to the input TSA file # 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: # -n [--nts] <N_TS> Number of timeslices to procede # --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: # <geo>: Input geometry file: <top_dir>/<setup>.geo.root @@ -89,6 +89,7 @@ RECO_TOFtr=0 RECO_ALI=0 RECO_EvB=1 RECO_CA=1 +RECO_PV=1 RECO_QA=0 @@ -106,7 +107,7 @@ DO_UNPACK=0 DO_RECO=0 DO_QA=0 # Main QA Macro DO_QA_MODULE=0 # QA Macro by Alexandru -ONLINE_PAR= +ONLINE_PAR=${VMCWORKDIR}/parameters/online # ----- Run information RUN=-1 @@ -184,6 +185,8 @@ MACRO_QA="${VMCWORKDIR}/macro/mcbm/mcbm_qa.C" MACRO_QA_MODULE="${VMCWORKDIR}/macro/qa/run_recoQa.C" SETUP_NAME= +# ----- !!! Setting selections vs. + if [[ ${RUN} -ge 2350 && ${RUN} -le 2397 ]]; then SETUP_NAME="mcbm_beam_2022_05_23_nickel" MACRO_RECO="${VMCWORKDIR}/macro/beamtime/mcbm2022/mcbm_event_reco_L1.C" @@ -207,12 +210,8 @@ fi # ----- # File FILE_LABEL=$(printf $(basename ${TSA_INP}) | cut -f 1 -d '.') -INP_FILE="${FILE_LABEL}" -OUT_DIGI= -if [[ ${RUN} -ge 2724 ]]; then - OUT_DIGI="${DATA_TOP_DIR}/${FILE_LABEL}.digi.out" - INP_FILE="${DATA_TOP_DIR}/${FILE_LABEL}.digi.root" -fi +OUT_DIGI="${DATA_TOP_DIR}/${FILE_LABEL}.digi.out" +INP_FILE="${DATA_TOP_DIR}/${FILE_LABEL}.digi.root" # ********************* # ** Steps execution ** @@ -226,7 +225,7 @@ fi # ----- Run unpacker if [[ ${DO_UNPACK} -eq 1 ]]; then # 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}\")" rm ${OUT_DIGI} @@ -239,7 +238,7 @@ if [[ ${DO_RECO} -eq 1 ]]; then DATA_PREF="${DATA_TOP_DIR}" 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_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})" 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 diff --git a/reco/KF/Interface/CbmPVFinderKFGlobal.cxx b/reco/KF/Interface/CbmPVFinderKFGlobal.cxx index c707f04dc6d54ae183646e8844fe2bffa4daa7e9..8bc34107f5531de0b85dba3f9a872cebcb371ad5 100644 --- a/reco/KF/Interface/CbmPVFinderKFGlobal.cxx +++ b/reco/KF/Interface/CbmPVFinderKFGlobal.cxx @@ -1,4 +1,4 @@ -/* Copyright (C) 2023 GSI Helmholtzzentrum fuer Schwerionenforschung, Darmstadt +/* Copyright (C) 2023-2024 GSI Helmholtzzentrum fuer Schwerionenforschung, Darmstadt SPDX-License-Identifier: GPL-3.0-only Authors: Sergei Zharko [committer] */ @@ -76,7 +76,7 @@ Int_t CbmPVFinderKFGlobal::FindEventVertex(CbmEvent* event, TClonesArray* tracks CbmVertex* vertex = event->GetVertex(); // 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; std::vector<CbmKFTrack> vKFTracks(nTracks); @@ -95,7 +95,7 @@ Int_t CbmPVFinderKFGlobal::FindEventVertex(CbmEvent* event, TClonesArray* tracks } if (globalTrack->GetChi2() < 0.) continue; - CbmKFTrack& kfTrack = vKFTracks[iTrkEvent]; + CbmKFTrack& kfTrack = vKFTracks[iT]; kfTrack.SetGlobalTrack(*globalTrack); if (!isfinite(kfTrack.GetTrack()[0]) || !isfinite(kfTrack.GetCovMatrix()[0])) continue; finder.AddTrack(&kfTrack); @@ -112,7 +112,8 @@ Int_t CbmPVFinderKFGlobal::FindEventVertex(CbmEvent* event, TClonesArray* tracks for (int iT = 0; iT < nTracks; ++iT) { auto iTrkEvent = event->GetIndex(ECbmDataType::kGlobalTrack, iT); 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); FairTrackParam par; kfTrack.GetTrackParam(par);