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
6057using namespace o2 ;
6158using 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
550587WorkflowSpec defineDataProcessing (ConfigContext const & cfgc)
0 commit comments