@@ -52,6 +52,7 @@ using namespace o2::framework::expressions;
5252namespace
5353{
5454struct NPCascCandidate {
55+ int runNumber;
5556 int64_t mcParticleId;
5657 int64_t trackGlobID;
5758 int64_t trackITSID;
@@ -127,6 +128,7 @@ struct NPCascCandidate {
127128 float centFT0M;
128129 int multNTracksGlobal;
129130 uint32_t toiMask;
131+ bool noSameBunchPileup;
130132};
131133std::array<bool , 2 > isFromHF (auto & particle)
132134{
@@ -182,6 +184,7 @@ struct NonPromptCascadeTask {
182184 Preslice<TracksExtMC> perCollisionMC = aod::track::collisionId;
183185
184186 HistogramRegistry mRegistry ;
187+ std::map<int , OutputObj<TH1D>> mMultPerRunHistos ;
185188
186189 Configurable<std::string> ccdbUrl{" ccdbUrl" , " http://alice-ccdb.cern.ch" , " url of the ccdb repository" };
187190 Configurable<bool > cfgPropToPCA{" cfgPropToPCA" , true , " create tracks version propagated to PCA" };
@@ -211,6 +214,17 @@ struct NonPromptCascadeTask {
211214 o2::vertexing::DCAFitterN<2 > mDCAFitter ;
212215 std::array<int , 2 > mProcessCounter = {0 , 0 }; // {Tracked, All}
213216 std::map<uint64_t , uint32_t > mToiMap ;
217+ std::unordered_set<int > mRuns ;
218+ std::shared_ptr<TH2> mHistPointer1 ;
219+ std::shared_ptr<TH2> mHistPointer2 ;
220+ std::shared_ptr<TH2> mHistPointer3 ;
221+ std::shared_ptr<TH2> mHistPointer4 ;
222+ AxisSpec multAxis = {10000 , 0 , 10000 , " Multiplicity FT0M" };
223+ AxisSpec centAxis = {2021 , -0.025 , 101.025 , " Centrality" };
224+ AxisSpec centAxisZoom = {2000 , -0.0025 , 10.0025 , " Centrality" };
225+ AxisSpec multAxisZoom = {7000 , 3000 , 10000 , " Multiplicity FT0M" };
226+ AxisSpec nTracksAxis = {100 , 0 ., 100 ., " NTracksGlobal" };
227+
214228
215229 void initCCDB (aod::BCsWithTimestamps::iterator const & bc)
216230 {
@@ -248,12 +262,7 @@ struct NonPromptCascadeTask {
248262
249263 std::vector<double > ptBinning = {0.4 , 0.8 , 1.2 , 1.6 , 2.0 , 2.4 , 2.8 , 3.2 , 3.6 , 4.0 , 4.4 , 4.8 , 5.2 , 5.6 , 6.0 };
250264 // AxisSpec ptAxis = {ptBinning, "#it{p}_{T} (GeV/#it{c})"};
251- AxisSpec centAxis = {101 , 0 ., 101 ., " Centrality" };
252- AxisSpec centAxisZoom = {100 , 0 ., 10 ., " Centrality" };
253- AxisSpec multAxis = {10000 , 0 , 10000 , " Multiplicity FT0M" };
254- AxisSpec multAxisZoom = {7000 , 3000 , 10000 , " Multiplicity FT0M" };
255- AxisSpec nTracksAxis = {100 , 0 ., 100 ., " NTracksGlobal" };
256-
265+
257266 std::array<std::string, 7 > cutsNames{" # candidates" , " hasTOF" , " nClusTPC" , " nSigmaTPCbach" , " nSigmaTPCprotontrack" , " nSigmaTPCpiontrack" , " cosPA" };
258267 auto cutsOmega{std::get<std::shared_ptr<TH2>>(mRegistry .add (" h_PIDcutsOmega" , " ;;Invariant mass (GeV/#it{c}^{2})" , HistType::kTH2D , {{cutsNames.size (), -0.5 , -0.5 + cutsNames.size ()}, {125 , 1.650 , 1.700 }}))};
259268 auto cutsXi{std::get<std::shared_ptr<TH2>>(mRegistry .add (" h_PIDcutsXi" , " ;;Invariant mass (GeV/#it{c}^{2})" , HistType::kTH2D , {{6 , -0.5 , 5.5 }, {125 , 1.296 , 1.346 }}))};
@@ -266,6 +275,7 @@ struct NonPromptCascadeTask {
266275 cutsOmega->GetYaxis ()->SetBinLabel (iBin + 1 , cutsNames[iBin].c_str ());
267276 cutsXi->GetYaxis ()->SetBinLabel (iBin + 1 , cutsNames[iBin].c_str ());
268277 }
278+
269279 }
270280
271281 template <typename CollisionType, typename TrackType>
@@ -331,7 +341,24 @@ struct NonPromptCascadeTask {
331341 {
332342 // std::cout << "Filling mult histos" << std::endl;
333343 for (const auto & coll : collisions) {
334- // std::cout << coll.centFT0M() << " mult, cent " << coll.multNTracksGlobal() << std::endl;
344+ if (!mRuns .count (mRunNumber )) {
345+ std::string histName = " mult/hMultVsCent_run" + std::to_string (mRunNumber );
346+ mHistPointer1 = std::get<std::shared_ptr<TH2>>(mRegistry .add (histName.c_str (), histName.c_str (), HistType::kTH2F , {centAxis, multAxis}));
347+ histName = " mult/hMultVsCentZoom_run" + std::to_string (mRunNumber );
348+ mHistPointer2 = std::get<std::shared_ptr<TH2>>(mRegistry .add (histName.c_str (), histName.c_str (), HistType::kTH2F , {centAxisZoom, multAxisZoom}));
349+ histName = " mult/hNTracksVsCent_run" + std::to_string (mRunNumber );
350+ mHistPointer3 = std::get<std::shared_ptr<TH2>>(mRegistry .add (histName.c_str (), histName.c_str (), HistType::kTH2F , {centAxis, nTracksAxis}));
351+ histName = " mult/hNTracksVsCentZoom_run" + std::to_string (mRunNumber );
352+ mHistPointer4 = std::get<std::shared_ptr<TH2>>(mRegistry .add (histName.c_str (), histName.c_str (), HistType::kTH2F , {centAxisZoom, nTracksAxis}));
353+ mRuns .insert (mRunNumber );
354+ }
355+ // std::cout << coll.selection_bit(aod::evsel::kNoSameBunchPileup) << std::endl;
356+ mHistPointer1 ->Fill (coll.centFT0M (), coll.multFT0M ());
357+ mHistPointer2 ->Fill (coll.centFT0M (), coll.multFT0M ());
358+ mHistPointer3 ->Fill (coll.centFT0M (), coll.multNTracksGlobal ());
359+ mHistPointer4 ->Fill (coll.centFT0M (), coll.multNTracksGlobal ());
360+
361+
335362 mRegistry .fill (HIST (" hMultVsCent" ), coll.centFT0M (), coll.multFT0M ());
336363 mRegistry .fill (HIST (" hMultVsCentZoom" ), coll.centFT0M (), coll.multFT0M ());
337364 mRegistry .fill (HIST (" hNTracksVsCent" ), coll.centFT0M (), (float )coll.multNTracksGlobal ());
@@ -548,7 +575,7 @@ struct NonPromptCascadeTask {
548575 if (mToiMap .count (bc.globalBC ())) {
549576 toiMask = mToiMap [bc.globalBC ()];
550577 }
551- candidates.emplace_back (NPCascCandidate{mcParticleID, trackedCascGlobalIndex, itsTrackGlobalIndex, candidate.collisionId (), matchingChi2, deltaPtITSCascade, deltaPtCascade, cascITSclsSize, hasReassociatedClusters, hasFakeReassociation, isGoodMatch, isGoodCascade, pdgCodeMom, itsTrackPDG, fromHF[0 ], fromHF[1 ],
578+ candidates.emplace_back (NPCascCandidate{mRunNumber , mcParticleID, trackedCascGlobalIndex, itsTrackGlobalIndex, candidate.collisionId (), matchingChi2, deltaPtITSCascade, deltaPtCascade, cascITSclsSize, hasReassociatedClusters, hasFakeReassociation, isGoodMatch, isGoodCascade, pdgCodeMom, itsTrackPDG, fromHF[0 ], fromHF[1 ],
552579 collision.numContrib (), cascPVContribs, collision.collisionTimeRes (), primaryVertex.getX (), primaryVertex.getY (), primaryVertex.getZ (),
553580 cascadeLvector.pt (), cascadeLvector.eta (), cascadeLvector.phi (),
554581 protonTrack.pt (), protonTrack.eta (), pionTrack.pt (), pionTrack.eta (), bachelor.pt (), bachelor.eta (),
@@ -558,15 +585,15 @@ struct NonPromptCascadeTask {
558585 cascITSclusters, protonTrack.itsNCls (), pionTrack.itsNCls (), bachelor.itsNCls (), protonTrack.tpcNClsFound (), pionTrack.tpcNClsFound (), bachelor.tpcNClsFound (),
559586 protonTrack.tpcNSigmaPr (), pionTrack.tpcNSigmaPi (), bachelor.tpcNSigmaKa (), bachelor.tpcNSigmaPi (),
560587 protonTrack.hasTOF (), pionTrack.hasTOF (), bachelor.hasTOF (),
561- protonTrack.tofNSigmaPr (), pionTrack.tofNSigmaPi (), bachelor.tofNSigmaKa (), bachelor.tofNSigmaPi (), collision.sel8 (), collision.multFT0C (), collision.multFT0A (), collision.multFT0M (), collision.centFT0C (), collision.centFT0A (), collision.centFT0M (), collision.multNTracksGlobal (), toiMask});
588+ protonTrack.tofNSigmaPr (), pionTrack.tofNSigmaPi (), bachelor.tofNSigmaKa (), bachelor.tofNSigmaPi (), collision.sel8 (), collision.multFT0C (), collision.multFT0A (), collision.multFT0M (), collision.centFT0C (), collision.centFT0A (), collision.centFT0M (), collision.multNTracksGlobal (), toiMask, collision. selection_bit (aod::evsel:: kNoSameBunchPileup ) });
562589 }
563590 }
564591
565592 template <typename CascadeType>
566593 void fillDataTable (auto const & candidates)
567594 {
568595 for (const auto & c : candidates) {
569- getDataTable<CascadeType>()(c.matchingChi2 , c.deltaPtITS , c.deltaPt , c.itsClusSize , c.hasReassociatedCluster ,
596+ getDataTable<CascadeType>()(mRunNumber , c.matchingChi2 , c.deltaPtITS , c.deltaPt , c.itsClusSize , c.hasReassociatedCluster ,
570597 c.pvContributors , c.cascPVContribs , c.pvTimeResolution , c.pvX , c.pvY , c.pvZ ,
571598 c.cascPt , c.cascEta , c.cascPhi ,
572599 c.protonPt , c.protonEta , c.pionPt , c.pionEta , c.bachPt , c.bachEta ,
@@ -578,7 +605,7 @@ struct NonPromptCascadeTask {
578605 c.protonTPCNSigma , c.pionTPCNSigma , c.bachKaonTPCNSigma , c.bachPionTPCNSigma ,
579606 c.protonHasTOF , c.pionHasTOF , c.bachHasTOF ,
580607 c.protonTOFNSigma , c.pionTOFNSigma , c.bachKaonTOFNSigma , c.bachPionTOFNSigma ,
581- c.sel8 , c.multFT0C , c.multFT0A , c.multFT0M , c.centFT0C , c.centFT0A , c.centFT0M , c.multNTracksGlobal , c.toiMask );
608+ c.sel8 , c.multFT0C , c.multFT0A , c.multFT0M , c.centFT0C , c.centFT0A , c.centFT0M , c.multNTracksGlobal , c.toiMask , c. noSameBunchPileup );
582609 }
583610 }
584611
@@ -606,7 +633,7 @@ struct NonPromptCascadeTask {
606633 auto mcCollision = particle.template mcCollision_as <aod::McCollisions>();
607634 auto recCollision = collisions.iteratorAt (c.collisionID );
608635
609- getMCtable<CascadeType>()(c.matchingChi2 , c.deltaPtITS , c.deltaPt , c.itsClusSize , c.hasReassociatedCluster , c.isGoodMatch , c.isGoodCascade , c.pdgCodeMom , c.pdgCodeITStrack , c.isFromBeauty , c.isFromCharm ,
636+ getMCtable<CascadeType>()(mRunNumber , c.matchingChi2 , c.deltaPtITS , c.deltaPt , c.itsClusSize , c.hasReassociatedCluster , c.isGoodMatch , c.isGoodCascade , c.pdgCodeMom , c.pdgCodeITStrack , c.isFromBeauty , c.isFromCharm ,
610637 c.pvContributors , c.cascPVContribs , c.pvTimeResolution , c.pvX , c.pvY , c.pvZ , c.cascPt , c.cascEta , c.cascPhi ,
611638 c.protonPt , c.protonEta , c.pionPt , c.pionEta , c.bachPt , c.bachEta ,
612639 c.cascDCAxy , c.cascDCAz , c.protonDCAxy , c.protonDCAz , c.pionDCAxy , c.pionDCAz , c.bachDCAxy , c.bachDCAz ,
@@ -617,7 +644,7 @@ struct NonPromptCascadeTask {
617644 c.sel8 , c.multFT0C , c.multFT0A , c.multFT0M , c.centFT0C , c.centFT0A , c.centFT0M ,
618645 particle.pt (), particle.eta (), particle.phi (), mcCollision.posX (), mcCollision.posY (), mcCollision.posZ (),
619646 particle.pdgCode (), mcCollision.posX () - particle.vx (), mcCollision.posY () - particle.vy (),
620- mcCollision.posZ () - particle.vz (), mcCollision.globalIndex () == recCollision.mcCollisionId (), c.hasFakeReassociation , motherDecayDaughters, c.multNTracksGlobal , c.toiMask );
647+ mcCollision.posZ () - particle.vz (), mcCollision.globalIndex () == recCollision.mcCollisionId (), c.hasFakeReassociation , motherDecayDaughters, c.multNTracksGlobal , c.toiMask , c. noSameBunchPileup );
621648 }
622649 }
623650
0 commit comments