Skip to content

Commit 95e09ee

Browse files
committed
Running with different scenario at the same time
1 parent e39db2d commit 95e09ee

File tree

1 file changed

+25
-1
lines changed

1 file changed

+25
-1
lines changed

ALICE3/Tasks/alice3-dilepton.cxx

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

1717
#include "ALICE3/DataModel/OTFRICH.h"
1818
#include "ALICE3/DataModel/OTFTOF.h"
19+
#include "ALICE3/DataModel/OTFCollision.h"
1920
#include "ALICE3/DataModel/tracksAlice3.h"
2021
#include "Common/DataModel/TrackSelectionTables.h"
2122

@@ -25,9 +26,11 @@
2526
#include <Framework/AnalysisTask.h>
2627
#include <Framework/HistogramRegistry.h>
2728
#include <Framework/runDataProcessing.h>
29+
#include <Framework/O2DatabasePDGPlugin.h>
2830

2931
#include <Math/Vector4D.h>
3032

33+
3134
#include <vector>
3235

3336
using namespace o2;
@@ -54,6 +57,8 @@ struct Alice3Dilepton {
5457
SliceCache cache_mc;
5558
SliceCache cache_rec;
5659

60+
Service<o2::framework::O2DatabasePDG> inspdg;
61+
5762
Configurable<int> pdg{"pdg", 11, "pdg code for analysis. dielectron:11, dimuon:13"};
5863
Configurable<bool> requireHFEid{"requireHFEid", true, "Require HFE identification for both leptons"};
5964
Configurable<float> ptMin{"pt-min", 0.f, "Lower limit in pT"};
@@ -68,6 +73,7 @@ struct Alice3Dilepton {
6873
Configurable<float> nSigmaPionCutInnerTOF{"nSigmaPionCutInnerTOF", 3., "Pion exclusion in inner TOF"};
6974
Configurable<float> nSigmaElectronRich{"nSigmaElectronRich", 3., "Electron inclusion RICH"};
7075
Configurable<float> nSigmaPionRich{"nSigmaPionRich", 3., "Pion exclusion RICH"};
76+
Configurable<int> otfConfig{"otfConfig", 0, "OTF configuration flag"};
7177

7278
HistogramRegistry registry{"Histos", {}, OutputObjHandlingPolicy::AnalysisObject};
7379

@@ -100,6 +106,7 @@ struct Alice3Dilepton {
100106
registry.add("Generated/Particle/prodVy", "Particle Prod. Vertex Y", kTH1F, {axisPrody});
101107
registry.add("Generated/Particle/prodVz", "Particle Prod. Vertex Z", kTH1F, {axisProdz});
102108
registry.add("Generated/Particle/ParticlesPerEvent", "Particles per event", kTH1F, {{100, 0, 100}});
109+
registry.add("Generated/Particle/ParticlesFit", "Charged Particles in Fit acceptance per event", kTH1F, {{15000,0,15000}});
103110

104111
registry.add("Generated/Pair/ULS/Tried", "Pair tries", kTH1F, {{10, -0.5, 9.5}});
105112
registry.add("Generated/Pair/ULS/Mass", "Pair Mass", kTH1F, {axisM});
@@ -601,7 +608,19 @@ struct Alice3Dilepton {
601608

602609
auto mcParticles_per_coll = mcParticles.sliceBy(perMCCollision, mccollision.globalIndex());
603610
int nParticlesInEvent = 0;
611+
int nParticlesFIT=0;
604612
for (const auto& mcParticle : mcParticles_per_coll) {
613+
if (mcParticle.isPhysicalPrimary()) {
614+
if ((2.2<mcParticle.eta()&&mcParticle.eta()< 5.0) || (-3.4<mcParticle.eta()&&mcParticle.eta()<-2.3)) {
615+
auto pdgParticle = inspdg->GetParticle(mcParticle.pdgCode());
616+
if (pdgParticle) {
617+
float charge = pdgParticle->Charge() / 3.f; // Charge in units of |e|
618+
if (std::abs(charge) >= 1.) {
619+
nParticlesFIT++;
620+
}
621+
}
622+
}
623+
}
605624
if (std::abs(mcParticle.pdgCode()) != pdg) {
606625
continue;
607626
}
@@ -624,6 +643,7 @@ struct Alice3Dilepton {
624643

625644
} // end of mc particle loop
626645
registry.fill(HIST("Generated/Particle/ParticlesPerEvent"), nParticlesInEvent);
646+
registry.fill(HIST("Generated/Particle/ParticlesFIT"), nParticlesFIT);
627647

628648
auto neg_mcParticles_coll = neg_mcParticles->sliceByCached(o2::aod::mcparticle::mcCollisionId, mccollision.globalIndex(), cache_mc);
629649
auto pos_mcParticles_coll = pos_mcParticles->sliceByCached(o2::aod::mcparticle::mcCollisionId, mccollision.globalIndex(), cache_mc);
@@ -636,18 +656,22 @@ struct Alice3Dilepton {
636656
} // end of processGen
637657

638658
using MyTracksMC = soa::Join<aod::Tracks, aod::TracksCov, aod::TracksDCA, aod::McTrackLabels, aod::UpgradeTofs, aod::UpgradeTofMCs, aod::UpgradeRichs, aod::TracksAlice3>;
659+
using Alice3Collision = soa::Join<aod::Collisions, aod::OTFLUTConfigId>;
660+
639661
// Filter trackFilter = etaMin < o2::aod::track::eta &&
640662
// o2::aod::track::eta < etaMax &&
641663
// ptMin < o2::aod::track::pt &&
642664
// o2::aod::track::pt < ptMax &&
643665
// o2::aod::track_alice3::isReconstructed == selectReconstructed;
644666
Filter trackFilter = o2::aod::track_alice3::isReconstructed == selectReconstructed;
645667
using MyFilteredTracksMC = soa::Filtered<MyTracksMC>;
668+
Filter configFilter = (aod::upgrade_collision::lutConfigId == otfConfig);
669+
using MyFilteredAlice3Collision = soa::Filtered<Alice3Collision>;
646670
Preslice<MyFilteredTracksMC> perCollision = aod::track::collisionId;
647671
Partition<MyFilteredTracksMC> posTracks = o2::aod::track::signed1Pt > 0.f;
648672
Partition<MyFilteredTracksMC> negTracks = o2::aod::track::signed1Pt < 0.f;
649673

650-
void processRec(const o2::aod::Collisions& collisions,
674+
void processRec(MyFilteredAlice3Collision const& collisions,
651675
MyFilteredTracksMC const& tracks,
652676
const o2::aod::McCollisions&,
653677
const aod::McParticles& mcParticles)

0 commit comments

Comments
 (0)