1616// / \author Alberto Caliva (alberto.caliva@cern.ch), Francesca Ercolessi (francesca.ercolessi@cern.ch)
1717// / \since May 31, 2024
1818
19- #include < TMath.h>
20- #include < TObjArray.h>
21- #include < TPDGCode.h>
22- #include < TVector2.h>
23- #include < TVector3.h>
24- #include < cmath>
25- #include < vector>
26- #include < algorithm>
19+ #include " PWGLF/DataModel/LFStrangenessTables.h"
2720
2821#include " Common/Core/RecoDecay.h"
22+ #include " Common/Core/TrackSelection.h"
2923#include " Common/Core/trackUtilities.h"
3024#include " Common/DataModel/EventSelection.h"
31- #include " Common/DataModel/PIDResponse.h"
3225#include " Common/DataModel/Multiplicity.h"
33- #include " Common/Core/TrackSelection .h"
26+ #include " Common/DataModel/PIDResponse .h"
3427#include " Common/DataModel/TrackSelectionTables.h"
28+ #include " EventFiltering/Zorro.h"
29+ #include " EventFiltering/ZorroSummary.h"
30+
31+ #include " CCDB/BasicCCDBManager.h"
32+ #include " CCDB/CcdbApi.h"
3533#include " Framework/ASoA.h"
3634#include " Framework/ASoAHelpers.h"
3735#include " Framework/AnalysisDataModel.h"
3836#include " Framework/AnalysisTask.h"
3937#include " Framework/runDataProcessing.h"
40- #include " PWGLF/DataModel/LFStrangenessTables.h"
41- #include " ReconstructionDataFormats/Track.h"
4238#include " ReconstructionDataFormats/DCA.h"
39+ #include " ReconstructionDataFormats/Track.h"
40+
41+ #include < TMath.h>
42+ #include < TObjArray.h>
43+ #include < TPDGCode.h>
44+ #include < TVector2.h>
45+ #include < TVector3.h>
46+
47+ #include < algorithm>
48+ #include < cmath>
49+ #include < string>
50+ #include < vector>
4351
4452using namespace std ;
4553using namespace o2 ;
@@ -54,6 +62,12 @@ using FullTracks = soa::Join<aod::Tracks, aod::TracksIU, aod::TracksExtra, aod::
5462
5563struct TrackedCascadeProperties {
5664
65+ Service<o2::ccdb::BasicCCDBManager> ccdb;
66+ o2::ccdb::CcdbApi ccdbApi;
67+
68+ Zorro zorro;
69+ OutputObj<ZorroSummary> zorroSummary{" zorroSummary" };
70+
5771 // QC Histograms
5872 HistogramRegistry registryQC{
5973 " registryQC" ,
@@ -72,15 +86,28 @@ struct TrackedCascadeProperties {
7286
7387 // Global Parameters
7488 Configurable<float > zVtx{" zVtx" , 10 .0f , " z vertex cut" };
89+ Configurable<bool > cfgSkimmedProcessing{" cfgSkimmedProcessing" , false , " Skimmed dataset processing" };
90+ Configurable<std::string> cfgTriggerName{" cfgTriggerName" , " fOmega" , " trigger Name" };
7591
7692 // Mass Cuts
7793 Configurable<float > massMinXi{" massMinXi" , 1 .315f , " mMin Xi" };
7894 Configurable<float > massMaxXi{" massMaxXi" , 1 .328f , " mMax Xi" };
7995 Configurable<float > massMinOmega{" massMinOmega" , 1 .665f , " mMin Omega" };
8096 Configurable<float > massMaxOmega{" massMaxOmega" , 1 .680f , " mMax Omega" };
8197
98+ void initCCDB (aod::BCsWithTimestamps::iterator const & bc)
99+ {
100+ if (cfgSkimmedProcessing) {
101+ zorro.initCCDB (ccdb.service , bc.runNumber (), bc.timestamp (), cfgTriggerName.value );
102+ }
103+ }
104+
82105 void init (InitContext const &)
83106 {
107+ if (cfgSkimmedProcessing) {
108+ zorroSummary.setObject (zorro.getZorroSummary ());
109+ }
110+
84111 registryQC.add (" matchingChi2" , " matching Chi2" , HistType::kTH1F , {{200 , 0 , 1000 , " #chi^{2}_{matching}" }});
85112 registryQC.add (" topologyChi2" , " topology Chi2" , HistType::kTH1F , {{500 , 0 , 0.5 , " #chi^{2}_{topology}" }});
86113 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 +136,17 @@ struct TrackedCascadeProperties {
109136 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)" }});
110137 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)" }});
111138
139+ // Cluster size using truncated mean
140+ 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)" }});
141+ 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)" }});
142+ 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)" }});
143+ 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)" }});
144+
145+ 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)" }});
146+ 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)" }});
147+ 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)" }});
148+ 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)" }});
149+
112150 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})" }});
113151 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})" }});
114152 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 +178,22 @@ struct TrackedCascadeProperties {
140178 aod::Cascades const &, FullTracks const &)
141179 {
142180 registryData.fill (HIST (" number_of_events_data" ), 0.5 );
181+
182+ auto bc = collision.template bc_as <aod::BCsWithTimestamps>();
183+ initCCDB (bc);
184+ if (cfgSkimmedProcessing && !zorro.isSelected (collision.template bc_as <aod::BCsWithTimestamps>().globalBC ())) {
185+ return ;
186+ }
187+ registryData.fill (HIST (" number_of_events_data" ), 1.5 );
188+
143189 if (!collision.sel8 ())
144190 return ;
145191
146- registryData.fill (HIST (" number_of_events_data" ), 1 .5 );
192+ registryData.fill (HIST (" number_of_events_data" ), 2 .5 );
147193 if (std::abs (collision.posZ ()) > zVtx)
148194 return ;
149195
150- registryData.fill (HIST (" number_of_events_data" ), 2 .5 );
196+ registryData.fill (HIST (" number_of_events_data" ), 3 .5 );
151197
152198 std::vector<double > edgesItsLayers = {0.0 , 2.2 , 2.8 , 3.6 , 20.0 , 22.0 , 37.0 , 39.0 , 100.0 };
153199
@@ -188,6 +234,28 @@ struct TrackedCascadeProperties {
188234 }
189235 averageClusterSize = averageClusterSize / static_cast <double >(nCls);
190236
237+ // Average cluster size using truncated mean
238+ double averageClusterSizeTrunc = 0.0 ;
239+ int nClsTrunc = 0 ;
240+ double clusterSizeMax = 0.0 ;
241+
242+ for (int i = 0 ; i < nClsCascade; i++) {
243+ double clusterSize = static_cast <double >(trackITS.itsClsSizeInLayer (i));
244+ if (clusterSize > clusterSizeMax) {
245+ clusterSizeMax = clusterSize;
246+ }
247+
248+ averageClusterSizeTrunc += clusterSize;
249+ if (clusterSize > 0 )
250+ nClsTrunc++;
251+ }
252+
253+ if (nClsTrunc > 1 ) {
254+ averageClusterSizeTrunc = (averageClusterSizeTrunc - clusterSizeMax) / static_cast <double >(nClsTrunc - 1 );
255+ } else {
256+ averageClusterSizeTrunc = 0.0 ;
257+ }
258+
191259 registryQC.fill (HIST (" deltaNclsITS_track" ), nCls - track.itsNCls ());
192260 registryQC.fill (HIST (" deltaNclsITS_itstrack" ), nCls - trackITS.itsNCls ());
193261
@@ -209,11 +277,15 @@ struct TrackedCascadeProperties {
209277 registryData.fill (HIST (" xi_pos_avgclustersize" ), track.p (), averageClusterSize, track.eta ());
210278 registryData.fill (HIST (" xi_pos_avgclustersize_cosL" ), track.p (), averageClusterSize * std::cos (lambda));
211279 registryData.fill (HIST (" xi_pos_avgclustersize_cosL_vs_betagamma" ), track.p () / o2::constants::physics::MassXiPlusBar, averageClusterSize * std::cos (lambda));
280+ registryData.fill (HIST (" xi_pos_avgclustersize_trunc_cosL" ), track.p (), averageClusterSizeTrunc * std::cos (lambda));
281+ registryData.fill (HIST (" xi_pos_avgclustersize_trunc_cosL_vs_betagamma" ), track.p () / o2::constants::physics::MassXiPlusBar, averageClusterSizeTrunc * std::cos (lambda));
212282 }
213283 if (btrack.sign () < 0 ) {
214284 registryData.fill (HIST (" xi_neg_avgclustersize" ), track.p (), averageClusterSize, track.eta ());
215285 registryData.fill (HIST (" xi_neg_avgclustersize_cosL" ), track.p (), averageClusterSize * std::cos (lambda));
216286 registryData.fill (HIST (" xi_neg_avgclustersize_cosL_vs_betagamma" ), track.p () / o2::constants::physics::MassXiMinus, averageClusterSize * std::cos (lambda));
287+ registryData.fill (HIST (" xi_neg_avgclustersize_trunc_cosL" ), track.p (), averageClusterSizeTrunc * std::cos (lambda));
288+ registryData.fill (HIST (" xi_neg_avgclustersize_trunc_cosL_vs_betagamma" ), track.p () / o2::constants::physics::MassXiPlusBar, averageClusterSizeTrunc * std::cos (lambda));
217289 }
218290 continue ;
219291 }
@@ -233,11 +305,15 @@ struct TrackedCascadeProperties {
233305 registryData.fill (HIST (" omega_pos_avgclustersize" ), track.p (), averageClusterSize, track.eta ());
234306 registryData.fill (HIST (" omega_pos_avgclustersize_cosL" ), track.p (), averageClusterSize * std::cos (lambda));
235307 registryData.fill (HIST (" omega_pos_avgclustersize_cosL_vs_betagamma" ), track.p () / o2::constants::physics::MassOmegaPlusBar, averageClusterSize * std::cos (lambda));
308+ registryData.fill (HIST (" omega_pos_avgclustersize_trunc_cosL" ), track.p (), averageClusterSizeTrunc * std::cos (lambda));
309+ registryData.fill (HIST (" omega_pos_avgclustersize_trunc_cosL_vs_betagamma" ), track.p () / o2::constants::physics::MassXiPlusBar, averageClusterSizeTrunc * std::cos (lambda));
236310 }
237311 if (btrack.sign () < 0 ) {
238312 registryData.fill (HIST (" omega_neg_avgclustersize" ), track.p (), averageClusterSize, track.eta ());
239313 registryData.fill (HIST (" omega_neg_avgclustersize_cosL" ), track.p (), averageClusterSize * std::cos (lambda));
240314 registryData.fill (HIST (" omega_neg_avgclustersize_cosL_vs_betagamma" ), track.p () / o2::constants::physics::MassOmegaMinus, averageClusterSize * std::cos (lambda));
315+ registryData.fill (HIST (" omega_neg_avgclustersize_trunc_cosL" ), track.p (), averageClusterSizeTrunc * std::cos (lambda));
316+ registryData.fill (HIST (" omega_neg_avgclustersize_trunc_cosL_vs_betagamma" ), track.p () / o2::constants::physics::MassXiPlusBar, averageClusterSizeTrunc * std::cos (lambda));
241317 }
242318 }
243319 }
0 commit comments