4747#include " MathUtils/Utils.h"
4848
4949#include " Math/Vector4D.h"
50- #include " TH1D.h"
5150#include " TString.h"
5251
5352#include < algorithm>
@@ -100,16 +99,18 @@ struct DileptonProducer {
10099 Configurable<int > cfgQvecEstimator{" cfgQvecEstimator" , 0 , " FT0M:0, FT0A:1, FT0C:2, BTot:3, BPos:4, BNeg:5" };
101100 Configurable<int > cfgCentEstimator{" cfgCentEstimator" , 2 , " FT0M:0, FT0A:1, FT0C:2" };
102101 Configurable<int > cfgOccupancyEstimator{" cfgOccupancyEstimator" , 0 , " FT0C:0, Track:1" };
103- Configurable<float > cfgCentMin{" cfgCentMin" , -1 , " min. centrality" };
104- Configurable<float > cfgCentMax{" cfgCentMax" , 999 .f , " max. centrality" };
105102 Configurable<bool > cfgApplyWeightTTCA{" cfgApplyWeightTTCA" , false , " flag to apply weighting by 1/N" };
106103 Configurable<uint> cfgDCAType{" cfgDCAType" , 0 , " type of DCA for output. 0:3D, 1:XY, 2:Z, else:3D" };
104+ Configurable<bool > cfgStoreULS{" cfgStoreULS" , true , " flag to store ULS pairs" };
105+ Configurable<bool > cfgStoreLS{" cfgStoreLS" , true , " flag to store LS pairs" };
107106
108107 EMEventCut fEMEventCut ;
109108 struct : ConfigurableGroup {
110109 std::string prefix = " eventcut_group" ;
111110 Configurable<float > cfgZvtxMin{" cfgZvtxMin" , -10 .f , " min. Zvtx" };
112111 Configurable<float > cfgZvtxMax{" cfgZvtxMax" , +10 .f , " max. Zvtx" };
112+ Configurable<float > cfgCentMin{" cfgCentMin" , -1 , " min. centrality" };
113+ Configurable<float > cfgCentMax{" cfgCentMax" , 999 .f , " max. centrality" };
113114 Configurable<bool > cfgRequireSel8{" cfgRequireSel8" , true , " require sel8 in event cut" };
114115 Configurable<bool > cfgRequireFT0AND{" cfgRequireFT0AND" , true , " require FT0AND in event cut" };
115116 Configurable<bool > cfgRequireNoTFB{" cfgRequireNoTFB" , false , " require No time frame border in event cut" };
@@ -535,7 +536,7 @@ struct DileptonProducer {
535536 return true ;
536537 }
537538
538- Filter collisionFilter_centrality = (cfgCentMin < o2::aod::cent::centFT0M && o2::aod::cent::centFT0M < cfgCentMax) || (cfgCentMin < o2::aod::cent::centFT0A && o2::aod::cent::centFT0A < cfgCentMax) || (cfgCentMin < o2::aod::cent::centFT0C && o2::aod::cent::centFT0C < cfgCentMax);
539+ Filter collisionFilter_centrality = (eventcuts. cfgCentMin < o2::aod::cent::centFT0M && o2::aod::cent::centFT0M < eventcuts. cfgCentMax) || (eventcuts. cfgCentMin < o2::aod::cent::centFT0A && o2::aod::cent::centFT0A < eventcuts. cfgCentMax) || (eventcuts. cfgCentMin < o2::aod::cent::centFT0C && o2::aod::cent::centFT0C < eventcuts. cfgCentMax);
539540 // Filter collisionFilter_numContrib = cfgNumContribMin <= o2::aod::collision::numContrib && o2::aod::collision::numContrib < cfgNumContribMax;
540541 Filter collisionFilter_occupancy_track = eventcuts.cfgTrackOccupancyMin <= o2::aod::evsel::trackOccupancyInTimeRange && o2::aod::evsel::trackOccupancyInTimeRange < eventcuts.cfgTrackOccupancyMax;
541542 Filter collisionFilter_occupancy_ft0c = eventcuts.cfgFT0COccupancyMin <= o2::aod::evsel::ft0cOccupancyInTimeRange && o2::aod::evsel::ft0cOccupancyInTimeRange < eventcuts.cfgFT0COccupancyMax;
@@ -580,7 +581,7 @@ struct DileptonProducer {
580581 initCCDB (collision);
581582 const float centralities[3 ] = {collision.centFT0M (), collision.centFT0A (), collision.centFT0C ()};
582583 // float centrality = centralities[cfgCentEstimator];
583- if (centralities[cfgCentEstimator] < cfgCentMin || cfgCentMax < centralities[cfgCentEstimator]) {
584+ if (centralities[cfgCentEstimator] < eventcuts. cfgCentMin || eventcuts. cfgCentMax < centralities[cfgCentEstimator]) {
584585 continue ;
585586 }
586587
@@ -598,22 +599,27 @@ struct DileptonProducer {
598599 auto negTracks_per_coll = negTracks.sliceByCached (perCollision, collision.globalIndex (), cache);
599600
600601 int nuls = 0 , nlspp = 0 , nlsmm = 0 ;
601- for (const auto & [pos, neg] : combinations (CombinationsFullIndexPolicy (posTracks_per_coll, negTracks_per_coll))) { // ULS
602- bool is_pair_ok = fillPairInfo (collision, pos, neg, cut, tracks);
603- if (is_pair_ok) {
604- nuls++;
602+
603+ if (cfgStoreULS) {
604+ for (const auto & [pos, neg] : combinations (CombinationsFullIndexPolicy (posTracks_per_coll, negTracks_per_coll))) { // ULS
605+ bool is_pair_ok = fillPairInfo (collision, pos, neg, cut, tracks);
606+ if (is_pair_ok) {
607+ nuls++;
608+ }
605609 }
606610 }
607- for (const auto & [pos1, pos2] : combinations (CombinationsStrictlyUpperIndexPolicy (posTracks_per_coll, posTracks_per_coll))) { // LS++
608- bool is_pair_ok = fillPairInfo (collision, pos1, pos2, cut, tracks);
609- if (is_pair_ok) {
610- nlspp++;
611+ if (cfgStoreLS) {
612+ for (const auto & [pos1, pos2] : combinations (CombinationsStrictlyUpperIndexPolicy (posTracks_per_coll, posTracks_per_coll))) { // LS++
613+ bool is_pair_ok = fillPairInfo (collision, pos1, pos2, cut, tracks);
614+ if (is_pair_ok) {
615+ nlspp++;
616+ }
611617 }
612- }
613- for ( const auto & [neg1, neg2] : combinations ( CombinationsStrictlyUpperIndexPolicy (negTracks_per_coll, negTracks_per_coll))) { // LS--
614- bool is_pair_ok = fillPairInfo (collision, neg1, neg2, cut, tracks);
615- if (is_pair_ok) {
616- nlsmm++;
618+ for ( const auto & [neg1, neg2] : combinations ( CombinationsStrictlyUpperIndexPolicy (negTracks_per_coll, negTracks_per_coll))) { // LS--
619+ bool is_pair_ok = fillPairInfo (collision, neg1, neg2, cut, tracks);
620+ if (is_pair_ok) {
621+ nlsmm++;
622+ }
617623 }
618624 }
619625
@@ -671,7 +677,7 @@ struct DileptonProducer {
671677 for (const auto & collision : collisions) {
672678 initCCDB (collision);
673679 const float centralities[3 ] = {collision.centFT0M (), collision.centFT0A (), collision.centFT0C ()};
674- if (centralities[cfgCentEstimator] < cfgCentMin || cfgCentMax < centralities[cfgCentEstimator]) {
680+ if (centralities[cfgCentEstimator] < eventcuts. cfgCentMin || eventcuts. cfgCentMax < centralities[cfgCentEstimator]) {
675681 continue ;
676682 }
677683
@@ -761,7 +767,7 @@ struct DileptonProducer {
761767 void processNorm (aod::EMEventNormInfos const & collisions)
762768 {
763769 for (const auto & collision : collisions) {
764- if (collision.centFT0C () < cfgCentMin || cfgCentMax < collision.centFT0C ()) {
770+ if (collision.centFT0C () < eventcuts. cfgCentMin || eventcuts. cfgCentMax < collision.centFT0C ()) {
765771 continue ;
766772 }
767773
0 commit comments