Skip to content

Commit f7f9b76

Browse files
author
David Dobrigkeit Chinellato
committed
[PWGLF/Common] Add test version of propagation service task
1 parent 80c80ac commit f7f9b76

File tree

4 files changed

+2688
-1
lines changed

4 files changed

+2688
-1
lines changed

Common/TableProducer/trackPropagationTester.cxx

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -105,4 +105,4 @@ WorkflowSpec defineDataProcessing(ConfigContext const& cfgc)
105105
{
106106
WorkflowSpec workflow{adaptAnalysisTask<TrackPropagationTester>(cfgc)};
107107
return workflow;
108-
}
108+
}

PWGLF/TableProducer/Strangeness/CMakeLists.txt

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -166,3 +166,8 @@ o2physics_add_dpl_workflow(lambdaspincorrelation
166166
SOURCES lambdaspincorrelation.cxx
167167
PUBLIC_LINK_LIBRARIES O2Physics::AnalysisCore
168168
COMPONENT_NAME Analysis)
169+
170+
o2physics_add_dpl_workflow(propagationservice
171+
SOURCES propagationService.cxx
172+
PUBLIC_LINK_LIBRARIES O2Physics::AnalysisCore O2::DCAFitter KFParticle::KFParticle O2Physics::TPCDriftManager
173+
COMPONENT_NAME Analysis)
Lines changed: 146 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,146 @@
1+
// Copyright 2019-2020 CERN and copyright holders of ALICE O2.
2+
// See https://alice-o2.web.cern.ch/copyright for details of the copyright holders.
3+
// All rights not expressly granted are reserved.
4+
//
5+
// This software is distributed under the terms of the GNU General Public
6+
// License v3 (GPL Version 3), copied verbatim in the file "COPYING".
7+
//
8+
// In applying this license CERN does not waive the privileges and immunities
9+
// granted to it by virtue of its status as an Intergovernmental Organization
10+
// or submit itself to any jurisdiction.
11+
12+
/// \file propagationService.cxx
13+
/// \brief
14+
/// \author ALICE
15+
16+
//===============================================================
17+
//
18+
// Merged track propagation + strangeness building task
19+
//
20+
// Provides a common task to deal with track propagation and
21+
// strangeness building in a single DPL device that is particularly
22+
// adequate for pipelining.
23+
//
24+
// Currently meant for testing and performance evaluation
25+
//
26+
//===============================================================
27+
28+
#include "Framework/AnalysisDataModel.h"
29+
#include "Framework/AnalysisTask.h"
30+
#include "Framework/runDataProcessing.h"
31+
#include "Framework/RunningWorkflowInfo.h"
32+
#include "Common/DataModel/TrackSelectionTables.h"
33+
#include "Common/Core/trackUtilities.h"
34+
#include "ReconstructionDataFormats/DCA.h"
35+
#include "DetectorsBase/Propagator.h"
36+
#include "DetectorsBase/GeometryManager.h"
37+
#include "CommonUtils/NameConf.h"
38+
#include "CCDB/CcdbApi.h"
39+
#include "DataFormatsParameters/GRPMagField.h"
40+
#include "CCDB/BasicCCDBManager.h"
41+
#include "Framework/HistogramRegistry.h"
42+
#include "DataFormatsCalibration/MeanVertexObject.h"
43+
#include "CommonConstants/GeomConstants.h"
44+
#include "PWGLF/Utils/strangenessBuilderModule.h"
45+
#include "Common/Tools/TrackPropagationModule.h"
46+
#include "Common/Tools/StandardCCDBLoader.h"
47+
48+
using namespace o2;
49+
using namespace o2::framework;
50+
// using namespace o2::framework::expressions;
51+
52+
// use parameters + cov mat non-propagated, aux info + (extension propagated)
53+
using FullTracksExt = soa::Join<aod::Tracks, aod::TracksExtra, aod::TracksCov>;
54+
using FullTracksExtIU = soa::Join<aod::TracksIU, aod::TracksExtra, aod::TracksCovIU>;
55+
using FullTracksExtWithPID = soa::Join<aod::Tracks, aod::TracksExtra, aod::TracksCov, aod::pidTPCFullEl, aod::pidTPCFullPi, aod::pidTPCFullPr, aod::pidTPCFullKa, aod::pidTPCFullHe>;
56+
using FullTracksExtIUWithPID = soa::Join<aod::TracksIU, aod::TracksExtra, aod::TracksCovIU, aod::pidTPCFullEl, aod::pidTPCFullPi, aod::pidTPCFullPr, aod::pidTPCFullKa, aod::pidTPCFullHe>;
57+
using FullTracksExtLabeled = soa::Join<aod::Tracks, aod::TracksExtra, aod::TracksCov, aod::McTrackLabels>;
58+
using FullTracksExtLabeledIU = soa::Join<aod::TracksIU, aod::TracksExtra, aod::TracksCovIU, aod::McTrackLabels>;
59+
using FullTracksExtLabeledWithPID = soa::Join<aod::Tracks, aod::TracksExtra, aod::TracksCov, aod::pidTPCFullEl, aod::pidTPCFullPi, aod::pidTPCFullPr, aod::pidTPCFullKa, aod::pidTPCFullHe, aod::McTrackLabels>;
60+
using FullTracksExtLabeledIUWithPID = soa::Join<aod::TracksIU, aod::TracksExtra, aod::TracksCovIU, aod::pidTPCFullEl, aod::pidTPCFullPi, aod::pidTPCFullPr, aod::pidTPCFullKa, aod::pidTPCFullHe, aod::McTrackLabels>;
61+
using TracksWithExtra = soa::Join<aod::Tracks, aod::TracksExtra>;
62+
63+
// For dE/dx association in pre-selection
64+
using TracksExtraWithPID = soa::Join<aod::TracksExtra, aod::pidTPCFullEl, aod::pidTPCFullPi, aod::pidTPCFullPr, aod::pidTPCFullKa, aod::pidTPCFullHe>;
65+
66+
struct propagationService {
67+
// CCDB boilerplate declarations
68+
o2::framework::Configurable<std::string> ccdburl{"ccdburl", "http://alice-ccdb.cern.ch", "url of the ccdb repository"};
69+
Service<o2::ccdb::BasicCCDBManager> ccdb;
70+
71+
// propagation stuff
72+
o2::common::StandardCCDBLoaderConfigurables standardCCDBLoaderConfigurables;
73+
o2::common::StandardCCDBLoader ccdbLoader;
74+
75+
// boilerplate: strangeness builder stuff
76+
o2::pwglf::strangenessbuilder::products products;
77+
o2::pwglf::strangenessbuilder::coreConfigurables baseOpts;
78+
o2::pwglf::strangenessbuilder::v0Configurables v0BuilderOpts;
79+
o2::pwglf::strangenessbuilder::cascadeConfigurables cascadeBuilderOpts;
80+
o2::pwglf::strangenessbuilder::preSelectOpts preSelectOpts;
81+
o2::pwglf::strangenessbuilder::BuilderModule strangenessBuilderModule;
82+
83+
// track propagation
84+
o2::common::TrackPropagationProducts trackPropagationProducts;
85+
o2::common::TrackPropagationConfigurables trackPropagationConfigurables;
86+
o2::common::TrackPropagationModule trackPropagation;
87+
88+
// registry
89+
HistogramRegistry histos{"histos"};
90+
91+
void init(o2::framework::InitContext& initContext)
92+
{
93+
// CCDB boilerplate init
94+
ccdb->setCaching(true);
95+
ccdb->setLocalObjectValidityChecking();
96+
ccdb->setURL(ccdburl.value);
97+
98+
// task-specific
99+
trackPropagation.init(trackPropagationConfigurables, histos, initContext);
100+
strangenessBuilderModule.init(baseOpts, v0BuilderOpts, cascadeBuilderOpts, preSelectOpts, histos, initContext);
101+
}
102+
103+
void processRealData(soa::Join<aod::Collisions, aod::EvSels> const& collisions, aod::V0s const& v0s, aod::Cascades const& cascades, aod::TrackedCascades const& trackedCascades, FullTracksExtIU const& tracks, aod::BCsWithTimestamps const& bcs)
104+
{
105+
ccdbLoader.initCCDBfromBCs(standardCCDBLoaderConfigurables, ccdb, bcs);
106+
trackPropagation.fillTrackTables<false>(trackPropagationConfigurables, ccdbLoader, collisions, tracks, trackPropagationProducts, histos);
107+
strangenessBuilderModule.dataProcess(ccdb, histos, collisions, static_cast<TObject*>(nullptr), v0s, cascades, trackedCascades, tracks, bcs, static_cast<TObject*>(nullptr), products);
108+
}
109+
110+
void processMonteCarlo(soa::Join<aod::Collisions, aod::EvSels, aod::McCollisionLabels> const& collisions, aod::McCollisions const& mccollisions, aod::V0s const& v0s, aod::Cascades const& cascades, aod::TrackedCascades const& trackedCascades, FullTracksExtLabeledIU const& tracks, aod::BCsWithTimestamps const& bcs, aod::McParticles const& mcParticles)
111+
{
112+
ccdbLoader.initCCDBfromBCs(standardCCDBLoaderConfigurables, ccdb, bcs);
113+
trackPropagation.fillTrackTables<true>(trackPropagationConfigurables, ccdbLoader, collisions, tracks, trackPropagationProducts, histos);
114+
strangenessBuilderModule.dataProcess(ccdb, histos, collisions, mccollisions, v0s, cascades, trackedCascades, tracks, bcs, mcParticles, products);
115+
}
116+
117+
void processRealDataWithPID(soa::Join<aod::Collisions, aod::EvSels> const& collisions, aod::V0s const& v0s, aod::Cascades const& cascades, aod::TrackedCascades const& trackedCascades, FullTracksExtIUWithPID const& tracks, aod::BCsWithTimestamps const& bcs)
118+
{
119+
ccdbLoader.initCCDBfromBCs(standardCCDBLoaderConfigurables, ccdb, bcs);
120+
trackPropagation.fillTrackTables<false>(trackPropagationConfigurables, ccdbLoader, collisions, tracks, trackPropagationProducts, histos);
121+
strangenessBuilderModule.dataProcess(ccdb, histos, collisions, static_cast<TObject*>(nullptr), v0s, cascades, trackedCascades, tracks, bcs, static_cast<TObject*>(nullptr), products);
122+
}
123+
124+
void processMonteCarloWithPID(soa::Join<aod::Collisions, aod::EvSels, aod::McCollisionLabels> const& collisions, aod::McCollisions const& mccollisions, aod::V0s const& v0s, aod::Cascades const& cascades, aod::TrackedCascades const& trackedCascades, FullTracksExtLabeledIUWithPID const& tracks, aod::BCsWithTimestamps const& bcs, aod::McParticles const& mcParticles)
125+
{
126+
ccdbLoader.initCCDBfromBCs(standardCCDBLoaderConfigurables, ccdb, bcs);
127+
trackPropagation.fillTrackTables<true>(trackPropagationConfigurables, ccdbLoader, collisions, tracks, trackPropagationProducts, histos);
128+
strangenessBuilderModule.dataProcess(ccdb, histos, collisions, mccollisions, v0s, cascades, trackedCascades, tracks, bcs, mcParticles, products);
129+
}
130+
131+
PROCESS_SWITCH(propagationService, processRealData, "process real data", true);
132+
PROCESS_SWITCH(propagationService, processMonteCarlo, "process monte carlo", false);
133+
PROCESS_SWITCH(propagationService, processRealDataWithPID, "process real data", false);
134+
PROCESS_SWITCH(propagationService, processMonteCarloWithPID, "process monte carlo", false);
135+
};
136+
137+
//****************************************************************************************
138+
/**
139+
* Workflow definition.
140+
*/
141+
//****************************************************************************************
142+
WorkflowSpec defineDataProcessing(ConfigContext const& cfgc)
143+
{
144+
WorkflowSpec workflow{adaptAnalysisTask<propagationService>(cfgc)};
145+
return workflow;
146+
}

0 commit comments

Comments
 (0)