CbmRoot
Loading...
Searching...
No Matches
analysis/common/analysis_tree_converter/steer/TaskFactory.cxx
Go to the documentation of this file.
1/* Copyright (C) 2023 GSI Helmholtzzentrum fuer Schwerionenforschung, Darmstadt
2 SPDX-License-Identifier: GPL-3.0-only
3 Authors: Frederic Linz [committer], Volker Friese */
4
9
10#include "TaskFactory.h"
11
12#include "CbmConverterManager.h"
13#include "CbmFsdHitsConverter.h"
15#include "CbmKF.h"
16#include "CbmL1.h"
17#include "CbmMCDataManager.h"
18#include "CbmMatchEvents.h"
19#include "CbmMatchRecoToMC.h"
22#include "CbmRecoSetupManager.h"
24#include "CbmSetup.h"
28#include "CbmTofHitsConverter.h"
31
32#include <TSystem.h>
33
34
35namespace cbm::atconverter
36{
37
38
39 // ----- Constructor ----------------------------------------------------
41 // --------------------------------------------------------------------------
42
43
44 // ----- CA tracking ----------------------------------------------------
46 {
47 assert(fRun);
48
49 // --- Tracking geometry interface
51
52 // --- Kalman Filter // Move after L1 task?
53 auto kf = new CbmKF();
54 fRun->AddTask(kf);
55
56 // --- CA Track Finder
57 auto ca = new CbmL1("CA Track Finder", 1, 3);
58 fRun->AddTask(ca);
59 }
60 // --------------------------------------------------------------------------
61
62
63 // ----- Converter Manager ----------------------------------------------
64 void TaskFactory::RegisterConverterManager(const TString& outputFile)
65 {
66 assert(fRun);
67
68 // AnalysisTree converter
69 auto* man = new CbmConverterManager();
70
71 man->SetSystem(fRun->fConfig.f_glb_system);
72 man->SetBeamMomentum(fRun->fConfig.f_glb_beamMom);
73 man->SetTimeSliceLength(fRun->fConfig.f_glb_tslength);
74 man->SetOutputName(outputFile.Data(), "rTree");
75
76 if (fRun->fConfig.f_glb_mode == ECbmRecoMode::Timeslice) { man->AddTask(new CbmMatchEvents()); }
77
78 // --- Converter for different branches
79 man->AddTask(new CbmSimEventHeaderConverter("SimEventHeader"));
80 man->AddTask(new CbmRecEventHeaderConverter("RecEventHeader"));
81 man->AddTask(new CbmSimTracksConverter("SimParticles"));
82
83 auto* ststracksconverter = new CbmStsTracksConverter("VtxTracks", "SimParticles");
84 ststracksconverter->SetIsWriteKFInfo();
85 ststracksconverter->SetIsReproduceCbmKFPF();
86 man->AddTask(ststracksconverter);
87
88 if (fRun->IsDataPresent(ECbmModuleId::kRich)) man->AddTask(new CbmRichRingsConverter("RichRings", "VtxTracks"));
89 if (fRun->IsDataPresent(ECbmModuleId::kTof)) man->AddTask(new CbmTofHitsConverter("TofHits", "VtxTracks"));
90 if (fRun->IsDataPresent(ECbmModuleId::kTrd)) man->AddTask(new CbmTrdTracksConverter("TrdTracks", "VtxTracks"));
91 if (fRun->IsDataPresent(ECbmModuleId::kPsd)) man->AddTask(new CbmPsdModulesConverter("PsdModules"));
92
93 if (fRun->IsDataPresent(ECbmModuleId::kFsd)) {
94 man->AddTask(new CbmFsdModulesConverter("FsdModules"));
95
96 CbmFsdHitsConverter* fsdHitsConverter = new CbmFsdHitsConverter("FsdHits", "VtxTracks");
97 fsdHitsConverter->SetMinChi2GtrackHit(fRun->fConfig.f_fsd_minChi2match);
98 fsdHitsConverter->SetMaxChi2GtrackHit(fRun->fConfig.f_fsd_maxChi2match);
99 man->AddTask(fsdHitsConverter);
100 }
101
102 fRun->AddTask(man);
103 }
104 // --------------------------------------------------------------------------
105
106
107 // ----- MC data manager ------------------------------------------------
108 void TaskFactory::RegisterMCDataManager(const std::vector<TString>& traFiles)
109 {
110 assert(fRun);
111 CbmMCDataManager* mcManager = new CbmMCDataManager("MCDataManager", 0);
112 for (auto traFile : traFiles) {
113 mcManager->AddFile(traFile);
114 }
115 fRun->AddTask(mcManager);
116 }
117 // --------------------------------------------------------------------------
118
119
120 // ----- STS track matching ---------------------------------------------
122 {
123 assert(fRun);
124
125 auto* matchTask = new CbmMatchRecoToMC();
126 fRun->AddTask(matchTask);
127 }
128 // --------------------------------------------------------------------------
129
130 // ----- TID PID --------------------------------------------------------
132 {
133 assert(fRun);
134 if (!fRun->IsDataPresent(ECbmModuleId::kTrd)) return;
135
136 CbmTrdSetTracksPidLike* trdPid = new CbmTrdSetTracksPidLike("TRDLikelihood", "TRDLikelihood");
137 trdPid->SetUseMCInfo(kTRUE);
138 trdPid->SetUseMomDependence(kTRUE);
139 fRun->AddTask(trdPid);
140 }
141 // --------------------------------------------------------------------------
142
143} // namespace cbm::atconverter
@ kTrd
Transition Radiation Detector.
Definition CbmDefs.h:51
@ kTof
Time-of-flight Detector.
Definition CbmDefs.h:52
@ kPsd
Projectile spectator detector.
Definition CbmDefs.h:54
@ kFsd
Forward spectator detector.
Definition CbmDefs.h:59
@ kRich
Ring-Imaging Cherenkov Detector.
Definition CbmDefs.h:49
FairTask for matching RECO data to MC.
A manager for setup representation in CBM reconstruction.
void SetMinChi2GtrackHit(Double_t chi2)
void SetMaxChi2GtrackHit(Double_t chi2)
Definition CbmKF.h:34
Definition CbmL1.h:105
Task class creating and managing CbmMCDataArray objects.
Int_t AddFile(const char *fileName)
void SetUseMomDependence(Bool_t use=kTRUE)
void SetUseMCInfo(Bool_t use=kTRUE)
static RecoSetupManager * Instance()
Instance access.
void RegisterConverterManager(const TString &outputFile)
AnalysisTree Converter Manager.
void RegisterMCDataManager(const std::vector< TString > &traFiles)
MC data manager for matching.
TODO: SZh 8.11.2022: add selection of parameterisation.
Definition CaBranch.h:14