Skip to content

Commit 25e0104

Browse files
ddobrigkalibuild
andauthored
[Common] centrality study extras (#8667)
Co-authored-by: ALICE Builder <alibuild@users.noreply.github.com>
1 parent f7aef13 commit 25e0104

File tree

5 files changed

+126
-6
lines changed

5 files changed

+126
-6
lines changed

Common/DataModel/Multiplicity.h

Lines changed: 21 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -48,6 +48,9 @@ DECLARE_SOA_DYNAMIC_COLUMN(IsInelGt1, isInelGt1, //! is INEL > 1
4848
// MC
4949
DECLARE_SOA_COLUMN(MultMCFT0A, multMCFT0A, int); //!
5050
DECLARE_SOA_COLUMN(MultMCFT0C, multMCFT0C, int); //!
51+
DECLARE_SOA_COLUMN(MultMCFV0A, multMCFV0A, int); //!
52+
DECLARE_SOA_COLUMN(MultMCFDDA, multMCFDDA, int); //!
53+
DECLARE_SOA_COLUMN(MultMCFDDC, multMCFDDC, int); //!
5154
DECLARE_SOA_COLUMN(MultMCNParticlesEta10, multMCNParticlesEta10, int); //!
5255
DECLARE_SOA_COLUMN(MultMCNParticlesEta08, multMCNParticlesEta08, int); //!
5356
DECLARE_SOA_COLUMN(MultMCNParticlesEta05, multMCNParticlesEta05, int); //!
@@ -144,7 +147,7 @@ DECLARE_SOA_TABLE(MultSelections, "AOD", "MULTSELECTIONS", //!
144147
using MultExtra = MultsExtra::iterator;
145148

146149
// mc collisions table - indexed to Mult
147-
DECLARE_SOA_TABLE(MultMCExtras, "AOD", "MULTMCEXTRA", //! Table for the MC information
150+
DECLARE_SOA_TABLE(MultMCExtras_000, "AOD", "MULTMCEXTRA", //! Table for MC information
148151
mult::MultMCFT0A,
149152
mult::MultMCFT0C,
150153
mult::MultMCNParticlesEta05,
@@ -154,6 +157,23 @@ DECLARE_SOA_TABLE(MultMCExtras, "AOD", "MULTMCEXTRA", //! Table for the MC infor
154157
mult::IsInelGt0<mult::MultMCNParticlesEta10>,
155158
mult::IsInelGt1<mult::MultMCNParticlesEta10>,
156159
o2::soa::Marker<1>);
160+
161+
// mc collisions table - indexed to Mult
162+
DECLARE_SOA_TABLE_VERSIONED(MultMCExtras_001, "AOD", "MULTMCEXTRA", 1, //! Table for MC information
163+
mult::MultMCFT0A,
164+
mult::MultMCFT0C,
165+
mult::MultMCFV0A,
166+
mult::MultMCFDDA,
167+
mult::MultMCFDDC,
168+
mult::MultMCNParticlesEta05,
169+
mult::MultMCNParticlesEta08,
170+
mult::MultMCNParticlesEta10,
171+
mult::MultMCPVz,
172+
mult::IsInelGt0<mult::MultMCNParticlesEta10>,
173+
mult::IsInelGt1<mult::MultMCNParticlesEta10>,
174+
o2::soa::Marker<1>);
175+
176+
using MultMCExtras = MultMCExtras_001;
157177
using MultMCExtra = MultMCExtras::iterator;
158178
using MultsExtraMC = MultMCExtras; // for backwards compatibility with previous naming scheme
159179

Common/TableProducer/Converters/CMakeLists.txt

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -79,3 +79,7 @@ o2physics_add_dpl_workflow(multsextra-converter
7979
PUBLIC_LINK_LIBRARIES O2Physics::AnalysisCore
8080
COMPONENT_NAME Analysis)
8181

82+
o2physics_add_dpl_workflow(multmcextras-converter
83+
SOURCES multMCExtrasConverter.cxx
84+
PUBLIC_LINK_LIBRARIES O2Physics::AnalysisCore
85+
COMPONENT_NAME Analysis)
Lines changed: 38 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,38 @@
1+
// Copyright 2019-2020 CERN and copyright holders of ALICE O2.
2+
// See https://alice-o2.web.cern.ch/copyright for details of the copyright holders.
3+
// All rights not expressly granted are reserved.
4+
//
5+
// This software is distributed under the terms of the GNU General Public
6+
// License v3 (GPL Version 3), copied verbatim in the file "COPYING".
7+
//
8+
// In applying this license CERN does not waive the privileges and immunities
9+
// granted to it by virtue of its status as an Intergovernmental Organization
10+
// or submit itself to any jurisdiction.
11+
12+
#include "Framework/runDataProcessing.h"
13+
#include "Framework/AnalysisTask.h"
14+
#include "Framework/AnalysisDataModel.h"
15+
#include "Common/DataModel/Multiplicity.h"
16+
17+
using namespace o2;
18+
using namespace o2::framework;
19+
20+
struct MultMCExtrasConverter {
21+
Produces<aod::MultMCExtras_001> multMCExtras_001;
22+
void process(aod::MultMCExtras_000 const& multMCExtras_000)
23+
{
24+
for (const auto& r : multMCExtras_000) {
25+
multMCExtras_001(r.multMCFT0A(), r.multMCFT0C(), 0, 0, 0,
26+
r.multMCNParticlesEta05(),
27+
r.multMCNParticlesEta08(),
28+
r.multMCNParticlesEta10(),
29+
r.multMCPVz());
30+
}
31+
}
32+
};
33+
34+
WorkflowSpec defineDataProcessing(ConfigContext const& cfgc)
35+
{
36+
return WorkflowSpec{
37+
adaptAnalysisTask<MultMCExtrasConverter>(cfgc)};
38+
}

Common/TableProducer/multiplicityTable.cxx

Lines changed: 15 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,11 @@
99
// granted to it by virtue of its status as an Intergovernmental Organization
1010
// or submit itself to any jurisdiction.
1111

12+
#include <vector>;
13+
#include <algorithm>;
14+
#include <map>;
15+
#include <string>;
16+
1217
#include "Framework/ConfigParamSpec.h"
1318
#include "Framework/runDataProcessing.h"
1419
#include "Framework/AnalysisTask.h"
@@ -634,7 +639,10 @@ struct MultiplicityTable {
634639
void processMC(aod::McCollision const& mcCollision, mcParticlesFiltered const& mcParticles)
635640
{
636641
int multFT0A = 0;
642+
int multFV0A = 0;
637643
int multFT0C = 0;
644+
int multFDDA = 0;
645+
int multFDDC = 0;
638646
int multBarrelEta05 = 0;
639647
int multBarrelEta08 = 0;
640648
int multBarrelEta10 = 0;
@@ -665,8 +673,14 @@ struct MultiplicityTable {
665673
multFT0C++;
666674
if (3.5 < mcPart.eta() && mcPart.eta() < 4.9)
667675
multFT0A++;
676+
if (2.2 < mcPart.eta() && mcPart.eta() < 5.0)
677+
multFV0A++;
678+
if (-6.9 < mcPart.eta() && mcPart.eta() < -4.9)
679+
multFDDC++;
680+
if (4.7 < mcPart.eta() && mcPart.eta() < 6.3)
681+
multFDDA++;
668682
}
669-
tableExtraMc(multFT0A, multFT0C, multBarrelEta05, multBarrelEta08, multBarrelEta10, mcCollision.posZ());
683+
tableExtraMc(multFT0A, multFT0C, multFV0A, multFDDA, multFDDC, multBarrelEta05, multBarrelEta08, multBarrelEta10, mcCollision.posZ());
670684
}
671685

672686
void processMC2Mults(soa::Join<aod::McCollisionLabels, aod::Collisions>::iterator const& collision)

Common/Tasks/centralityStudy.cxx

Lines changed: 48 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -65,8 +65,16 @@ struct centralityStudy {
6565
Configurable<float> scaleSignalFT0M{"scaleSignalFT0M", 1.00f, "scale FT0M signal for convenience"};
6666
Configurable<float> scaleSignalFV0A{"scaleSignalFV0A", 1.00f, "scale FV0A signal for convenience"};
6767

68-
// Configurable Axes
69-
ConfigurableAxis axisMultFT0C{"axisMultFT0C", {2000, 0, 100000}, "FT0C amplitude"};
68+
// reject low zna/c
69+
Configurable<float> minZNACsignal{"minZNACsignal", 15.0f, "min zna/c signal"};
70+
Configurable<float> maxFT0CforZNACselection{"maxFT0CforZNACselection", 35000.0f, "max ft0c signal for minZNACsignal to work"};
71+
72+
// Configurable Axes for 2d plots, etc
73+
ConfigurableAxis axisMultFV0A{"axisMultFV0A", {1000, 0, 100000}, "FV0A amplitude"};
74+
ConfigurableAxis axisMultFT0A{"axisMultFT0A", {1000, 0, 100000}, "FT0A amplitude"};
75+
ConfigurableAxis axisMultFT0C{"axisMultFT0C", {1000, 0, 100000}, "FT0C amplitude"};
76+
ConfigurableAxis axisMultFDDA{"axisMultFDDA", {1000, 0, 100000}, "FDDA amplitude"};
77+
ConfigurableAxis axisMultFDDC{"axisMultFDDC", {1000, 0, 100000}, "FDDC amplitude"};
7078
ConfigurableAxis axisMultPVContributors{"axisMultPVContributors", {200, 0, 6000}, "Number of PV Contributors"};
7179

7280
// For one-dimensional plots, where binning is no issue
@@ -86,6 +94,8 @@ struct centralityStudy {
8694
// For profile Z
8795
ConfigurableAxis axisPVz{"axisPVz", {400, -20.0f, +20.0f}, "PVz (cm)"};
8896

97+
ConfigurableAxis axisZN{"axisZN", {1100, -50.0f, +500.0f}, "ZN"};
98+
8999
void init(InitContext&)
90100
{
91101
if (doprocessCollisions || doprocessCollisionsWithCentrality) {
@@ -124,11 +134,20 @@ struct centralityStudy {
124134
histos.add("hFT0CvsPVz_BCs", "hFT0CvsPVz_BCs", kTProfile, {axisPVz});
125135

126136
histos.add("hVertexZ_BCvsCO", "hVertexZ_BCvsCO", kTH2D, {axisPVz, axisPVz});
137+
138+
histos.add("hZNAvsFT0C_BCs", "hZNAvsFT0C_BCs", kTH2D, {axisMultFT0C, axisZN});
139+
histos.add("hZNCvsFT0C_BCs", "hZNCvsFT0C_BCs", kTH2D, {axisMultFT0C, axisZN});
127140
}
128141

129142
if (do2DPlots) {
130-
histos.add("hFT0CvsNContribs", "hFT0CvsNContribs", kTH2F, {axisMultPVContributors, axisMultFT0C});
143+
histos.add("hNContribsVsFT0C", "hNContribsVsFT0C", kTH2F, {axisMultFT0C, axisMultPVContributors});
131144
histos.add("hMatchedVsITSOnly", "hMatchedVsITSOnly", kTH2F, {axisMultITSOnly, axisMultITSTPC});
145+
146+
// 2d correlation of fit signals
147+
histos.add("hFT0AVsFT0C", "hFT0AVsFT0C", kTH2F, {axisMultFT0C, axisMultFT0A});
148+
histos.add("hFV0AVsFT0C", "hFV0AVsFT0C", kTH2F, {axisMultFT0C, axisMultFV0A});
149+
histos.add("hFDDAVsFT0C", "hFDDAVsFT0C", kTH2F, {axisMultFT0C, axisMultFDDA});
150+
histos.add("hFDDCVsFT0C", "hFDDCVsFT0C", kTH2F, {axisMultFT0C, axisMultFDDC});
132151
}
133152

134153
if (doprocessCollisionsWithCentrality) {
@@ -225,6 +244,13 @@ struct centralityStudy {
225244
}
226245
histos.fill(HIST("hCollisionSelection"), 14 /* Not ITS ROF pileup (strict) */);
227246

247+
if (collision.multFT0C() < maxFT0CforZNACselection &&
248+
collision.multZNA() < minZNACsignal &&
249+
collision.multZNC() < minZNACsignal) {
250+
return;
251+
}
252+
histos.fill(HIST("hCollisionSelection"), 15 /* pass em/upc rejection */);
253+
228254
// if we got here, we also finally fill the FT0C histogram, please
229255
histos.fill(HIST("hNPVContributors"), collision.multPVTotalContributors());
230256
histos.fill(HIST("hFT0C_Collisions"), collision.multFT0C() * scaleSignalFT0C);
@@ -235,8 +261,14 @@ struct centralityStudy {
235261
histos.fill(HIST("hFT0CvsPVz_Collisions"), collision.multPVz(), collision.multFT0C() * scaleSignalFT0C);
236262
}
237263
if (do2DPlots) {
238-
histos.fill(HIST("hFT0CvsNContribs"), collision.multNTracksPV(), collision.multFT0C() * scaleSignalFT0C);
264+
histos.fill(HIST("hNContribsVsFT0C"), collision.multFT0C() * scaleSignalFT0C, collision.multPVTotalContributors());
239265
histos.fill(HIST("hMatchedVsITSOnly"), collision.multNTracksITSOnly(), collision.multNTracksITSTPC());
266+
267+
// correlate also FIT detector signals
268+
histos.fill(HIST("hFT0AVsFT0C"), collision.multFT0C() * scaleSignalFT0C, collision.multFT0A());
269+
histos.fill(HIST("hFV0AVsFT0C"), collision.multFT0C() * scaleSignalFT0C, collision.multFV0A());
270+
histos.fill(HIST("hFDDAVsFT0C"), collision.multFT0C() * scaleSignalFT0C, collision.multFDDA());
271+
histos.fill(HIST("hFDDCVsFT0C"), collision.multFT0C() * scaleSignalFT0C, collision.multFDDC());
240272
}
241273

242274
// if the table has centrality information
@@ -288,8 +320,20 @@ struct centralityStudy {
288320
}
289321
histos.fill(HIST("hBCSelection"), 4); // FV0OrA
290322

323+
if (multbc.multBCFT0C() < maxFT0CforZNACselection &&
324+
multbc.multBCZNA() < minZNACsignal &&
325+
multbc.multBCZNC() < minZNACsignal) {
326+
return;
327+
}
328+
histos.fill(HIST("hBCSelection"), 5); // znac
329+
291330
// if we got here, we also finally fill the FT0C histogram, please
292331
histos.fill(HIST("hFT0C_BCs"), multbc.multBCFT0C() * scaleSignalFT0C);
332+
333+
// ZN signals
334+
histos.fill(HIST("hZNAvsFT0C_BCs"), multbc.multBCFT0C() * scaleSignalFT0C, multbc.multBCZNA());
335+
histos.fill(HIST("hZNCvsFT0C_BCs"), multbc.multBCFT0C() * scaleSignalFT0C, multbc.multBCZNC());
336+
293337
histos.fill(HIST("hFT0M_BCs"), (multbc.multBCFT0A() + multbc.multBCFT0C()) * scaleSignalFT0M);
294338
histos.fill(HIST("hFV0A_BCs"), multbc.multBCFV0A() * scaleSignalFV0A);
295339
if (multbc.multBCFT0PosZValid()) {

0 commit comments

Comments
 (0)