1414
1515#include " Framework/AnalysisDataModel.h"
1616#include " Framework/AnalysisTask.h"
17- #include " Analysis/MC.h"
1817#include " Framework/HistogramRegistry.h"
19-
20- #include < cmath>
21-
18+ #include " Analysis/MC.h"
2219#include " Analysis/TrackSelectionTables.h"
20+ #include " Analysis/TrackSelection.h"
21+ #include " Analysis/TrackSelectionDefaults.h"
2322
2423using namespace o2 ;
2524using namespace o2 ::framework;
@@ -28,7 +27,8 @@ using namespace o2::framework::expressions;
2827void customize (std::vector<o2::framework::ConfigParamSpec>& workflowOptions)
2928{
3029 std::vector<ConfigParamSpec> options{
31- {" mc" , VariantType::Bool, false , {" Add MC QA histograms." }}};
30+ {" mc" , VariantType::Bool, false , {" Add MC QA histograms." }},
31+ {" add-cut-qa" , VariantType::Int, 0 , {" Add track cut QA histograms." }}};
3232 std::swap (workflowOptions, options);
3333}
3434#include " Framework/runDataProcessing.h"
@@ -144,6 +144,28 @@ struct TrackQATask {
144144 }
145145};
146146
147+ struct TrackCutQATask {
148+ HistogramRegistry cuts{" Cuts" , true , {}, OutputObjHandlingPolicy::QAObject};
149+ TrackSelection selectedTracks = getGlobalTrackSelection();
150+ static constexpr int ncuts = static_cast <int >(TrackSelection::TrackCuts::kNCuts );
151+ void init (InitContext&)
152+ {
153+ cuts.add (" single_cut" , " ;Cut;Tracks" , kTH1D , {{ncuts, 0 , ncuts}});
154+ for (int i = 0 ; i < ncuts; i++) {
155+ cuts.get <TH1 >(" single_cut" )->GetXaxis ()->SetBinLabel (1 + i, TrackSelection::mCutNames [i].data ());
156+ }
157+ }
158+
159+ void process (soa::Join<aod::FullTracks, aod::TracksExtended>::iterator const & track)
160+ {
161+ for (int i = 0 ; i < ncuts; i++) {
162+ if (selectedTracks.IsSelected (track, static_cast <TrackSelection::TrackCuts>(i))) {
163+ cuts.fill (" single_cut" , i);
164+ }
165+ }
166+ }
167+ };
168+
147169// ****************************************************************************************
148170/* *
149171 * QA task including MC truth info.
@@ -169,10 +191,14 @@ struct TrackQATaskMC {
169191// ****************************************************************************************
170192WorkflowSpec defineDataProcessing (ConfigContext const & cfgc)
171193{
172- bool isMC = cfgc.options ().get <bool >(" mc" );
194+ const bool isMC = cfgc.options ().get <bool >(" mc" );
195+ const int add_cut_qa = cfgc.options ().get <int >(" add-cut-qa" );
173196
174197 WorkflowSpec workflow;
175198 workflow.push_back (adaptAnalysisTask<TrackQATask>(" track-qa-histograms" ));
199+ if (add_cut_qa) {
200+ workflow.push_back (adaptAnalysisTask<TrackCutQATask>(" track-cut-qa-histograms" ));
201+ }
176202 if (isMC) {
177203 workflow.push_back (adaptAnalysisTask<TrackQATaskMC>(" track-qa-histograms-mc" ));
178204 }
0 commit comments