2727#include " Common/DataModel/Multiplicity.h"
2828#include " Common/DataModel/PIDResponse.h"
2929#include " Common/DataModel/TrackSelectionTables.h"
30+ #include " EventFiltering/Zorro.h"
3031
3132#include " CCDB/BasicCCDBManager.h"
3233#include " CommonConstants/PhysicsConstants.h"
@@ -123,6 +124,12 @@ struct TreeCreatorElectronMLDDA {
123124 Configurable<double > d_bz_input{" d_bz_input" , -999 , " bz field, -999 is automatic" };
124125 Configurable<int > useMatCorrType{" useMatCorrType" , 2 , " 0: none, 1: TGeo, 2: LUT" };
125126
127+ // for zorro
128+ Configurable<std::string> cfg_swt_names{" cfg_swt_names" , " fHighTrackMult,fHighFt0cFv0Mult" , " comma-separated software trigger names" };
129+ o2::framework::Configurable<std::string> ccdbPathSoftwareTrigger{" ccdbPathSoftwareTrigger" , " EventFiltering/Zorro/" , " ccdb path for ZORRO objects" };
130+ Configurable<uint64_t > bcMarginForSoftwareTrigger{" bcMarginForSoftwareTrigger" , 100 , " Number of BCs of margin for software triggers" };
131+ Configurable<bool > cfgUseZorro{" cfgUseZorro" , false , " flag to analyze software-triggered data" };
132+
126133 Configurable<float > downscaling_electron_highP{" downscaling_electron_highP" , 1.1 , " down scaling factor to store electron at high p" };
127134 Configurable<float > downscaling_pion_highP{" downscaling_pion_highP" , 1.1 , " down scaling factor to store pion at high p" };
128135 Configurable<float > downscaling_kaon_highP{" downscaling_kaon_highP" , 1.1 , " down scaling factor to store kaon at high p" };
@@ -167,6 +174,8 @@ struct TreeCreatorElectronMLDDA {
167174 Configurable<bool > cfgRequireGoodITSLayer3{" cfgRequireGoodITSLayer3" , false , " number of inactive chips on ITS layer 3 are below threshold " };
168175 Configurable<bool > cfgRequireGoodITSLayer0123{" cfgRequireGoodITSLayer0123" , false , " number of inactive chips on ITS layers 0-3 are below threshold " };
169176 Configurable<bool > cfgRequireGoodITSLayersAll{" cfgRequireGoodITSLayersAll" , false , " number of inactive chips on all ITS layers are below threshold " };
177+ Configurable<uint16_t > cfgNumContribMin{" cfgNumContribMin" , 0 , " min. numContrib" };
178+ Configurable<uint16_t > cfgNumContribMax{" cfgNumContribMax" , 65000 , " max. numContrib" };
170179 } eventcuts;
171180
172181 struct : ConfigurableGroup {
@@ -287,6 +296,7 @@ struct TreeCreatorElectronMLDDA {
287296 o2::base::MatLayerCylSet* lut = nullptr ;
288297 o2::dataformats::DCA mDcaInfoCov ;
289298 o2::aod::rctsel::RCTFlagsChecker rctChecker;
299+ Zorro zorro;
290300
291301 std::mt19937 engine;
292302 std::uniform_real_distribution<float > dist01;
@@ -325,6 +335,13 @@ struct TreeCreatorElectronMLDDA {
325335 return ;
326336 }
327337
338+ if (cfgUseZorro) {
339+ zorro.setCCDBpath (ccdbPathSoftwareTrigger);
340+ zorro.setBCtolerance (bcMarginForSoftwareTrigger); // this does nothing.
341+ zorro.initCCDB (ccdb.service , bc.runNumber (), bc.timestamp (), cfg_swt_names.value );
342+ zorro.populateHistRegistry (registry, bc.runNumber ());
343+ }
344+
328345 // load matLUT for this timestamp
329346 if (!lut) {
330347 LOG (info) << " Loading material look-up table for timestamp: " << bc.timestamp ();
@@ -762,6 +779,7 @@ struct TreeCreatorElectronMLDDA {
762779
763780 Filter collisionFilter_track_occupancy = eventcuts.cfgTrackOccupancyMin <= o2::aod::evsel::trackOccupancyInTimeRange && o2::aod::evsel::trackOccupancyInTimeRange < eventcuts.cfgTrackOccupancyMax;
764781 Filter collisionFilter_ft0c_occupancy = eventcuts.cfgFT0COccupancyMin <= o2::aod::evsel::ft0cOccupancyInTimeRange && o2::aod::evsel::ft0cOccupancyInTimeRange < eventcuts.cfgFT0COccupancyMax;
782+ Filter collisionFilter_numContrib = eventcuts.cfgNumContribMin <= o2::aod::collision::numContrib && o2::aod::collision::numContrib < eventcuts.cfgNumContribMax;
765783 Filter collisionFilter_common = nabs(o2::aod::collision::posZ) < 10 .f && o2::aod::evsel::sel8 == true ;
766784 using filteredMyCollisions = soa::Filtered<MyCollisions>;
767785
@@ -786,6 +804,10 @@ struct TreeCreatorElectronMLDDA {
786804 continue ;
787805 }
788806
807+ if (cfgUseZorro && !zorro.isSelected (bc.globalBC (), bcMarginForSoftwareTrigger)) {
808+ continue ;
809+ }
810+
789811 if (cfgRequireGoodRCT && !rctChecker.checkTable (collision)) {
790812 continue ;
791813 }
0 commit comments