@@ -109,6 +109,10 @@ struct strangenessFilter {
109109 Configurable<bool > sel7{" sel7" , 0 , " Apply sel7 event selection" };
110110 Configurable<bool > sel8{" sel8" , 0 , " Apply sel8 event selection" };
111111 Configurable<int > LowLimitFT0MMult{" LowLimitFT0MMult" , 3100 , " FT0M selection for omega + high multiplicity trigger" };
112+ Configurable<int > LowLimitFT0MMultNorm{" LowLimitFT0MMultNorm" , 70 , " FT0M selection for omega + high multiplicity trigger with Normalised FT0M" };
113+ Configurable<bool > useNormalisedMult{" useNormalisedMult" , 1 , " Use avarage multiplicity for HM omega like in multFilter.cxx" };
114+ Configurable<float > avPyT0C{" avPyT0C" , 8.83 , " nch from pythia T0C" };
115+ Configurable<float > avPyT0A{" avPyT0A" , 8.16 , " nch from pythia T0A" };
112116 Configurable<bool > isTimeFrameBorderCut{" isTimeFrameBorderCut" , 1 , " Apply timeframe border cut" };
113117 Configurable<bool > useSigmaBasedMassCutXi{" useSigmaBasedMassCutXi" , true , " Mass window based on n*sigma instead of fixed" };
114118 Configurable<bool > useSigmaBasedMassCutOmega{" useSigmaBasedMassCutOmega" , true , " Mass window based on n*sigma instead of fixed" };
@@ -221,6 +225,7 @@ struct strangenessFilter {
221225 std::vector<double > centBinning = {0 ., 1 ., 5 ., 10 ., 20 ., 30 ., 40 ., 50 ., 70 ., 100 .};
222226 AxisSpec multAxisNTPV = {100 , 0 .0f , 100 .0f , " N. tracks PV estimator" };
223227 AxisSpec multAxisT0M = {600 , 0 .0f , 6000 .0f , " T0M multiplicity estimator" };
228+ AxisSpec multAxisT0MNorm = {150 , 0 .0f , 150 .0f , " Normalised T0M multiplicity estimator" };
224229 AxisSpec multAxisV0A = {500 , 0 .0f , 25000 .0f , " V0A multiplicity estimator" };
225230 AxisSpec ximassAxis = {200 , 1 .28f , 1 .36f };
226231 AxisSpec omegamassAxis = {200 , 1 .59f , 1 .75f };
@@ -282,6 +287,10 @@ struct strangenessFilter {
282287
283288 EventsvsMultiplicity.add (" AllEventsvsMultiplicityFT0M" , " T0M distribution of all events" , HistType::kTH1F , {multAxisT0M});
284289 EventsvsMultiplicity.add (" AllEventsvsMultiplicityFT0MwOmega" , " T0M distribution of events w/ Omega candidate" , HistType::kTH1F , {multAxisT0M});
290+ EventsvsMultiplicity.add (" AllEventsvsMultiplicityFT0MNorm" , " T0M Normalised of all events" , HistType::kTH1F , {multAxisT0MNorm});
291+ EventsvsMultiplicity.add (" AllEventsvsMultiplicityFT0MwOmegaNorm" , " T0M distribution of events w/ Omega candidate - Normalised FT0M" , HistType::kTH1F , {multAxisT0MNorm});
292+ EventsvsMultiplicity.add (" AllEventsvsMultiplicityFT0MNoFT0" , " T0M distribution of events without FT0" , HistType::kTH1F , {multAxisT0M});
293+
285294 if (doextraQA) {
286295 EventsvsMultiplicity.add (" AllEventsvsMultiplicityZeqV0A" , " ZeqV0A distribution of all events" , HistType::kTH1F , {multAxisV0A});
287296 EventsvsMultiplicity.add (" hadEventsvsMultiplicityZeqV0A" , " ZeqV0A distribution of events with hight pT hadron" , HistType::kTH1F , {multAxisV0A});
@@ -409,7 +418,7 @@ struct strangenessFilter {
409418 }
410419
411420 void process (CollisionCandidatesRun3 const & collision, TrackCandidates const & tracks, Cascades const & fullCasc, DaughterTracks& /* dtracks*/ ,
412- aod::AssignedTrackedCascades const & trackedCascades, aod::Cascades const & /* cascades*/ , aod::AssignedTrackedV0s const & /* trackedV0s*/ , aod::AssignedTracked3Bodys const & /* tracked3Bodys*/ , aod::V0s const &, aod::BCsWithTimestamps const &)
421+ aod::AssignedTrackedCascades const & trackedCascades, aod::Cascades const & /* cascades*/ , aod::AssignedTrackedV0s const & /* trackedV0s*/ , aod::AssignedTracked3Bodys const & /* tracked3Bodys*/ , aod::V0s const &, aod::BCsWithTimestamps const &, aod::FT0s const & /* ft0s */ )
413422 {
414423 // Is event good? [0] = Omega, [1] = high-pT hadron + Omega, [2] = 2Xi, [3] = 3Xi, [4] = 4Xi, [5] single-Xi, [6] Omega with high radius
415424 // [7] tracked Xi, [8] tracked Omega, [9] Omega + high mult event
@@ -442,9 +451,66 @@ struct strangenessFilter {
442451 }
443452
444453 Bool_t isHighMultEvent = 0 ;
454+ float multFT0MNorm = 0 .f ;
445455 EventsvsMultiplicity.fill (HIST (" AllEventsvsMultiplicityFT0M" ), collision.multFT0M ());
446- if (collision.multFT0M () > LowLimitFT0MMult)
447- isHighMultEvent = 1 ;
456+ if (!useNormalisedMult) {
457+ if (collision.multFT0M () > LowLimitFT0MMult) {
458+ isHighMultEvent = 1 ;
459+ }
460+ } else {
461+ auto bc = collision.template bc_as <aod::BCsWithTimestamps>();
462+ float meanMultT0C = 0 .f ;
463+ float fac_FT0C_ebe = 1 .;
464+ auto vMeanMultT0C = ccdb->getForTimeStamp <std::vector<double >>(" Users/e/ekryshen/meanT0C" , bc.timestamp ());
465+ meanMultT0C = (*vMeanMultT0C)[0 ];
466+ if (meanMultT0C > 0 ) {
467+ fac_FT0C_ebe = avPyT0C / meanMultT0C;
468+ }
469+ float meanMultT0A = 0 .f ;
470+ auto vMeanMultT0A = ccdb->getForTimeStamp <std::vector<double >>(" Users/e/ekryshen/meanT0A" , bc.timestamp ());
471+ meanMultT0A = (*vMeanMultT0A)[0 ];
472+ float fac_FT0A_ebe = 1 .;
473+ if (meanMultT0A > 0 ) {
474+ fac_FT0A_ebe = avPyT0A / meanMultT0A;
475+ }
476+ LOG (debug) << " Mean mults t0:" << fac_FT0A_ebe << " " << fac_FT0C_ebe;
477+ if (collision.has_foundFT0 ()) {
478+ auto ft0 = collision.foundFT0 ();
479+ float sumAmpFT0C = 0 .f ;
480+ for (std::size_t i_c = 0 ; i_c < ft0.amplitudeC ().size (); i_c++) {
481+ float amplitude = ft0.amplitudeC ()[i_c];
482+ sumAmpFT0C += amplitude;
483+ }
484+ float sumAmpFT0A = 0 .f ;
485+ for (std::size_t i_a = 0 ; i_a < ft0.amplitudeA ().size (); i_a++) {
486+ float amplitude = ft0.amplitudeA ()[i_a];
487+ sumAmpFT0A += amplitude;
488+ }
489+ const int nEta5 = 2 ; // FT0C + FT0A
490+ float weigthsEta5[nEta5] = {0.0490638 , 0.010958415 };
491+ if (sumAmpFT0C >= 0 || sumAmpFT0A >= 0 ) {
492+ if (meanMultT0A > 0 && meanMultT0C > 0 ) {
493+ multFT0MNorm = sumAmpFT0C * fac_FT0C_ebe + sumAmpFT0A * fac_FT0A_ebe;
494+ } else {
495+ multFT0MNorm = sumAmpFT0C * weigthsEta5[0 ] + sumAmpFT0A * weigthsEta5[1 ];
496+ }
497+ LOG (info) << " meanMult:" << multFT0MNorm << " multFT0M:" << collision.multFT0M ();
498+ EventsvsMultiplicity.fill (HIST (" AllEventsvsMultiplicityFT0MNorm" ), multFT0MNorm);
499+ if (multFT0MNorm > LowLimitFT0MMultNorm) {
500+ isHighMultEvent = 1 ;
501+ LOG (info) << " Found FT0 using aver mult" ;
502+ }
503+ } else {
504+ LOG (warn) << " Found FT0 but, amplitudes are 0 ?" ;
505+ EventsvsMultiplicity.fill (HIST (" AllEventsvsMultiplicityFT0MNorm" ), 148 );
506+ EventsvsMultiplicity.fill (HIST (" AllEventsvsMultiplicityFT0MNoFT0" ), collision.multFT0M ());
507+ }
508+ } else {
509+ LOG (warn) << " FT0 not Found, using FT0M" ;
510+ EventsvsMultiplicity.fill (HIST (" AllEventsvsMultiplicityFT0MNorm" ), 149 );
511+ EventsvsMultiplicity.fill (HIST (" AllEventsvsMultiplicityFT0MNoFT0" ), collision.multFT0M ());
512+ }
513+ }
448514
449515 // constants
450516 const float ctauxi = 4.91 ; // from PDG
@@ -845,8 +911,10 @@ struct strangenessFilter {
845911 }
846912
847913 // Omega in high multiplicity events
848- if (omegacounter > 0 )
914+ if (omegacounter > 0 ) {
849915 EventsvsMultiplicity.fill (HIST (" AllEventsvsMultiplicityFT0MwOmega" ), collision.multFT0M ());
916+ EventsvsMultiplicity.fill (HIST (" AllEventsvsMultiplicityFT0MwOmegaNorm" ), multFT0MNorm);
917+ }
850918 if (omegacounter > 0 && isHighMultEvent) {
851919 keepEvent[9 ] = true ;
852920 }
0 commit comments