Skip to content

Commit 3f6645e

Browse files
victor-gonzalezVictor
andauthored
[PWGCF] DptDpt - Tracking each of the track selection criteria (#10505)
Co-authored-by: Victor <victor@cern.ch>
1 parent b0a6db4 commit 3f6645e

File tree

3 files changed

+309
-283
lines changed

3 files changed

+309
-283
lines changed

PWGCF/TableProducer/dptdptfilter.cxx

Lines changed: 43 additions & 27 deletions
Original file line numberDiff line numberDiff line change
@@ -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

14381454
template <StrongDebugging outdebug, typename TrackObject>

0 commit comments

Comments
 (0)