Skip to content

Commit 0adec97

Browse files
authored
[ALICE3] Running with different scenario at the same time (#15123)
1 parent 3c3ab62 commit 0adec97

File tree

1 file changed

+24
-1
lines changed

1 file changed

+24
-1
lines changed

ALICE3/Tasks/alice3-dilepton.cxx

Lines changed: 24 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,7 @@
1414
/// \author s.scheid@cern.ch, daiki.sekihata@cern.ch
1515
///
1616

17+
#include "ALICE3/DataModel/OTFCollision.h"
1718
#include "ALICE3/DataModel/OTFRICH.h"
1819
#include "ALICE3/DataModel/OTFTOF.h"
1920
#include "ALICE3/DataModel/tracksAlice3.h"
@@ -24,6 +25,7 @@
2425
#include <Framework/AnalysisDataModel.h>
2526
#include <Framework/AnalysisTask.h>
2627
#include <Framework/HistogramRegistry.h>
28+
#include <Framework/O2DatabasePDGPlugin.h>
2729
#include <Framework/runDataProcessing.h>
2830

2931
#include <Math/Vector4D.h>
@@ -54,6 +56,8 @@ struct Alice3Dilepton {
5456
SliceCache cache_mc;
5557
SliceCache cache_rec;
5658

59+
Service<o2::framework::O2DatabasePDG> inspdg;
60+
5761
Configurable<int> pdg{"pdg", 11, "pdg code for analysis. dielectron:11, dimuon:13"};
5862
Configurable<bool> requireHFEid{"requireHFEid", true, "Require HFE identification for both leptons"};
5963
Configurable<float> ptMin{"pt-min", 0.f, "Lower limit in pT"};
@@ -68,6 +72,7 @@ struct Alice3Dilepton {
6872
Configurable<float> nSigmaPionCutInnerTOF{"nSigmaPionCutInnerTOF", 3., "Pion exclusion in inner TOF"};
6973
Configurable<float> nSigmaElectronRich{"nSigmaElectronRich", 3., "Electron inclusion RICH"};
7074
Configurable<float> nSigmaPionRich{"nSigmaPionRich", 3., "Pion exclusion RICH"};
75+
Configurable<int> otfConfig{"otfConfig", 0, "OTF configuration flag"};
7176

7277
HistogramRegistry registry{"Histos", {}, OutputObjHandlingPolicy::AnalysisObject};
7378

@@ -100,6 +105,7 @@ struct Alice3Dilepton {
100105
registry.add("Generated/Particle/prodVy", "Particle Prod. Vertex Y", kTH1F, {axisPrody});
101106
registry.add("Generated/Particle/prodVz", "Particle Prod. Vertex Z", kTH1F, {axisProdz});
102107
registry.add("Generated/Particle/ParticlesPerEvent", "Particles per event", kTH1F, {{100, 0, 100}});
108+
registry.add("Generated/Particle/ParticlesFit", "Charged Particles in Fit acceptance per event", kTH1F, {{15000, 0, 15000}});
103109

104110
registry.add("Generated/Pair/ULS/Tried", "Pair tries", kTH1F, {{10, -0.5, 9.5}});
105111
registry.add("Generated/Pair/ULS/Mass", "Pair Mass", kTH1F, {axisM});
@@ -601,7 +607,19 @@ struct Alice3Dilepton {
601607

602608
auto mcParticles_per_coll = mcParticles.sliceBy(perMCCollision, mccollision.globalIndex());
603609
int nParticlesInEvent = 0;
610+
int nParticlesFIT = 0;
604611
for (const auto& mcParticle : mcParticles_per_coll) {
612+
if (mcParticle.isPhysicalPrimary()) {
613+
if ((2.2 < mcParticle.eta() && mcParticle.eta() < 5.0) || (-3.4 < mcParticle.eta() && mcParticle.eta() < -2.3)) {
614+
auto pdgParticle = inspdg->GetParticle(mcParticle.pdgCode());
615+
if (pdgParticle) {
616+
float charge = pdgParticle->Charge() / 3.f; // Charge in units of |e|
617+
if (std::abs(charge) >= 1.) {
618+
nParticlesFIT++;
619+
}
620+
}
621+
}
622+
}
605623
if (std::abs(mcParticle.pdgCode()) != pdg) {
606624
continue;
607625
}
@@ -624,6 +642,7 @@ struct Alice3Dilepton {
624642

625643
} // end of mc particle loop
626644
registry.fill(HIST("Generated/Particle/ParticlesPerEvent"), nParticlesInEvent);
645+
registry.fill(HIST("Generated/Particle/ParticlesFIT"), nParticlesFIT);
627646

628647
auto neg_mcParticles_coll = neg_mcParticles->sliceByCached(o2::aod::mcparticle::mcCollisionId, mccollision.globalIndex(), cache_mc);
629648
auto pos_mcParticles_coll = pos_mcParticles->sliceByCached(o2::aod::mcparticle::mcCollisionId, mccollision.globalIndex(), cache_mc);
@@ -636,18 +655,22 @@ struct Alice3Dilepton {
636655
} // end of processGen
637656

638657
using MyTracksMC = soa::Join<aod::Tracks, aod::TracksCov, aod::TracksDCA, aod::McTrackLabels, aod::UpgradeTofs, aod::UpgradeTofMCs, aod::UpgradeRichs, aod::TracksAlice3>;
658+
using Alice3Collision = soa::Join<aod::Collisions, aod::OTFLUTConfigId>;
659+
639660
// Filter trackFilter = etaMin < o2::aod::track::eta &&
640661
// o2::aod::track::eta < etaMax &&
641662
// ptMin < o2::aod::track::pt &&
642663
// o2::aod::track::pt < ptMax &&
643664
// o2::aod::track_alice3::isReconstructed == selectReconstructed;
644665
Filter trackFilter = o2::aod::track_alice3::isReconstructed == selectReconstructed;
645666
using MyFilteredTracksMC = soa::Filtered<MyTracksMC>;
667+
Filter configFilter = (aod::upgrade_collision::lutConfigId == otfConfig);
668+
using MyFilteredAlice3Collision = soa::Filtered<Alice3Collision>;
646669
Preslice<MyFilteredTracksMC> perCollision = aod::track::collisionId;
647670
Partition<MyFilteredTracksMC> posTracks = o2::aod::track::signed1Pt > 0.f;
648671
Partition<MyFilteredTracksMC> negTracks = o2::aod::track::signed1Pt < 0.f;
649672

650-
void processRec(const o2::aod::Collisions& collisions,
673+
void processRec(MyFilteredAlice3Collision const& collisions,
651674
MyFilteredTracksMC const& tracks,
652675
const o2::aod::McCollisions&,
653676
const aod::McParticles& mcParticles)

0 commit comments

Comments
 (0)