@@ -370,6 +370,8 @@ struct DptDptFilter {
370370 struct : ConfigurableGroup {
371371 std::string prefix = " cfgEventSelection" ;
372372 Configurable<std::string> itsDeadMaps{" itsDeadMaps" , " " , " Level of inactive chips: nocheck(empty), goodIts3, goodIts0123, goodItsAll. Default empty" };
373+ Configurable<int64_t > minOrbit{" minOrbit" , -1 , " Lowest orbit to track" };
374+ Configurable<int64_t > maxOrbit{" maxOrbit" , INT64_MAX, " Highest orbit to track" };
373375 struct : ConfigurableGroup {
374376 std::string prefix = " cfgOccupancySelection" ;
375377 Configurable<std::string> cfgOccupancyEstimation{" cfgOccupancyEstimation" , " None" , " Occupancy estimation: None, Tracks, FT0C. Default None" };
@@ -520,22 +522,22 @@ struct DptDptFilter {
520522 template <typename CollisionObject, typename TracksObject>
521523 void processReconstructed (CollisionObject const & collision, TracksObject const & ftracks, float centormult);
522524
523- void processWithCent (aod::CollisionEvSelCent const & collision, DptDptFullTracks const & ftracks);
525+ void processWithCent (aod::CollisionEvSelCent const & collision, DptDptFullTracks const & ftracks, const aod::BCsWithTimestamps& );
524526 PROCESS_SWITCH (DptDptFilter, processWithCent, " Process reco with centrality" , false );
525527
526- void processWithRun2Cent (aod::CollisionEvSelRun2Cent const & collision, DptDptFullTracks const & ftracks);
528+ void processWithRun2Cent (aod::CollisionEvSelRun2Cent const & collision, DptDptFullTracks const & ftracks, const aod::BCsWithTimestamps& );
527529 PROCESS_SWITCH (DptDptFilter, processWithRun2Cent, " Process reco with Run !/2 centrality" , false );
528530
529- void processWithoutCent (aod::CollisionEvSel const & collision, DptDptFullTracks const & ftracks);
531+ void processWithoutCent (aod::CollisionEvSel const & collision, DptDptFullTracks const & ftracks, const aod::BCsWithTimestamps& );
530532 PROCESS_SWITCH (DptDptFilter, processWithoutCent, " Process reco without centrality" , false );
531533
532- void processWithCentDetectorLevel (aod::CollisionEvSelCent const & collision, DptDptFullTracksDetLevel const & ftracks, aod::McParticles const &);
534+ void processWithCentDetectorLevel (aod::CollisionEvSelCent const & collision, DptDptFullTracksDetLevel const & ftracks, aod::McParticles const &, const aod::BCsWithTimestamps& );
533535 PROCESS_SWITCH (DptDptFilter, processWithCentDetectorLevel, " Process MC detector level with centrality" , false );
534536
535- void processWithRun2CentDetectorLevel (aod::CollisionEvSelRun2Cent const & collision, DptDptFullTracksDetLevel const & ftracks, aod::McParticles const &);
537+ void processWithRun2CentDetectorLevel (aod::CollisionEvSelRun2Cent const & collision, DptDptFullTracksDetLevel const & ftracks, aod::McParticles const &, const aod::BCsWithTimestamps& );
536538 PROCESS_SWITCH (DptDptFilter, processWithRun2CentDetectorLevel, " Process MC detector level with centrality" , false );
537539
538- void processWithoutCentDetectorLevel (aod::CollisionEvSel const & collision, DptDptFullTracksDetLevel const & ftracks, aod::McParticles const &);
540+ void processWithoutCentDetectorLevel (aod::CollisionEvSel const & collision, DptDptFullTracksDetLevel const & ftracks, aod::McParticles const &, const aod::BCsWithTimestamps& );
539541 PROCESS_SWITCH (DptDptFilter, processWithoutCentDetectorLevel, " Process MC detector level without centrality" , false );
540542
541543 template <typename CollisionObject, typename ParticlesList>
@@ -582,13 +584,16 @@ void DptDptFilter::processReconstructed(CollisionObject const& collision, Tracks
582584 LOGF (DPTDPTFILTERLOGCOLLISIONS, " DptDptFilterTask::processReconstructed(). New collision with %d tracks" , ftracks.size ());
583585
584586 float mult = extractMultiplicity (collision, fCentMultEstimator );
587+ static const int32_t nBCsPerOrbit = o2::constants::lhc::LHCMaxBunches;
585588
586589 fhCentMultB->Fill (tentativecentmult);
587590 fhMultB->Fill (mult);
588591 fhVertexZB->Fill (collision.posZ ());
589592 uint8_t acceptedevent = uint8_t (false );
590593 float centormult = tentativecentmult;
591- if (isEventSelected (collision, centormult)) {
594+ int64_t orbit = collision.template bc_as <aod::BCsWithTimestamps>().globalBC () / nBCsPerOrbit;
595+ bool withinOrbitOfInterest = (cfgEventSelection.minOrbit <= orbit) && (orbit < cfgEventSelection.maxOrbit );
596+ if (withinOrbitOfInterest && isEventSelected (collision, centormult)) {
592597 acceptedevent = true ;
593598 fhCentMultA->Fill (centormult);
594599 fhMultA->Fill (mult);
@@ -612,32 +617,32 @@ void DptDptFilter::processReconstructed(CollisionObject const& collision, Tracks
612617 }
613618}
614619
615- void DptDptFilter::processWithCent (aod::CollisionEvSelCent const & collision, DptDptFullTracks const & ftracks)
620+ void DptDptFilter::processWithCent (aod::CollisionEvSelCent const & collision, DptDptFullTracks const & ftracks, aod::BCsWithTimestamps const & )
616621{
617622 processReconstructed (collision, ftracks, getCentMultPercentile (collision));
618623}
619624
620- void DptDptFilter::processWithRun2Cent (aod::CollisionEvSelRun2Cent const & collision, DptDptFullTracks const & ftracks)
625+ void DptDptFilter::processWithRun2Cent (aod::CollisionEvSelRun2Cent const & collision, DptDptFullTracks const & ftracks, aod::BCsWithTimestamps const & )
621626{
622627 processReconstructed (collision, ftracks, getCentMultPercentile (collision));
623628}
624629
625- void DptDptFilter::processWithoutCent (aod::CollisionEvSel const & collision, DptDptFullTracks const & ftracks)
630+ void DptDptFilter::processWithoutCent (aod::CollisionEvSel const & collision, DptDptFullTracks const & ftracks, aod::BCsWithTimestamps const & )
626631{
627632 processReconstructed (collision, ftracks, 50.0 );
628633}
629634
630- void DptDptFilter::processWithCentDetectorLevel (aod::CollisionEvSelCent const & collision, DptDptFullTracksDetLevel const & ftracks, aod::McParticles const &)
635+ void DptDptFilter::processWithCentDetectorLevel (aod::CollisionEvSelCent const & collision, DptDptFullTracksDetLevel const & ftracks, aod::McParticles const &, aod::BCsWithTimestamps const & )
631636{
632637 processReconstructed (collision, ftracks, getCentMultPercentile (collision));
633638}
634639
635- void DptDptFilter::processWithRun2CentDetectorLevel (aod::CollisionEvSelRun2Cent const & collision, DptDptFullTracksDetLevel const & ftracks, aod::McParticles const &)
640+ void DptDptFilter::processWithRun2CentDetectorLevel (aod::CollisionEvSelRun2Cent const & collision, DptDptFullTracksDetLevel const & ftracks, aod::McParticles const &, aod::BCsWithTimestamps const & )
636641{
637642 processReconstructed (collision, ftracks, getCentMultPercentile (collision));
638643}
639644
640- void DptDptFilter::processWithoutCentDetectorLevel (aod::CollisionEvSel const & collision, DptDptFullTracksDetLevel const & ftracks, aod::McParticles const &)
645+ void DptDptFilter::processWithoutCentDetectorLevel (aod::CollisionEvSel const & collision, DptDptFullTracksDetLevel const & ftracks, aod::McParticles const &, aod::BCsWithTimestamps const & )
641646{
642647 processReconstructed (collision, ftracks, 50.0 );
643648}
@@ -853,9 +858,20 @@ struct DptDptFilterTracks {
853858 getTaskOptionValue (initContext, " dpt-dpt-filter" , " input_ccdbdate" , cfgCCDBDate, false );
854859 getTaskOptionValue (initContext, " dpt-dpt-filter" , " input_ccdbperiod" , cfgCCDBPeriod, false );
855860
861+ /* create the output list which will own the task histograms */
862+ TList* fOutputList = new TList ();
863+ fOutputList ->SetOwner (true );
864+ fOutput .setObject (fOutputList );
865+
856866 /* the track types and combinations */
857867 tracktype = cfgTrackType.value ;
858- initializeTrackSelection (cfgTuneTrackSelection.value );
868+
869+ /* incorporate configuration parameters to the output */
870+ fOutputList ->Add (new TParameter<int >(" TrackType" , cfgTrackType, ' f' ));
871+ fOutputList ->Add (new TParameter<int >(" TrackOneCharge" , 1 , ' f' ));
872+ fOutputList ->Add (new TParameter<int >(" TrackTwoCharge" , -1 , ' f' ));
873+
874+ DptDptTrackSelection::initializeTrackSelection (cfgTuneTrackSelection.value , fOutputList );
859875 traceDCAOutliers = cfgTraceDCAOutliers;
860876 traceOutOfSpeciesParticles = cfgTraceOutOfSpeciesParticles;
861877 recoIdMethod = cfgRecoIdMethod;
@@ -897,16 +913,6 @@ struct DptDptFilterTracks {
897913 insertInPIDselector (cfgKaonPIDSelection, 3 );
898914 insertInPIDselector (cfgProtonPIDSelection, 4 );
899915
900- /* create the output list which will own the task histograms */
901- TList* fOutputList = new TList ();
902- fOutputList ->SetOwner (true );
903- fOutput .setObject (fOutputList );
904-
905- /* incorporate configuration parameters to the output */
906- fOutputList ->Add (new TParameter<int >(" TrackType" , cfgTrackType, ' f' ));
907- fOutputList ->Add (new TParameter<int >(" TrackOneCharge" , 1 , ' f' ));
908- fOutputList ->Add (new TParameter<int >(" TrackTwoCharge" , -1 , ' f' ));
909-
910916 if ((fDataType == kData ) || (fDataType == kDataNoEvtSel ) || (fDataType == kMC )) {
911917 /* create the reconstructed data histograms */
912918 fhPB = new TH1F (" fHistPB" , " p distribution for reconstructed before;p (GeV/c);dN/dp (c/GeV)" , 100 , 0.0 , 15.0 );
@@ -1424,15 +1430,25 @@ struct DptDptFilterTracks {
14241430 }
14251431 PROCESS_SWITCH (DptDptFilterTracks, filterGenerated, " Generated particles filtering" , true )
14261432
1427- void filterGeneratedNotReconstructedWithPID (soa::Join<aod::McCollisions, aod::DptDptCFGenCollisionsInfo> const & gencollisions, aod::McParticles const & particles,
1428- soa::Join<aod::Collisions, aod::DptDptCFCollisionsInfo>& collisions, DptDptFullTracksPIDDetLevel const & tracks)
1433+ void filterGeneratedNotReconstructed (soa::Join<aod::McCollisions, aod::DptDptCFGenCollisionsInfo> const & gencollisions, aod::McParticles const & particles,
1434+ soa::Join<aod::Collisions, aod::DptDptCFCollisionsInfo>& collisions, DptDptFullTracksPIDDetLevel const & tracks)
1435+ {
1436+ particleReconstructed.resize (particles.size ());
1437+ filterTracksSpecial (collisions, tracks);
1438+ filterParticlesSpecial (gencollisions, particles);
1439+ particleReconstructed.clear ();
1440+ }
1441+ PROCESS_SWITCH (DptDptFilterTracks, filterGeneratedNotReconstructed, " Generated particles filtering selecting not reconstructed using PID" , false )
1442+
1443+ void filterGeneratedNotReconstructedWithoutPID (soa::Join<aod::McCollisions, aod::DptDptCFGenCollisionsInfo> const & gencollisions, aod::McParticles const & particles,
1444+ soa::Join<aod::Collisions, aod::DptDptCFCollisionsInfo>& collisions, DptDptFullTracksDetLevel const & tracks)
14291445 {
14301446 particleReconstructed.resize (particles.size ());
14311447 filterTracksSpecial (collisions, tracks);
14321448 filterParticlesSpecial (gencollisions, particles);
14331449 particleReconstructed.clear ();
14341450 }
1435- PROCESS_SWITCH (DptDptFilterTracks, filterGeneratedNotReconstructedWithPID , " Generated particles filtering" , false )
1451+ PROCESS_SWITCH (DptDptFilterTracks, filterGeneratedNotReconstructedWithoutPID , " Generated particles filtering selecting not reconstructed inclusive " , false )
14361452};
14371453
14381454template <StrongDebugging outdebug, typename TrackObject>
0 commit comments