Skip to content

Commit 32bb261

Browse files
jikim1290alibuild
andauthored
[PWGLF] adding pp trigger analysis (#12768)
Co-authored-by: ALICE Action Bot <alibuild@cern.ch>
1 parent 8ecc72a commit 32bb261

File tree

2 files changed

+88
-51
lines changed

2 files changed

+88
-51
lines changed

PWGLF/Tasks/Strangeness/CMakeLists.txt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -133,7 +133,7 @@ o2physics_add_dpl_workflow(lambdak0sflattenicity
133133

134134
o2physics_add_dpl_workflow(lambdalambda
135135
SOURCES lambdalambda.cxx
136-
PUBLIC_LINK_LIBRARIES O2Physics::AnalysisCore
136+
PUBLIC_LINK_LIBRARIES O2Physics::AnalysisCore O2Physics::EventFilteringUtils
137137
COMPONENT_NAME Analysis)
138138

139139
o2physics_add_dpl_workflow(lambdajetpolarization

PWGLF/Tasks/Strangeness/lambdalambda.cxx

Lines changed: 87 additions & 50 deletions
Original file line numberDiff line numberDiff line change
@@ -11,51 +11,48 @@
1111

1212
/// \author Junlee Kim (jikim1290@gmail.com)
1313

14-
#include <cmath>
15-
#include <array>
16-
#include <cstdlib>
17-
#include <chrono>
18-
#include <string>
19-
#include <vector>
14+
#include "PWGLF/DataModel/LFStrangenessTables.h"
2015

21-
#include "TLorentzVector.h"
22-
#include "TRandom3.h"
23-
#include "TF1.h"
24-
#include "TVector3.h"
25-
#include "Math/Vector3D.h"
26-
#include "Math/Vector4D.h"
27-
#include "Math/GenVector/Boost.h"
28-
#include <TMath.h>
16+
#include "Common/Core/TrackSelection.h"
17+
#include "Common/Core/trackUtilities.h"
18+
#include "Common/DataModel/Centrality.h"
19+
#include "Common/DataModel/EventSelection.h"
20+
#include "Common/DataModel/Multiplicity.h"
21+
#include "Common/DataModel/PIDResponse.h"
22+
#include "Common/DataModel/TrackSelectionTables.h"
23+
#include "EventFiltering/Zorro.h"
24+
#include "EventFiltering/ZorroSummary.h"
2925

30-
#include "Framework/runDataProcessing.h"
31-
#include "Framework/AnalysisTask.h"
26+
#include "CCDB/BasicCCDBManager.h"
27+
#include "CCDB/CcdbApi.h"
28+
#include "CommonConstants/PhysicsConstants.h"
29+
#include "DataFormatsParameters/GRPMagField.h"
30+
#include "DataFormatsParameters/GRPObject.h"
31+
#include "Framework/ASoAHelpers.h"
3232
#include "Framework/AnalysisDataModel.h"
33+
#include "Framework/AnalysisTask.h"
3334
#include "Framework/HistogramRegistry.h"
34-
#include "Framework/StepTHn.h"
3535
#include "Framework/O2DatabasePDGPlugin.h"
36-
#include "Framework/ASoAHelpers.h"
3736
#include "Framework/StaticFor.h"
38-
39-
#include "Common/DataModel/PIDResponse.h"
40-
#include "Common/DataModel/Multiplicity.h"
41-
#include "Common/DataModel/Centrality.h"
42-
#include "Common/DataModel/TrackSelectionTables.h"
43-
#include "Common/DataModel/EventSelection.h"
44-
45-
#include "Common/Core/trackUtilities.h"
46-
#include "Common/Core/TrackSelection.h"
47-
48-
#include "CommonConstants/PhysicsConstants.h"
49-
37+
#include "Framework/StepTHn.h"
38+
#include "Framework/runDataProcessing.h"
5039
#include "ReconstructionDataFormats/Track.h"
5140

52-
#include "DataFormatsParameters/GRPObject.h"
53-
#include "DataFormatsParameters/GRPMagField.h"
54-
55-
#include "CCDB/CcdbApi.h"
56-
#include "CCDB/BasicCCDBManager.h"
41+
#include "Math/GenVector/Boost.h"
42+
#include "Math/Vector3D.h"
43+
#include "Math/Vector4D.h"
44+
#include "TF1.h"
45+
#include "TLorentzVector.h"
46+
#include "TRandom3.h"
47+
#include "TVector3.h"
48+
#include <TMath.h>
5749

58-
#include "PWGLF/DataModel/LFStrangenessTables.h"
50+
#include <array>
51+
#include <chrono>
52+
#include <cmath>
53+
#include <cstdlib>
54+
#include <string>
55+
#include <vector>
5956

6057
using namespace o2;
6158
using namespace o2::framework;
@@ -68,6 +65,9 @@ struct lambdalambda {
6865
using TrackCandidates = soa::Join<aod::Tracks, aod::TracksExtra, aod::TracksDCA, aod::TrackSelection, aod::pidTPCFullPi, aod::pidTPCFullPr>;
6966
using V0TrackCandidate = aod::V0Datas;
7067

68+
Zorro zorro;
69+
OutputObj<ZorroSummary> zorroSummary{"zorroSummary"};
70+
7171
HistogramRegistry histos{
7272
"histos",
7373
{},
@@ -136,6 +136,9 @@ struct lambdalambda {
136136
Configurable<int> cfgNRotBkg{"cfgNRotBkg", 10, "the number of rotational backgrounds"};
137137
Configurable<int> cfgNoMixedEvents{"cfgNoMixedEvents", 10, "Number of mixed events per event"};
138138

139+
Configurable<bool> cfgSkimmedProcessing{"cfgSkimmedProcessing", false, "Enable processing of skimmed data"};
140+
Configurable<std::string> cfgTriggerName{"cfgTriggerName", "fLambdaLambda", "Software trigger name"};
141+
139142
ConfigurableAxis massAxis{"massAxis", {110, 2.22, 2.33}, "Invariant mass axis"};
140143
ConfigurableAxis ptAxis{"ptAxis", {VARIABLE_WIDTH, 0.2, 0.5, 1.0, 1.5, 2.0, 2.5, 3.0, 4.0, 5.0, 6.5, 8.0, 10.0, 100.0}, "Transverse momentum bins"};
141144
ConfigurableAxis centAxis{"centAxis", {VARIABLE_WIDTH, 0, 10, 20, 50, 100}, "Centrality interval"};
@@ -157,8 +160,20 @@ struct lambdalambda {
157160
bool IsTriggered;
158161
bool IsSelected;
159162

163+
void initCCDB(aod::BCsWithTimestamps::iterator const& bc)
164+
{
165+
if (cfgSkimmedProcessing) {
166+
zorro.initCCDB(ccdb.service, bc.runNumber(), bc.timestamp(), cfgTriggerName.value);
167+
zorro.populateHistRegistry(histos, bc.runNumber());
168+
}
169+
}
170+
160171
void init(o2::framework::InitContext&)
161172
{
173+
if (cfgSkimmedProcessing) {
174+
zorroSummary.setObject(zorro.getZorroSummary());
175+
}
176+
162177
AxisSpec centQaAxis = {80, 0.0, 80.0};
163178
AxisSpec PVzQaAxis = {300, -15.0, 15.0};
164179
AxisSpec combAxis = {3, -0.5, 2.5};
@@ -506,8 +521,15 @@ struct lambdalambda {
506521
histos.fill(HIST("QA/CentDist"), centrality, 1.0);
507522
histos.fill(HIST("QA/PVzDist"), collision.posZ(), 1.0);
508523

524+
auto bc = collision.bc_as<aod::BCsWithTimestamps>();
525+
if (cfgSkimmedProcessing) {
526+
initCCDB(bc);
527+
if (!zorro.isSelected(collision.template bc_as<aod::BCsWithTimestamps>().globalBC())) {
528+
return;
529+
}
530+
}
531+
509532
if (cfgEffCor) {
510-
auto bc = collision.bc_as<aod::BCsWithTimestamps>();
511533
EffMap = ccdb->getForTimeStamp<TProfile2D>(cfgEffCorPath.value, bc.timestamp());
512534
}
513535
FillHistograms(collision, collision, V0s, V0s);
@@ -520,31 +542,46 @@ struct lambdalambda {
520542
PROCESS_SWITCH(lambdalambda, processDataSame, "Process Event for same data", true);
521543

522544
SliceCache cache;
523-
using BinningTypeVertexContributor = ColumnBinningPolicy<aod::collision::PosZ, aod::cent::CentFT0M>;
545+
using BinningType = ColumnBinningPolicy<aod::collision::PosZ, aod::cent::CentFT0M>;
546+
BinningType colBinning{{vertexAxis, centAxis}, true};
524547

548+
Preslice<aod::V0Datas> tracksPerCollisionV0 = aod::v0data::collisionId;
525549
void processDataMixed(EventCandidates const& collisions,
526-
TrackCandidates const& /*tracks*/, aod::V0Datas const& V0s)
550+
TrackCandidates const& /*tracks*/, aod::V0Datas const& V0s, aod::BCsWithTimestamps const&)
527551
{
528-
auto tracksTuple = std::make_tuple(V0s);
529-
BinningTypeVertexContributor binningOnPositions{{vertexAxis, centAxis}, true};
530-
SameKindPair<EventCandidates, V0TrackCandidate, BinningTypeVertexContributor> pair{binningOnPositions, cfgNoMixedEvents, -1, collisions, tracksTuple, &cache};
531-
for (auto& [c1, tracks1, c2, tracks2] : pair) {
532-
if (cfgCentEst == 1) {
533-
centrality = c1.centFT0C();
534-
} else if (cfgCentEst == 2) {
535-
centrality = c1.centFT0M();
552+
int currentRun = -1;
553+
for (auto& [c1, c2] : selfCombinations(colBinning, cfgNoMixedEvents, -1, collisions, collisions)) {
554+
if (c1.index() == c2.index())
555+
continue;
556+
557+
auto bc1 = c1.bc_as<aod::BCsWithTimestamps>();
558+
auto bc2 = c2.bc_as<aod::BCsWithTimestamps>();
559+
560+
if (bc1.runNumber() != bc2.runNumber())
561+
continue;
562+
563+
if (bc1.runNumber() != currentRun) {
564+
if (cfgSkimmedProcessing) {
565+
initCCDB(bc1);
566+
if (!zorro.isSelected(bc1.globalBC()) || !zorro.isSelected(bc2.globalBC())) {
567+
continue;
568+
}
569+
}
536570
}
571+
572+
centrality = c1.centFT0M();
537573
if (!eventSelected(c1))
538574
continue;
539575
if (!eventSelected(c2))
540576
continue;
541-
if (c1.bcId() == c2.bcId())
542-
continue;
577+
578+
auto tracks1 = V0s.sliceBy(tracksPerCollisionV0, c1.globalIndex());
579+
auto tracks2 = V0s.sliceBy(tracksPerCollisionV0, c2.globalIndex());
543580

544581
FillHistograms(c1, c2, tracks1, tracks2);
545582
}
546583
}
547-
PROCESS_SWITCH(lambdalambda, processDataMixed, "Process Event for mixed data", true);
584+
PROCESS_SWITCH(lambdalambda, processDataMixed, "Process Event for mixed data", false);
548585
};
549586

550587
WorkflowSpec defineDataProcessing(ConfigContext const& cfgc)

0 commit comments

Comments
 (0)