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"
4142#include " ReconstructionDataFormats/Track.h"
4243#include " ReconstructionDataFormats/DCA.h"
4344
45+ #include " EventFiltering/Zorro.h"
46+ #include " EventFiltering/ZorroSummary.h"
47+
4448using namespace std ;
4549using namespace o2 ;
4650using namespace o2 ::framework;
@@ -54,6 +58,12 @@ using FullTracks = soa::Join<aod::Tracks, aod::TracksIU, aod::TracksExtra, aod::
5458
5559struct 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