Skip to content

Commit 2feff8e

Browse files
Merge branch 'AliceO2Group:master' into master
2 parents 171d571 + e9cb5f4 commit 2feff8e

40 files changed

+3711
-403
lines changed

Common/TableProducer/qVectorsTable.cxx

Lines changed: 11 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -19,11 +19,13 @@
1919
///
2020

2121
// C++/ROOT includes.
22+
#include <TComplex.h>
23+
#include <TH3F.h>
24+
2225
#include <chrono>
2326
#include <string>
27+
#include <unordered_map>
2428
#include <vector>
25-
#include <TComplex.h>
26-
#include <TH3F.h>
2729

2830
// o2Physics includes.
2931
#include "Framework/AnalysisDataModel.h"
@@ -78,6 +80,9 @@ struct qVectorsTable {
7880

7981
Configurable<float> cfgMinPtOnTPC{"cfgMinPtOnTPC", 0.15, "minimum transverse momentum selection for TPC tracks participating in Q-vector reconstruction"};
8082
Configurable<float> cfgMaxPtOnTPC{"cfgMaxPtOnTPC", 5., "maximum transverse momentum selection for TPC tracks participating in Q-vector reconstruction"};
83+
Configurable<float> cfgEtaMax{"cfgEtaMax", 0.8, "Maximum pseudorapidiy for charged track"};
84+
Configurable<float> cfgEtaMin{"cfgEtaMin", -0.8, "Minimum pseudorapidiy for charged track"};
85+
8186
Configurable<int> cfgCorrLevel{"cfgCorrLevel", 4, "calibration step: 0 = no corr, 1 = gain corr, 2 = rectr, 3 = twist, 4 = full"};
8287
Configurable<std::vector<int>> cfgnMods{"cfgnMods", {2, 3}, "Modulation of interest"};
8388
Configurable<float> cfgMaxCentrality{"cfgMaxCentrality", 100.f, "max. centrality for Q vector calibration"};
@@ -437,7 +442,10 @@ struct qVectorsTable {
437442
continue;
438443
}
439444
histosQA.fill(HIST("ChTracks"), trk.pt(), trk.eta(), trk.phi(), cent);
440-
if (std::abs(trk.eta()) > 0.8) {
445+
if (trk.eta() > cfgEtaMax) {
446+
continue;
447+
}
448+
if (trk.eta() < cfgEtaMin) {
441449
continue;
442450
}
443451
qVectTPCall[0] += trk.pt() * std::cos(trk.phi() * nmode);

DPG/Tasks/AOTEvent/CMakeLists.txt

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -44,6 +44,11 @@ o2physics_add_dpl_workflow(rof-occupancy-qa
4444
PUBLIC_LINK_LIBRARIES O2::Framework O2Physics::AnalysisCore O2Physics::AnalysisCCDB O2::DetectorsBase
4545
COMPONENT_NAME Analysis)
4646

47+
o2physics_add_dpl_workflow(light-ions-evsel-qa
48+
SOURCES lightIonsEvSelQa.cxx
49+
PUBLIC_LINK_LIBRARIES O2::Framework O2Physics::AnalysisCore O2Physics::AnalysisCCDB O2::DetectorsBase
50+
COMPONENT_NAME Analysis)
51+
4752
o2physics_add_dpl_workflow(occupancy-vs-dedx-qa
4853
SOURCES dEdxVsOccupancyWithTrackQAinfo.cxx
4954
PUBLIC_LINK_LIBRARIES O2::Framework O2Physics::AnalysisCore O2Physics::AnalysisCCDB O2::DetectorsBase

DPG/Tasks/AOTEvent/eventSelectionQa.cxx

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1185,7 +1185,7 @@ struct EventSelectionQaTask {
11851185
histos.fill(HIST("occupancyQA/tpcNCrossedRows_vs_V0A_vs_occupancy"), multV0A, track.tpcNClsFindable() - tpcNClsFindableMinusCrossedRowsCorrected, occupancyByTracks);
11861186
}
11871187
} // end of hasTPC
1188-
if (track.tpcNClsFound() > 50 && track.tpcNClsCrossedRows() > 80 && track.itsChi2NCl() < 36 && track.tpcChi2NCl() < 4) {
1188+
if (col.sel8() && fabs(col.posZ()) < 10 && track.tpcNClsFound() > 50 && track.tpcNClsCrossedRows() > 80 && track.itsChi2NCl() < 36 && track.tpcChi2NCl() < 4) {
11891189
nContributorsAfterEtaTPCCuts++;
11901190
// ROF border QA
11911191
histos.fill(HIST("ITSROFborderQA/hFoundBC_kTVX_nITSlayers_for_ITSTPCtracks"), localBC, track.itsNCls());

DPG/Tasks/AOTEvent/lightIonsEvSelQa.cxx

Lines changed: 1079 additions & 0 deletions
Large diffs are not rendered by default.

PWGCF/FemtoUniverse/TableProducer/femtoUniverseProducerTask.cxx

Lines changed: 83 additions & 62 deletions
Large diffs are not rendered by default.

PWGCF/Flow/Tasks/flowTask.cxx

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -251,11 +251,11 @@ struct FlowTask {
251251
registry.add("hVtxZ", "Vexter Z distribution", {HistType::kTH1D, {axisVertex}});
252252
registry.add("hMult", "Multiplicity distribution", {HistType::kTH1D, {{3000, 0.5, 3000.5}}});
253253
std::string hCentTitle = "Centrality distribution, Estimator " + std::to_string(cfgCentEstimator);
254-
registry.add("hCent", hCentTitle.c_str(), {HistType::kTH1D, {{90, 0, 90}}});
254+
registry.add("hCent", hCentTitle.c_str(), {HistType::kTH1D, {{100, 0, 100}}});
255255
if (doprocessMCGen) {
256256
registry.add("MCGen/MChVtxZ", "Vexter Z distribution", {HistType::kTH1D, {axisVertex}});
257257
registry.add("MCGen/MChMult", "Multiplicity distribution", {HistType::kTH1D, {{3000, 0.5, 3000.5}}});
258-
registry.add("MCGen/MChCent", hCentTitle.c_str(), {HistType::kTH1D, {{90, 0, 90}}});
258+
registry.add("MCGen/MChCent", hCentTitle.c_str(), {HistType::kTH1D, {{100, 0, 100}}});
259259
}
260260
if (!cfgUseSmallMemory) {
261261
registry.add("BeforeSel8_globalTracks_centT0C", "before sel8;Centrality T0C;mulplicity global tracks", {HistType::kTH2D, {axisCentForQA, axisNch}});

PWGCF/Flow/Tasks/flowZdcTask.cxx

Lines changed: 40 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -62,6 +62,7 @@ struct FlowZdcTask {
6262
Configurable<float> maxZem{"maxZem", 3099.5, "Max ZEM signal"};
6363
// for ZDC info and analysis
6464
Configurable<int> nBinsAmp{"nBinsAmp", 1025, "nbinsAmp"};
65+
Configurable<int> nBinsCent{"nBinsCent", 90, "nBinsCent"};
6566
Configurable<float> maxZn{"maxZn", 125.5, "Max ZN signal"};
6667
Configurable<float> vtxRange{"vtxRange", 10.0f, "Vertex Z range to consider"};
6768
Configurable<float> etaRange{"etaRange", 1.0f, "Eta range to consider"};
@@ -76,6 +77,7 @@ struct FlowZdcTask {
7677
Configurable<int> nBinsZP{"nBinsZP", 160, "N bins ZP"};
7778
Configurable<float> minNch{"minNch", 0, "Min Nch (|eta|<0.8)"};
7879
Configurable<float> maxNch{"maxNch", 2500, "Max Nch (|eta|<0.8)"};
80+
Configurable<float> oneNeutron{"oneNeutron", 1.0, "one neutron, energy or integer"};
7981
Configurable<int> nBinsTDC{"nBinsTDC", 150, "nbinsTDC"};
8082
Configurable<float> minTdc{"minTdc", -15.0, "minimum TDC"};
8183
Configurable<float> maxTdc{"maxTdc", 15.0, "maximum TDC"};
@@ -95,6 +97,7 @@ struct FlowZdcTask {
9597
Configurable<bool> applyEff{"applyEff", true, "Apply track-by-track efficiency correction"};
9698
Configurable<bool> applyFD{"applyFD", false, "Apply track-by-track feed down correction"};
9799
Configurable<bool> correctNch{"correctNch", true, "Correct also Nch"};
100+
Configurable<bool> isOneNeutronFound{"isOneNeutronFound", true, "Require at least 1 neutron in ZNA/ZNC to fill ZPA/ZPC"};
98101

99102
Configurable<float> nSigmaNchCut{"nSigmaNchCut", 1., "nSigma Nch selection"};
100103
Configurable<double> minNchSel{"minNchSel", 5., "min Nch Selection"};
@@ -305,6 +308,10 @@ struct FlowZdcTask {
305308
histos.add("ZNAVsNch", ";#it{N}_{ch} (|#eta|<0.8);ZNA;", kTH2F, {{{nBinsNch, minNch, maxNch}, {nBinsZDC, minNch, maxZn}}});
306309
histos.add("ZNVsNch", ";#it{N}_{ch} (|#eta|<0.8);ZNA+ZNC;", kTH2F, {{{nBinsNch, minNch, maxNch}, {nBinsZDC, minNch, maxZn}}});
307310
histos.add("ZNDifVsNch", ";#it{N}_{ch} (|#eta|<0.8);ZNA-ZNC;", kTH2F, {{{nBinsNch, minNch, maxNch}, {100, -50., 50.}}});
311+
histos.add("ZPAvsCent", ";centFT0C;ZPA", kTH2F, {{{axisCent}, {nBinsZDC, -0.5, maxZp}}});
312+
histos.add("ZPCvsCent", ";centFT0C;ZPC", kTH2F, {{{axisCent}, {nBinsZDC, -0.5, maxZp}}});
313+
histos.add("pZPAvsFT0Ccent", ";FT0C centrality;ZPA Amplitude", kTProfile, {{nBinsCent, minT0CcentCut, maxT0CcentCut}});
314+
histos.add("pZPCvsFT0Ccent", ";FT0C centrality;ZPC Amplitude", kTProfile, {{nBinsCent, minT0CcentCut, maxT0CcentCut}});
308315
}
309316

310317
ccdb->setURL("http://alice-ccdb.cern.ch");
@@ -403,6 +410,7 @@ struct FlowZdcTask {
403410
void processQA(ColEvSels::iterator const& collision, BCsRun3 const& /*bcs*/, aod::Zdcs const& /*zdcsData*/, aod::FV0As const& /*fv0as*/, aod::FT0s const& /*ft0s*/, TheFilteredTracks const& tracks)
404411
{
405412
const auto& foundBC = collision.foundBC_as<BCsRun3>();
413+
const auto cent = collision.centFT0C();
406414
if (!isEventSelected(collision)) {
407415
return;
408416
}
@@ -533,39 +541,56 @@ struct FlowZdcTask {
533541
}
534542
histos.fill(HIST("zPos"), collision.posZ());
535543
histos.fill(HIST("T0Ccent"), collision.centFT0C());
536-
537544
histos.fill(HIST("ZNCcvsZNCsum"), sumZNC / cfgCollisionEnergy, zdc.energyCommonZNC() / cfgCollisionEnergy);
538545
histos.fill(HIST("ZNAcvsZNAsum"), sumZNA / cfgCollisionEnergy, zdc.energyCommonZNA() / cfgCollisionEnergy);
539546
histos.fill(HIST("ZPCcvsZPCsum"), sumZPC / cfgCollisionEnergy, zdc.energyCommonZPC() / cfgCollisionEnergy);
540547
histos.fill(HIST("ZPAcvsZPAsum"), sumZPA / cfgCollisionEnergy, zdc.energyCommonZPA() / cfgCollisionEnergy);
541-
542548
histos.fill(HIST("GlbTracks"), glbTracks);
549+
550+
// Neutron ZDC
543551
histos.fill(HIST("ZNA"), znA);
544552
histos.fill(HIST("ZNC"), znC);
545-
histos.fill(HIST("ZPA"), zpA);
546-
histos.fill(HIST("ZPC"), zpC);
547553
histos.fill(HIST("ZNASector"), sumZNA / cfgCollisionEnergy);
548554
histos.fill(HIST("ZNCSector"), sumZNC / cfgCollisionEnergy);
549-
histos.fill(HIST("ZPASector"), sumZPA / cfgCollisionEnergy);
550-
histos.fill(HIST("ZPCSector"), sumZPC / cfgCollisionEnergy);
551555
histos.fill(HIST("ZN"), znA + znC);
552-
histos.fill(HIST("ZNAVsZNC"), znC, znA);
553-
histos.fill(HIST("ZNAVsZPA"), zpA, znA);
554-
histos.fill(HIST("ZNCVsZPC"), zpC, znC);
555-
histos.fill(HIST("ZPAVsZPC"), zpC, zpA);
556556
histos.fill(HIST("ZNVsZEM"), sumZEMs, sumZNs);
557557
histos.fill(HIST("ZNCVstdc"), tZNC, znC);
558558
histos.fill(HIST("ZNAVstdc"), tZNA, znA);
559559
histos.fill(HIST("ZPCVstdc"), tZPC, zpC);
560-
histos.fill(HIST("ZPAVstdc"), tZPA, zpA);
561-
histos.fill(HIST("ZEM1Vstdc"), tZEM1, aZEM1);
562-
histos.fill(HIST("ZEM2Vstdc"), tZEM2, aZEM2);
563-
histos.fill(HIST("debunch"), tZDCdif, tZDCsum);
564-
565560
histos.fill(HIST("ZNVsFT0A"), aT0A / 100., sumZNs);
566561
histos.fill(HIST("ZNVsFT0C"), aT0C / 100., sumZNs);
567562
histos.fill(HIST("ZNVsFT0M"), (aT0A + aT0C) / 100., sumZNs);
568563

564+
// Proton ZDC
565+
if (!isOneNeutronFound || znA >= oneNeutron) {
566+
histos.fill(HIST("ZPA"), zpA);
567+
histos.fill(HIST("ZPASector"), sumZPA / cfgCollisionEnergy);
568+
histos.fill(HIST("ZPAVstdc"), tZPA, zpA);
569+
histos.fill(HIST("ZPAvsCent"), cent, zpA);
570+
if (std::isfinite(zpA) && !std::isnan(zpA) &&
571+
cent >= minT0CcentCut && cent < maxT0CcentCut) {
572+
histos.fill(HIST("pZPAvsFT0Ccent"), cent, zpA);
573+
}
574+
}
575+
if (!isOneNeutronFound || znC >= oneNeutron) {
576+
histos.fill(HIST("ZPC"), zpC);
577+
histos.fill(HIST("ZPCSector"), sumZPC / cfgCollisionEnergy);
578+
histos.fill(HIST("ZPCvsCent"), cent, zpC);
579+
if (std::isfinite(zpC) && !std::isnan(zpC) &&
580+
cent >= minT0CcentCut && cent < maxT0CcentCut) {
581+
histos.fill(HIST("pZPCvsFT0Ccent"), cent, zpC);
582+
}
583+
}
584+
585+
// ZDC Correlations
586+
histos.fill(HIST("ZNAVsZNC"), znC, znA);
587+
histos.fill(HIST("ZNAVsZPA"), zpA, znA);
588+
histos.fill(HIST("ZNCVsZPC"), zpC, znC);
589+
histos.fill(HIST("ZPAVsZPC"), zpC, zpA);
590+
histos.fill(HIST("ZEM1Vstdc"), tZEM1, aZEM1);
591+
histos.fill(HIST("ZEM2Vstdc"), tZEM2, aZEM2);
592+
histos.fill(HIST("debunch"), tZDCdif, tZDCsum);
593+
569594
if (sumZNs > znBasedCut) {
570595
return;
571596
}

PWGCF/TableProducer/filterCorrelations.cxx

Lines changed: 18 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -55,6 +55,9 @@ struct FilterCF {
5555
kTrackSelected = BIT(0),
5656
kITS5Clusters = BIT(1),
5757
kTPCCrossedRows = BIT(2),
58+
kTPCClusters = BIT(3),
59+
kchi2perTPC = BIT(4),
60+
kchi2perITS = BIT(5),
5861
};
5962

6063
enum TrackSelectionCuts2 : uint8_t {
@@ -68,7 +71,7 @@ struct FilterCF {
6871
O2_DEFINE_CONFIGURABLE(cfgCutMCPt, float, 0.5f, "Minimal pT for particles")
6972
O2_DEFINE_CONFIGURABLE(cfgCutMCEta, float, 0.8f, "Eta range for particles")
7073
O2_DEFINE_CONFIGURABLE(cfgVerbosity, int, 1, "Verbosity level (0 = major, 1 = per collision)")
71-
O2_DEFINE_CONFIGURABLE(cfgTrigger, int, 7, "Trigger choice: (0 = none, 7 = sel7, 8 = sel8, 9 = sel8 + kNoSameBunchPileup + kIsGoodZvtxFT0vsPV, 10 = sel8 before April, 2024, 11 = sel8 for MC, 12 = sel8 with low occupancy cut)")
74+
O2_DEFINE_CONFIGURABLE(cfgTrigger, int, 7, "Trigger choice: (0 = none, 7 = sel7, 8 = sel8, 9 = sel8 + kNoSameBunchPileup + kIsGoodZvtxFT0vsPV, 10 = sel8 before April, 2024, 11 = sel8 for MC, 12 = sel8 with low occupancy cut, 13 = sel8 + kNoSameBunchPileup + kIsGoodITSLayersAll -- for OO/NeNe) ")
7275
O2_DEFINE_CONFIGURABLE(cfgMinOcc, int, 0, "minimum occupancy selection")
7376
O2_DEFINE_CONFIGURABLE(cfgMaxOcc, int, 3000, "maximum occupancy selection")
7477
O2_DEFINE_CONFIGURABLE(cfgCollisionFlags, uint16_t, aod::collision::CollisionFlagsRun2::Run2VertexerTracks, "Request collision flags if non-zero (0 = off, 1 = Run2VertexerTracks)")
@@ -84,6 +87,9 @@ struct FilterCF {
8487
O2_DEFINE_CONFIGURABLE(dcazmax, float, 999.f, "maximum dcaz of tracks")
8588
O2_DEFINE_CONFIGURABLE(itsnclusters, int, 5, "minimum number of ITS clusters for tracks")
8689
O2_DEFINE_CONFIGURABLE(tpcncrossedrows, int, 80, "minimum number of TPC crossed rows for tracks")
90+
O2_DEFINE_CONFIGURABLE(tpcnclusters, int, 50, "minimum number of TPC clusters found")
91+
O2_DEFINE_CONFIGURABLE(chi2pertpccluster, float, 2.5, "maximum Chi2 / cluster for the TPC track segment")
92+
O2_DEFINE_CONFIGURABLE(chi2peritscluster, float, 36, "maximum Chi2 / cluster for the ITS track segment")
8793

8894
// Filters and input definitions
8995
Filter collisionZVtxFilter = nabs(aod::collision::posZ) < cfgCutVertex;
@@ -140,6 +146,8 @@ struct FilterCF {
140146
return isMultSelected && collision.sel8() && collision.selection_bit(aod::evsel::kNoSameBunchPileup) && collision.selection_bit(aod::evsel::kIsGoodZvtxFT0vsPV) && collision.selection_bit(aod::evsel::kNoCollInTimeRangeStandard) && collision.selection_bit(aod::evsel::kIsGoodITSLayersAll);
141147
else
142148
return false;
149+
} else if (cfgTrigger == 13) { // relevant for OO/NeNe
150+
return isMultSelected && collision.sel8() && collision.selection_bit(aod::evsel::kNoSameBunchPileup) && collision.selection_bit(aod::evsel::kIsGoodITSLayersAll);
143151
}
144152
return false;
145153
}
@@ -205,6 +213,15 @@ struct FilterCF {
205213
if (track.tpcNClsCrossedRows() >= tpcncrossedrows) {
206214
trackType |= kTPCCrossedRows;
207215
}
216+
if (track.tpcNClsFound() >= tpcnclusters) {
217+
trackType |= kTPCClusters;
218+
}
219+
if (track.tpcChi2NCl() <= chi2pertpccluster) {
220+
trackType |= kchi2perTPC;
221+
}
222+
if (track.itsChi2NCl() <= chi2peritscluster) {
223+
trackType |= kchi2perITS;
224+
}
208225
}
209226
return trackType;
210227
} else if (cfgTrackSelection == 2) {

0 commit comments

Comments
 (0)