Skip to content

Commit f063208

Browse files
committed
[PWGLF] add truncated mean histograms and configurable to run on skimmed data
1 parent 1b12a5e commit f063208

File tree

1 file changed

+81
-3
lines changed

1 file changed

+81
-3
lines changed

PWGLF/Tasks/QC/trackedCascadeProperties.cxx

Lines changed: 81 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,8 @@
2424
#include <cmath>
2525
#include <vector>
2626
#include <algorithm>
27-
27+
#include "CCDB/BasicCCDBManager.h"
28+
#include "CCDB/CcdbApi.h"
2829
#include "Common/Core/RecoDecay.h"
2930
#include "Common/Core/trackUtilities.h"
3031
#include "Common/DataModel/EventSelection.h"
@@ -41,6 +42,9 @@
4142
#include "ReconstructionDataFormats/Track.h"
4243
#include "ReconstructionDataFormats/DCA.h"
4344

45+
#include "EventFiltering/Zorro.h"
46+
#include "EventFiltering/ZorroSummary.h"
47+
4448
using namespace std;
4549
using namespace o2;
4650
using namespace o2::framework;
@@ -54,6 +58,12 @@ using FullTracks = soa::Join<aod::Tracks, aod::TracksIU, aod::TracksExtra, aod::
5458

5559
struct TrackedCascadeProperties {
5660

61+
Service<o2::ccdb::BasicCCDBManager> ccdb;
62+
o2::ccdb::CcdbApi ccdbApi;
63+
64+
Zorro zorro;
65+
OutputObj<ZorroSummary> zorroSummary{"zorroSummary"};
66+
5767
// QC Histograms
5868
HistogramRegistry registryQC{
5969
"registryQC",
@@ -72,15 +82,34 @@ struct TrackedCascadeProperties {
7282

7383
// Global Parameters
7484
Configurable<float> zVtx{"zVtx", 10.0f, "z vertex cut"};
85+
Configurable<bool> cfgSkimmedProcessing{"cfgSkimmedProcessing", false, "Skimmed dataset processing"};
86+
Configurable<std::string> cfgTriggerName{"cfgTriggerName", "fOmega", "trigger Name"};
7587

7688
// Mass Cuts
7789
Configurable<float> massMinXi{"massMinXi", 1.315f, "mMin Xi"};
7890
Configurable<float> massMaxXi{"massMaxXi", 1.328f, "mMax Xi"};
7991
Configurable<float> massMinOmega{"massMinOmega", 1.665f, "mMin Omega"};
8092
Configurable<float> massMaxOmega{"massMaxOmega", 1.680f, "mMax Omega"};
8193

94+
void initCCDB(aod::BCsWithTimestamps::iterator const& bc)
95+
{
96+
if (cfgSkimmedProcessing) {
97+
zorro.initCCDB(ccdb.service, bc.runNumber(), bc.timestamp(), cfgTriggerName.c_str());
98+
}
99+
}
100+
82101
void init(InitContext const&)
83102
{
103+
if (cfgSkimmedProcessing) {
104+
zorroSummary.setObject(zorro.getZorroSummary());
105+
}
106+
107+
ccdb->setURL(urlToCcdb.value);
108+
ccdb->setCaching(true);
109+
ccdb->setLocalObjectValidityChecking();
110+
ccdb->setCreatedNotAfter(std::chrono::duration_cast<std::chrono::milliseconds>(std::chrono::system_clock::now().time_since_epoch()).count());
111+
ccdb->setFatalWhenNull(false);
112+
84113
registryQC.add("matchingChi2", "matching Chi2", HistType::kTH1F, {{200, 0, 1000, "#chi^{2}_{matching}"}});
85114
registryQC.add("topologyChi2", "topology Chi2", HistType::kTH1F, {{500, 0, 0.5, "#chi^{2}_{topology}"}});
86115
registryQC.add("nITScls_vs_p_xi", "nITS Xi", HistType::kTH2F, {{100, 0, 10, "#it{p} (GeV/#it{c})"}, {8, 0, 8, "n_{ITS}^{cls}"}});
@@ -109,6 +138,17 @@ struct TrackedCascadeProperties {
109138
registryData.add("omega_pos_avgclustersize_cosL_vs_betagamma", "omega_pos_avgclustersize_cosL_vs_betagamma", HistType::kTH2F, {{200, 0.0, 10.0, "#beta#gamma"}, {100, 0.0, 20.0, "#LT ITS cluster size #GT cos(#lambda)"}});
110139
registryData.add("omega_neg_avgclustersize_cosL_vs_betagamma", "omega_neg_avgclustersize_cosL_vs_betagamma", HistType::kTH2F, {{200, 0.0, 10.0, "#beta#gamma"}, {100, 0.0, 20.0, "#LT ITS cluster size #GT cos(#lambda)"}});
111140

141+
// Cluster size using truncated mean
142+
registryData.add("xi_pos_avgclustersize_trunc_cosL", "xi_pos_avgclustersize_trunc_cosL", HistType::kTH2F, {{100, 0.0, 10.0, "#it{p} (GeV/#it{c})"}, {100, 0.0, 20.0, "#LT ITS cluster size #GT cos(#lambda)"}});
143+
registryData.add("xi_neg_avgclustersize_trunc_cosL", "xi_neg_avgclustersize_trunc_cosL", HistType::kTH2F, {{100, 0.0, 10.0, "#it{p} (GeV/#it{c})"}, {100, 0.0, 20.0, "#LT ITS cluster size #GT cos(#lambda)"}});
144+
registryData.add("omega_pos_avgclustersize_trunc_cosL", "omega_pos_avgclustersize_trunc_cosL", HistType::kTH2F, {{100, 0.0, 10.0, "#it{p} (GeV/#it{c})"}, {100, 0.0, 20.0, "#LT ITS cluster size #GT cos(#lambda)"}});
145+
registryData.add("omega_neg_avgclustersize_trunc_cosL", "omega_neg_avgclustersize_trunc_cosL", HistType::kTH2F, {{100, 0.0, 10.0, "#it{p} (GeV/#it{c})"}, {100, 0.0, 20.0, "#LT ITS cluster size #GT cos(#lambda)"}});
146+
147+
registryData.add("xi_pos_avgclustersize_trunc_cosL_vs_betagamma", "xi_pos_avgclustersize_trunc_cosL_vs_betagamma", HistType::kTH2F, {{200, 0.0, 10.0, "#beta#gamma"}, {100, 0.0, 20.0, "#LT ITS cluster size #GT cos(#lambda)"}});
148+
registryData.add("xi_neg_avgclustersize_trunc_cosL_vs_betagamma", "xi_neg_avgclustersize_trunc_cosL_vs_betagamma", HistType::kTH2F, {{200, 0.0, 10.0, "#beta#gamma"}, {100, 0.0, 20.0, "#LT ITS cluster size #GT cos(#lambda)"}});
149+
registryData.add("omega_pos_avgclustersize_trunc_cosL_vs_betagamma", "omega_pos_avgclustersize_trunc_cosL_vs_betagamma", HistType::kTH2F, {{200, 0.0, 10.0, "#beta#gamma"}, {100, 0.0, 20.0, "#LT ITS cluster size #GT cos(#lambda)"}});
150+
registryData.add("omega_neg_avgclustersize_trunc_cosL_vs_betagamma", "omega_neg_avgclustersize_trunc_cosL_vs_betagamma", HistType::kTH2F, {{200, 0.0, 10.0, "#beta#gamma"}, {100, 0.0, 20.0, "#LT ITS cluster size #GT cos(#lambda)"}});
151+
112152
registryData.add("xi_mass_pos", "xi_mass_pos", HistType::kTH2F, {{100, 0.0, 10.0, "#it{p} (GeV/#it{c})"}, {200, 1.28, 1.36, "m_{p#pi#pi} (GeV/#it{c}^{2})"}});
113153
registryData.add("xi_mass_neg", "xi_mass_neg", HistType::kTH2F, {{100, 0.0, 10.0, "#it{p} (GeV/#it{c})"}, {200, 1.28, 1.36, "m_{p#pi#pi} (GeV/#it{c}^{2})"}});
114154
registryData.add("omega_mass_pos", "omega_mass_pos", HistType::kTH2F, {{100, 0.0, 10.0, "#it{p} (GeV/#it{c})"}, {200, 1.63, 1.71, "m_{p#piK} (GeV/#it{c}^{2})"}});
@@ -140,14 +180,22 @@ struct TrackedCascadeProperties {
140180
aod::Cascades const&, FullTracks const&)
141181
{
142182
registryData.fill(HIST("number_of_events_data"), 0.5);
183+
184+
auto bc = collision.template bc_as<aod::BCsWithTimestamps>();
185+
initCCDB(bc);
186+
if (cfgSkimmedProcessing && !zorro.isSelected(collision.template bc_as<aod::BCsWithTimestamps>().globalBC())) {
187+
return;
188+
}
189+
registryData.fill(HIST("number_of_events_data"), 1.5);
190+
143191
if (!collision.sel8())
144192
return;
145193

146-
registryData.fill(HIST("number_of_events_data"), 1.5);
194+
registryData.fill(HIST("number_of_events_data"), 2.5);
147195
if (std::abs(collision.posZ()) > zVtx)
148196
return;
149197

150-
registryData.fill(HIST("number_of_events_data"), 2.5);
198+
registryData.fill(HIST("number_of_events_data"), 3.5);
151199

152200
std::vector<double> edgesItsLayers = {0.0, 2.2, 2.8, 3.6, 20.0, 22.0, 37.0, 39.0, 100.0};
153201

@@ -188,6 +236,28 @@ struct TrackedCascadeProperties {
188236
}
189237
averageClusterSize = averageClusterSize / static_cast<double>(nCls);
190238

239+
// Average cluster size using truncated mean
240+
double averageClusterSizeTrunc = 0.0;
241+
int nClsTrunc = 0;
242+
double clusterSizeMax = 0.0;
243+
244+
for (int i = 0; i < nClsCascade; i++) {
245+
double clusterSize = static_cast<double>(trackITS.itsClsSizeInLayer(i));
246+
if (clusterSize > clusterSizeMax) {
247+
clusterSizeMax = clusterSize;
248+
}
249+
250+
averageClusterSizeTrunc += clusterSize;
251+
if (clusterSize > 0)
252+
nClsTrunc++;
253+
}
254+
255+
if (nClsTrunc > 1) {
256+
averageClusterSizeTrunc = (averageClusterSizeTrunc - clusterSizeMax) / static_cast<double>(nClsTrunc - 1);
257+
} else {
258+
averageClusterSizeTrunc = 0.0;
259+
}
260+
191261
registryQC.fill(HIST("deltaNclsITS_track"), nCls - track.itsNCls());
192262
registryQC.fill(HIST("deltaNclsITS_itstrack"), nCls - trackITS.itsNCls());
193263

@@ -209,11 +279,15 @@ struct TrackedCascadeProperties {
209279
registryData.fill(HIST("xi_pos_avgclustersize"), track.p(), averageClusterSize, track.eta());
210280
registryData.fill(HIST("xi_pos_avgclustersize_cosL"), track.p(), averageClusterSize * std::cos(lambda));
211281
registryData.fill(HIST("xi_pos_avgclustersize_cosL_vs_betagamma"), track.p() / o2::constants::physics::MassXiPlusBar, averageClusterSize * std::cos(lambda));
282+
registryData.fill(HIST("xi_pos_avgclustersize_trunc_cosL"), track.p(), averageClusterSizeTrunc * std::cos(lambda));
283+
registryData.fill(HIST("xi_pos_avgclustersize_trunc_cosL_vs_betagamma"), track.p() / o2::constants::physics::MassXiPlusBar, averageClusterSizeTrunc * std::cos(lambda));
212284
}
213285
if (btrack.sign() < 0) {
214286
registryData.fill(HIST("xi_neg_avgclustersize"), track.p(), averageClusterSize, track.eta());
215287
registryData.fill(HIST("xi_neg_avgclustersize_cosL"), track.p(), averageClusterSize * std::cos(lambda));
216288
registryData.fill(HIST("xi_neg_avgclustersize_cosL_vs_betagamma"), track.p() / o2::constants::physics::MassXiMinus, averageClusterSize * std::cos(lambda));
289+
registryData.fill(HIST("xi_neg_avgclustersize_trunc_cosL"), track.p(), averageClusterSizeTrunc * std::cos(lambda));
290+
registryData.fill(HIST("xi_neg_avgclustersize_trunc_cosL_vs_betagamma"), track.p() / o2::constants::physics::MassXiPlusBar, averageClusterSizeTrunc * std::cos(lambda));
217291
}
218292
continue;
219293
}
@@ -233,11 +307,15 @@ struct TrackedCascadeProperties {
233307
registryData.fill(HIST("omega_pos_avgclustersize"), track.p(), averageClusterSize, track.eta());
234308
registryData.fill(HIST("omega_pos_avgclustersize_cosL"), track.p(), averageClusterSize * std::cos(lambda));
235309
registryData.fill(HIST("omega_pos_avgclustersize_cosL_vs_betagamma"), track.p() / o2::constants::physics::MassOmegaPlusBar, averageClusterSize * std::cos(lambda));
310+
registryData.fill(HIST("omega_pos_avgclustersize_trunc_cosL"), track.p(), averageClusterSizeTrunc * std::cos(lambda));
311+
registryData.fill(HIST("omega_pos_avgclustersize_trunc_cosL_vs_betagamma"), track.p() / o2::constants::physics::MassXiPlusBar, averageClusterSizeTrunc * std::cos(lambda));
236312
}
237313
if (btrack.sign() < 0) {
238314
registryData.fill(HIST("omega_neg_avgclustersize"), track.p(), averageClusterSize, track.eta());
239315
registryData.fill(HIST("omega_neg_avgclustersize_cosL"), track.p(), averageClusterSize * std::cos(lambda));
240316
registryData.fill(HIST("omega_neg_avgclustersize_cosL_vs_betagamma"), track.p() / o2::constants::physics::MassOmegaMinus, averageClusterSize * std::cos(lambda));
317+
registryData.fill(HIST("omega_neg_avgclustersize_trunc_cosL"), track.p(), averageClusterSizeTrunc * std::cos(lambda));
318+
registryData.fill(HIST("omega_neg_avgclustersize_trunc_cosL_vs_betagamma"), track.p() / o2::constants::physics::MassXiPlusBar, averageClusterSizeTrunc * std::cos(lambda));
241319
}
242320
}
243321
}

0 commit comments

Comments
 (0)