Skip to content

Commit 3aeb13e

Browse files
authored
Merge branch 'master' into A2-PR
2 parents 36adc3d + 1c1a790 commit 3aeb13e

100 files changed

Lines changed: 9415 additions & 4245 deletions

File tree

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

Common/DataModel/FwdTrackReAlignTables.h

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -72,6 +72,19 @@ using FwdTrackRealign = FwdTracksReAlign::iterator;
7272
using FwdTrkCovRealign = FwdTrksCovReAlign::iterator;
7373
using FullFwdTracksRealign = soa::Join<FwdTracksReAlign, FwdTrksCovReAlign>;
7474
using FullFwdTrackRealign = FullFwdTracksRealign::iterator;
75+
76+
// ambiguity table for realigned muons
77+
namespace fwdtrackrealignambiguous
78+
{
79+
DECLARE_SOA_INDEX_COLUMN_FULL(FwdTrackRealign, fwdTrackRealign, int, FwdTracksReAlign, ""); //! FwdTracksReAlign index
80+
DECLARE_SOA_SLICE_INDEX_COLUMN(BC, bc);
81+
82+
} // namespace fwdtrackrealignambiguous
83+
84+
DECLARE_SOA_TABLE(AmbiguousFwdTrksReAlign, "AOD", "AMBIFWDREALIGN", //! Table for FwdTracksReAlign which are not associated with a collision
85+
o2::soa::Index<>, fwdtrackrealignambiguous::FwdTrackRealignId, fwdtrackrealignambiguous::BCIdSlice);
86+
87+
using AmbiguousFwdTrkRealign = AmbiguousFwdTrksReAlign::iterator;
7588
} // namespace o2::aod
7689

7790
#endif // COMMON_DATAMODEL_FWDTRACKREALIGNTABLES_H_

Common/TableProducer/fwdtrackToCollisionAssociator.cxx

Lines changed: 19 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,7 @@
1616

1717
#include "Common/Core/CollisionAssociation.h"
1818
#include "Common/DataModel/CollisionAssociationTables.h"
19+
#include "Common/DataModel/FwdTrackReAlignTables.h"
1920

2021
#include <Framework/AnalysisDataModel.h>
2122
#include <Framework/AnalysisHelpers.h>
@@ -44,6 +45,7 @@ struct FwdTrackToCollisionAssociation {
4445
CollisionAssociation<false> collisionAssociator;
4546

4647
Preslice<FwdTracks> muonsPerCollisions = aod::fwdtrack::collisionId;
48+
Preslice<FwdTracksReAlign> realignmuonsPerCollisions = aod::fwdtrack::collisionId;
4749
Preslice<MFTTracks> mftsPerCollisions = aod::fwdtrack::collisionId;
4850

4951
void init(InitContext const&)
@@ -55,7 +57,7 @@ struct FwdTrackToCollisionAssociation {
5557
LOGP(fatal, "Exactly one process function between standard and time-based association should be enabled!");
5658
}
5759

58-
if (!(doprocessMFTAssocWithTime || doprocessMFTStandardAssoc || doprocessFwdAssocWithTime || doprocessFwdStandardAssoc)) {
60+
if (!(doprocessMFTAssocWithTime || doprocessMFTStandardAssoc || doprocessFwdAssocWithTime || doprocessFwdStandardAssoc || doprocessFwdRealignAssocWithTime || doprocessFwdRealignStandardAssoc)) {
5961
LOGP(fatal, "At least one process function should be enabled!");
6062
}
6163

@@ -85,6 +87,22 @@ struct FwdTrackToCollisionAssociation {
8587
}
8688
PROCESS_SWITCH(FwdTrackToCollisionAssociation, processFwdStandardAssoc, "Use standard fwdtrack-to-collision association", false);
8789

90+
void processFwdRealignAssocWithTime(Collisions const& collisions,
91+
FwdTracksReAlign const& muons,
92+
AmbiguousFwdTrksReAlign const& ambiTracksFwd,
93+
BCs const& bcs)
94+
{
95+
collisionAssociator.runAssocWithTime(collisions, muons, muons, ambiTracksFwd, bcs, fwdassociation, fwdreverseIndices);
96+
}
97+
PROCESS_SWITCH(FwdTrackToCollisionAssociation, processFwdRealignAssocWithTime, "Use fwdrealigntrack-to-collision association based on time", false);
98+
99+
void processFwdRealignStandardAssoc(Collisions const& collisions,
100+
FwdTracksReAlign const& muons)
101+
{
102+
collisionAssociator.runStandardAssoc(collisions, muons, realignmuonsPerCollisions, fwdassociation, fwdreverseIndices);
103+
}
104+
PROCESS_SWITCH(FwdTrackToCollisionAssociation, processFwdRealignStandardAssoc, "Use standard fwdrealigntrack-to-collision association", false);
105+
88106
void processMFTAssocWithTime(Collisions const& collisions,
89107
MFTTracks const& tracks,
90108
AmbiguousMFTTracks const& ambiguousTracks,

Common/Tools/EventSelectionModule.h

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -310,6 +310,7 @@ class BcSelectionModule
310310
return;
311311
}
312312
bcselbuffer.clear();
313+
bcselbuffer.reserve(bcs.size());
313314
for (const auto& bc : bcs) {
314315
uint64_t timestamp = timestamps[bc.globalIndex()];
315316
par = ccdb->template getForTimeStamp<EventSelectionParams>("EventSelection/EventSelectionParams", timestamp);
@@ -453,6 +454,7 @@ class BcSelectionModule
453454

454455
int run = bcs.iteratorAt(0).runNumber();
455456

457+
bcselbuffer.reserve(bcs.size());
456458
// bc loop
457459
for (auto bc : bcs) { // o2-linter: disable=const-ref-in-for-loop (use bc as nonconst iterator)
458460
uint64_t timestamp = timestamps[bc.globalIndex()];

DPG/Tasks/AOTTrack/qaImpPar.cxx

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -116,6 +116,7 @@ struct QaImpactPar {
116116
Configurable<int> nCustomMinITShits{"n_customMinITShits", 0, "Minimum number of layers crossed by a track among those in \"customITShitmap\""};
117117
Configurable<bool> customForceITSTPCmatching{"custom_forceITSTPCmatching", false, "Consider or not only ITS-TPC macthed tracks when using custom ITS hitmap"};
118118
Configurable<float> downsamplingFraction{"downsamplingFraction", 1.1, "Fraction of tracks to be used to fill the output objects"};
119+
Configurable<int> eventGeneratorHF{"eventGeneratorHF", -1, "If positive, enable event selection using subGeneratorId information (HF). The value indicates which events to keep (0 = MB, 4 = charm triggered, 5 = beauty triggered)"};
119120

120121
/// Custom cut selection objects
121122
TrackSelection selector_ITShitmap;
@@ -201,6 +202,12 @@ struct QaImpactPar {
201202
const o2::aod::McCollisions&,
202203
o2::aod::BCsWithTimestamps const&)
203204
{
205+
/// SubgeneratorID check for HF MC
206+
/// Useful to select MB gap events in HF-dedicated MC productions
207+
if (eventGeneratorHF >= 0 && collision.mcCollision().getSubGeneratorId() != eventGeneratorHF) {
208+
return;
209+
}
210+
204211
/// here call the template processReco function
205212
auto bc = collision.bc_as<o2::aod::BCsWithTimestamps>();
206213
processReco<true, false>(collision, tracksUnfiltered, tracks, tracksIU, mcParticles, bc);
@@ -216,6 +223,12 @@ struct QaImpactPar {
216223
const o2::aod::McCollisions&,
217224
o2::aod::BCsWithTimestamps const&)
218225
{
226+
/// SubgeneratorID check for HF MC
227+
/// Useful to select MB gap events in HF-dedicated MC productions
228+
if (eventGeneratorHF >= 0 && collision.mcCollision().getSubGeneratorId() != eventGeneratorHF) {
229+
return;
230+
}
231+
219232
/// here call the template processReco function
220233
auto bc = collision.bc_as<o2::aod::BCsWithTimestamps>();
221234
processReco<true, true>(collision, tracksUnfiltered, tracks, tracksIU, mcParticles, bc);

0 commit comments

Comments
 (0)