Skip to content

Commit d115168

Browse files
ddobrigkalibuild
andauthored
[PWGLF] add Zorro to h-str correlations (#9083)
Co-authored-by: ALICE Builder <alibuild@users.noreply.github.com>
1 parent 629b5e1 commit d115168

File tree

4 files changed

+156
-85
lines changed

4 files changed

+156
-85
lines changed

PWGLF/TableProducer/Strangeness/CMakeLists.txt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -53,7 +53,7 @@ o2physics_add_dpl_workflow(cascqaanalysis
5353

5454
o2physics_add_dpl_workflow(hstrangecorrelationfilter
5555
SOURCES hStrangeCorrelationFilter.cxx
56-
PUBLIC_LINK_LIBRARIES O2::DCAFitter O2Physics::AnalysisCore
56+
PUBLIC_LINK_LIBRARIES O2::DCAFitter O2Physics::AnalysisCore O2Physics::EventFilteringUtils
5757
COMPONENT_NAME Analysis)
5858

5959
o2physics_add_dpl_workflow(double-casc-tree-creator

PWGLF/TableProducer/Strangeness/hStrangeCorrelationFilter.cxx

Lines changed: 83 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -27,8 +27,12 @@
2727
#include "Framework/ASoAHelpers.h"
2828
#include "Common/DataModel/Multiplicity.h"
2929
#include "Common/DataModel/Centrality.h"
30+
#include "CCDB/BasicCCDBManager.h"
3031
#include "TF1.h"
3132

33+
#include "EventFiltering/Zorro.h"
34+
#include "EventFiltering/ZorroSummary.h"
35+
3236
using namespace o2;
3337
using namespace o2::framework;
3438
using namespace o2::framework::expressions;
@@ -37,6 +41,8 @@ using namespace o2::framework::expressions;
3741
#define bitcheck(var, nbit) ((var) & (1 << (nbit)))
3842

3943
struct hstrangecorrelationfilter {
44+
Service<o2::ccdb::BasicCCDBManager> ccdb;
45+
4046
HistogramRegistry histos{"Histos", {}, OutputObjHandlingPolicy::AnalysisObject};
4147

4248
// Operational
@@ -45,6 +51,9 @@ struct hstrangecorrelationfilter {
4551
Configurable<float> strangedEdxNSigma{"strangedEdxNSigma", 4, "Nsigmas for strange decay daughters"};
4652
Configurable<float> strangedEdxNSigmaTight{"strangedEdxNSigmaTight", 3, "Nsigmas for strange decay daughters"};
4753

54+
// event filtering
55+
Configurable<std::string> zorroMask{"zorroMask", "", "zorro trigger class to select on (empty: none)"};
56+
4857
// Trigger particle selections in phase space
4958
Configurable<float> triggerEtaMin{"triggerEtaCutMin", -0.8, "triggeretamin"};
5059
Configurable<float> triggerEtaMax{"triggerEtaCutMax", 0.8, "triggeretamax"};
@@ -125,10 +134,6 @@ struct hstrangecorrelationfilter {
125134
Filter preFilterCascade =
126135
nabs(aod::cascdata::dcapostopv) > dcaPostopv&& nabs(aod::cascdata::dcanegtopv) > dcaNegtopv&& nabs(aod::cascdata::dcabachtopv) > cascadesetting_dcabachtopv&& aod::cascdata::dcaV0daughters < dcaV0dau&& aod::cascdata::dcacascdaughters < cascadesetting_dcacascdau;
127136

128-
// histogram defined with HistogramRegistry
129-
HistogramRegistry registry{
130-
"registry",
131-
{}};
132137
using V0LinkedTagged = soa::Join<aod::V0sLinked, aod::V0Tags>;
133138
using CascadesLinkedTagged = soa::Join<aod::CascadesLinked, aod::CascTags>;
134139
using DauTracks = soa::Join<aod::Tracks, aod::TracksExtra, aod::pidTPCFullPi, aod::pidTPCFullKa, aod::pidTPCFullPr, aod::TracksDCA>;
@@ -152,8 +157,15 @@ struct hstrangecorrelationfilter {
152157
TF1* fOmegaMean = new TF1("fomegaMean", "[0]+[1]*x+[2]*TMath::Exp(-[3]*x)");
153158
TF1* fOmegaWidth = new TF1("fomegaWidth", "[0]+[1]*x+[2]*TMath::Exp(-[3]*x)");
154159

160+
Zorro zorro;
161+
OutputObj<ZorroSummary> zorroSummary{"zorroSummary"};
162+
int mRunNumber;
163+
155164
void init(InitContext const&)
156165
{
166+
zorroSummary.setObject(zorro.getZorroSummary());
167+
mRunNumber = -1;
168+
157169
fK0Mean->SetParameters(massParsK0Mean->at(0), massParsK0Mean->at(1), massParsK0Mean->at(2), massParsK0Mean->at(3));
158170
fK0Width->SetParameters(massParsK0Width->at(0), massParsK0Width->at(1), massParsK0Width->at(2), massParsK0Width->at(3));
159171
fLambdaMean->SetParameters(massParsLambdaMean->at(0), massParsLambdaMean->at(1), massParsLambdaMean->at(2), massParsLambdaMean->at(3));
@@ -172,6 +184,18 @@ struct hstrangecorrelationfilter {
172184
histos.add("h3dMassOmegaPlus", "h3dMassOmegaPlus", kTH3F, {axisPtQA, axisOmegaMass, axisMult});
173185
}
174186

187+
void initCCDB(aod::BCsWithTimestamps::iterator const& bc)
188+
{
189+
if (mRunNumber == bc.runNumber()) {
190+
return;
191+
}
192+
193+
zorro.initCCDB(ccdb.service, bc.runNumber(), bc.timestamp(), zorroMask.value);
194+
zorro.populateHistRegistry(histos, bc.runNumber());
195+
196+
mRunNumber = bc.runNumber();
197+
}
198+
175199
// reco-level trigger quality checks (N.B.: DCA is filtered, not selected)
176200
template <class TTrack>
177201
bool isValidTrigger(TTrack track)
@@ -199,7 +223,7 @@ struct hstrangecorrelationfilter {
199223
}
200224

201225
// for real data processing
202-
void processTriggers(soa::Join<aod::Collisions, aod::EvSels>::iterator const& collision, soa::Filtered<DauTracks> const& tracks)
226+
void processTriggers(soa::Join<aod::Collisions, aod::EvSels>::iterator const& collision, soa::Filtered<DauTracks> const& tracks, aod::BCsWithTimestamps const&)
203227
{
204228
// Perform basic event selection
205229
if (!collision.sel8()) {
@@ -209,6 +233,14 @@ struct hstrangecorrelationfilter {
209233
if (TMath::Abs(collision.posZ()) > 10.0) {
210234
return;
211235
}
236+
if (zorroMask.value != "") {
237+
auto bc = collision.bc_as<aod::BCsWithTimestamps>();
238+
initCCDB(bc);
239+
bool zorroSelected = zorro.isSelected(collision.bc_as<aod::BCsWithTimestamps>().globalBC()); /// Just let Zorro do the accounting
240+
if (!zorroSelected) {
241+
return;
242+
}
243+
}
212244

213245
/// _________________________________________________
214246
/// Step 1: Populate table with trigger tracks
@@ -224,7 +256,7 @@ struct hstrangecorrelationfilter {
224256
}
225257

226258
// for MC processing
227-
void processTriggersMC(soa::Join<aod::Collisions, aod::EvSels>::iterator const& collision, soa::Filtered<DauTracksMC> const& tracks, aod::McParticles const&)
259+
void processTriggersMC(soa::Join<aod::Collisions, aod::EvSels>::iterator const& collision, soa::Filtered<DauTracksMC> const& tracks, aod::McParticles const&, aod::BCsWithTimestamps const&)
228260
{
229261
// Perform basic event selection
230262
if (!collision.sel8()) {
@@ -234,6 +266,14 @@ struct hstrangecorrelationfilter {
234266
if (TMath::Abs(collision.posZ()) > 10.0) {
235267
return;
236268
}
269+
if (zorroMask.value != "") {
270+
auto bc = collision.bc_as<aod::BCsWithTimestamps>();
271+
initCCDB(bc);
272+
bool zorroSelected = zorro.isSelected(collision.bc_as<aod::BCsWithTimestamps>().globalBC()); /// Just let Zorro do the accounting
273+
if (!zorroSelected) {
274+
return;
275+
}
276+
}
237277

238278
/// _________________________________________________
239279
/// Step 1: Populate table with trigger tracks
@@ -255,7 +295,7 @@ struct hstrangecorrelationfilter {
255295
}
256296
}
257297

258-
void processAssocPions(soa::Join<aod::Collisions, aod::EvSels>::iterator const& collision, soa::Filtered<IDTracks> const& tracks)
298+
void processAssocPions(soa::Join<aod::Collisions, aod::EvSels>::iterator const& collision, soa::Filtered<IDTracks> const& tracks, aod::BCsWithTimestamps const&)
259299
{
260300
// Perform basic event selection
261301
if (!collision.sel8()) {
@@ -265,6 +305,14 @@ struct hstrangecorrelationfilter {
265305
if (TMath::Abs(collision.posZ()) > 10.0) {
266306
return;
267307
}
308+
if (zorroMask.value != "") {
309+
auto bc = collision.bc_as<aod::BCsWithTimestamps>();
310+
initCCDB(bc);
311+
bool zorroSelected = zorro.isSelected(collision.bc_as<aod::BCsWithTimestamps>().globalBC()); /// Just let Zorro do the accounting
312+
if (!zorroSelected) {
313+
return;
314+
}
315+
}
268316

269317
/// _________________________________________________
270318
/// Step 1: Populate table with trigger tracks
@@ -321,7 +369,7 @@ struct hstrangecorrelationfilter {
321369
}
322370
}
323371

324-
void processAssocHadrons(soa::Join<aod::Collisions, aod::EvSels>::iterator const& collision, soa::Filtered<soa::Join<aod::Tracks, aod::TracksExtra, aod::TracksDCA>> const& tracks)
372+
void processAssocHadrons(soa::Join<aod::Collisions, aod::EvSels>::iterator const& collision, soa::Filtered<soa::Join<aod::Tracks, aod::TracksExtra, aod::TracksDCA>> const& tracks, aod::BCsWithTimestamps const&)
325373
{
326374
// Perform basic event selection
327375
if (!collision.sel8()) {
@@ -331,6 +379,14 @@ struct hstrangecorrelationfilter {
331379
if (TMath::Abs(collision.posZ()) > 10.0) {
332380
return;
333381
}
382+
if (zorroMask.value != "") {
383+
auto bc = collision.bc_as<aod::BCsWithTimestamps>();
384+
initCCDB(bc);
385+
bool zorroSelected = zorro.isSelected(collision.bc_as<aod::BCsWithTimestamps>().globalBC()); /// Just let Zorro do the accounting
386+
if (!zorroSelected) {
387+
return;
388+
}
389+
}
334390

335391
/// _________________________________________________
336392
/// Step 1: Populate table with trigger tracks
@@ -355,7 +411,7 @@ struct hstrangecorrelationfilter {
355411
}
356412
}
357413

358-
void processV0s(soa::Join<aod::Collisions, aod::EvSels, aod::CentFT0Ms>::iterator const& collision, DauTracks const&, soa::Filtered<V0DatasWithoutTrackX> const& V0s, V0LinkedTagged const&)
414+
void processV0s(soa::Join<aod::Collisions, aod::EvSels, aod::CentFT0Ms>::iterator const& collision, DauTracks const&, soa::Filtered<V0DatasWithoutTrackX> const& V0s, V0LinkedTagged const&, aod::BCsWithTimestamps const&)
359415
{
360416
// Perform basic event selection
361417
if (!collision.sel8()) {
@@ -365,6 +421,15 @@ struct hstrangecorrelationfilter {
365421
if (TMath::Abs(collision.posZ()) > 10.0) {
366422
return;
367423
}
424+
if (zorroMask.value != "") {
425+
auto bc = collision.bc_as<aod::BCsWithTimestamps>();
426+
initCCDB(bc);
427+
bool zorroSelected = zorro.isSelected(collision.bc_as<aod::BCsWithTimestamps>().globalBC()); /// Just let Zorro do the accounting
428+
if (!zorroSelected) {
429+
return;
430+
}
431+
}
432+
368433
/// _________________________________________________
369434
/// Populate table with associated V0s
370435
for (auto const& v0 : V0s) {
@@ -437,7 +502,7 @@ struct hstrangecorrelationfilter {
437502
}
438503
}
439504
}
440-
void processCascades(soa::Join<aod::Collisions, aod::EvSels, aod::CentFT0Ms>::iterator const& collision, DauTracks const&, soa::Filtered<V0DatasWithoutTrackX> const& /*V0s*/, soa::Filtered<aod::CascDatas> const& Cascades, aod::V0sLinked const&, CascadesLinkedTagged const&)
505+
void processCascades(soa::Join<aod::Collisions, aod::EvSels, aod::CentFT0Ms>::iterator const& collision, DauTracks const&, soa::Filtered<V0DatasWithoutTrackX> const& /*V0s*/, soa::Filtered<aod::CascDatas> const& Cascades, aod::V0sLinked const&, CascadesLinkedTagged const&, aod::BCsWithTimestamps const&)
441506
{
442507
// Perform basic event selection
443508
if (!collision.sel8()) {
@@ -447,6 +512,14 @@ struct hstrangecorrelationfilter {
447512
if (TMath::Abs(collision.posZ()) > 10.0) {
448513
return;
449514
}
515+
if (zorroMask.value != "") {
516+
auto bc = collision.bc_as<aod::BCsWithTimestamps>();
517+
initCCDB(bc);
518+
bool zorroSelected = zorro.isSelected(collision.bc_as<aod::BCsWithTimestamps>().globalBC()); /// Just let Zorro do the accounting
519+
if (!zorroSelected) {
520+
return;
521+
}
522+
}
450523
/// _________________________________________________
451524
/// Step 3: Populate table with associated Cascades
452525
for (auto const& casc : Cascades) {

PWGLF/Tasks/Strangeness/CMakeLists.txt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -76,7 +76,7 @@ o2physics_add_dpl_workflow(cascpostprocessing
7676

7777
o2physics_add_dpl_workflow(hstrangecorrelation
7878
SOURCES hStrangeCorrelation.cxx
79-
PUBLIC_LINK_LIBRARIES O2::Framework O2::DetectorsBase O2Physics::AnalysisCore
79+
PUBLIC_LINK_LIBRARIES O2::Framework O2::DetectorsBase O2Physics::AnalysisCore O2Physics::EventFilteringUtils
8080
COMPONENT_NAME Analysis)
8181

8282
o2physics_add_dpl_workflow(sigmaanalysis

0 commit comments

Comments
 (0)