Skip to content

Commit be5a2bb

Browse files
authored
Add MCH and MID TrackerParam to configs of AOD metadata (#15651)
1 parent 684cad7 commit be5a2bb

2 files changed

Lines changed: 45 additions & 0 deletions

File tree

Detectors/MUON/MCH/Tracking/src/TrackFinderSpec.cxx

Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -25,12 +25,15 @@
2525
#include <unordered_map>
2626

2727
#include <gsl/span>
28+
#include <TMap.h>
29+
#include <TObjString.h>
2830

2931
#include "Framework/CallbackService.h"
3032
#include "Framework/ConcreteDataMatcher.h"
3133
#include "Framework/ConfigParamRegistry.h"
3234
#include "Framework/ControlService.h"
3335
#include "Framework/DataProcessorSpec.h"
36+
#include "Framework/DeviceSpec.h"
3437
#include "Framework/Lifetime.h"
3538
#include "Framework/Output.h"
3639
#include "Framework/Task.h"
@@ -47,6 +50,7 @@
4750
#include "DetectorsBase/Propagator.h"
4851
#include "MCHBase/Error.h"
4952
#include "MCHBase/ErrorMap.h"
53+
#include "MCHBase/TrackerParam.h"
5054
#include "MCHTracking/TrackParam.h"
5155
#include "MCHTracking/Track.h"
5256
#include "MCHTracking/TrackFinder.h"
@@ -130,6 +134,7 @@ class TrackFinderTask
130134
if (mCCDBRequest) {
131135
base::GRPGeomHelper::instance().checkUpdates(pc);
132136
}
137+
storeConfigs(pc);
133138

134139
uint32_t firstTForbit = pc.services().get<o2::framework::TimingInfo>().firstTForbit;
135140

@@ -268,6 +273,23 @@ class TrackFinderTask
268273
}
269274
}
270275

276+
//_________________________________________________________________________________________________
277+
void storeConfigs(ProcessingContext& pc)
278+
{
279+
static bool first = true;
280+
if (first) {
281+
first = false;
282+
if (pc.services().get<const o2::framework::DeviceSpec>().inputTimesliceId == 0) {
283+
const auto& conf = TrackerParam::Instance();
284+
o2::conf::ConfigurableParam::write(o2::base::NameConf::getConfigOutputFileName(pc.services().get<const o2::framework::DeviceSpec>().name, conf.getName()), conf.getName());
285+
TMap md;
286+
md.SetOwnerKeyValue();
287+
md.Add(new TObjString(conf.getName().c_str()), new TObjString(o2::conf::ConfigurableParam::asJSON(conf.getName()).c_str()));
288+
pc.outputs().snapshot(Output{"META", "MCHTRACKER", 0}, md);
289+
}
290+
}
291+
}
292+
271293
bool mComputeTime = false; ///< compute the track time from the associated digits
272294
bool mDigits = false; ///< send to associated digits
273295
std::shared_ptr<base::GRPGeomRequest> mCCDBRequest{}; ///< pointer to the CCDB requests
@@ -296,6 +318,7 @@ o2::framework::DataProcessorSpec getTrackFinderSpec(const char* specName, bool c
296318
outputSpecs.emplace_back(OutputSpec{{"trackdigits"}, "MCH", "TRACKDIGITS", 0, Lifetime::Timeframe});
297319
}
298320
outputSpecs.emplace_back(OutputSpec{{"trackerrors"}, "MCH", "TRACKERRORS", 0, Lifetime::Timeframe});
321+
outputSpecs.emplace_back("META", "MCHTRACKER", 0, Lifetime::Sporadic);
299322

300323
auto ccdbRequest = disableCCDBMagField ? nullptr
301324
: std::make_shared<base::GRPGeomRequest>(false, // orbitResetTime

Detectors/MUON/MID/Workflow/src/TrackerSpec.cxx

Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -17,20 +17,24 @@
1717
#include "MIDWorkflow/TrackerSpec.h"
1818

1919
#include <chrono>
20+
#include <TMap.h>
21+
#include <TObjString.h>
2022
#include "Framework/DataRefUtils.h"
2123
#include "Framework/CCDBParamSpec.h"
2224
#include "Framework/ConfigParamRegistry.h"
2325
#include "Framework/ControlService.h"
2426
#include "Framework/Logger.h"
2527
#include "Framework/Output.h"
2628
#include "Framework/Task.h"
29+
#include "Framework/DeviceSpec.h"
2730
#include "DataFormatsMID/Cluster.h"
2831
#include "DataFormatsMID/ROFRecord.h"
2932
#include "DataFormatsMID/Track.h"
3033
#include "DataFormatsMID/MCClusterLabel.h"
3134
#include "DetectorsBase/GeometryManager.h"
3235
#include "MIDTracking/HitMapBuilder.h"
3336
#include "MIDTracking/Tracker.h"
37+
#include "MIDTracking/TrackerParam.h"
3438
#include "MIDSimulation/TrackLabeler.h"
3539
#include "CommonUtils/NameConf.h"
3640
#include "DetectorsBase/GRPGeomHelper.h"
@@ -63,6 +67,7 @@ class TrackerDeviceDPL
6367
{
6468
auto tStart = std::chrono::high_resolution_clock::now();
6569
updateTimeDependentParams(pc);
70+
storeConfigs(pc);
6671

6772
auto clusters = pc.inputs().get<gsl::span<Cluster>>("mid_clusters");
6873

@@ -142,6 +147,22 @@ class TrackerDeviceDPL
142147
pc.inputs().get<std::vector<ColumnData>*>("mid_rejectlist_forTracks");
143148
}
144149

150+
void storeConfigs(of::ProcessingContext& pc)
151+
{
152+
static bool first = true;
153+
if (first) {
154+
first = false;
155+
if (pc.services().get<const of::DeviceSpec>().inputTimesliceId == 0) {
156+
const auto& conf = TrackerParam::Instance();
157+
o2::conf::ConfigurableParam::write(o2::base::NameConf::getConfigOutputFileName(pc.services().get<const o2::framework::DeviceSpec>().name, conf.getName()), conf.getName());
158+
TMap md;
159+
md.SetOwnerKeyValue();
160+
md.Add(new TObjString(conf.getName().c_str()), new TObjString(o2::conf::ConfigurableParam::asJSON(conf.getName()).c_str()));
161+
pc.outputs().snapshot(of::Output{"META", "MIDTRACKER", 0}, md);
162+
}
163+
}
164+
}
165+
145166
bool mIsMC = false;
146167
bool mKeepAll = false;
147168
bool mCheckMasked = false;
@@ -184,6 +205,7 @@ framework::DataProcessorSpec getTrackerSpec(bool isMC, bool checkMasked)
184205
outputSpecs.emplace_back(of::OutputSpec{header::gDataOriginMID, "TRACKLABELS"});
185206
outputSpecs.emplace_back(of::OutputSpec{header::gDataOriginMID, "TRCLUSLABELS"});
186207
}
208+
outputSpecs.emplace_back("META", "MIDTRACKER", 0, of::Lifetime::Sporadic);
187209

188210
return of::DataProcessorSpec{
189211
"MIDTracker",

0 commit comments

Comments
 (0)