@@ -192,7 +192,7 @@ struct HeavyionMultiplicity {
192192 ConfigurableAxis binsImpactPar{" binsImpactPar" , {VARIABLE_WIDTH , 0.0 , 3.00065 , 4.28798 , 6.14552 , 7.6196 , 8.90942 , 10.0897 , 11.2002 , 12.2709 , 13.3167 , 14.4173 , 23.2518 }, " Binning of the impact parameter axis" };
193193 ConfigurableAxis binsMult{" binsMult" , {500 , 0 .0f , +500 .0f }, " " };
194194 ConfigurableAxis binsDCA{" binsDCA" , {500 , -10 .0f , 10 .0f }, " " };
195-
195+
196196 Configurable<bool > isApplyTFcut{" isApplyTFcut" , true , " Enable TimeFrameBorder cut" };
197197 Configurable<bool > isApplyITSROcut{" isApplyITSROcut" , true , " Enable ITS ReadOutFrameBorder cut" };
198198 Configurable<bool > isApplySameBunchPileup{" isApplySameBunchPileup" , true , " Enable SameBunchPileup cut" };
@@ -250,6 +250,19 @@ struct HeavyionMultiplicity {
250250 x->SetBinLabel (9 , " ApplyNoHighMultCollInPrevRof" );
251251 x->SetBinLabel (10 , " INEL > 0" );
252252
253+
254+ if (doprocessDCAvsptData) {
255+ histos.add (" hdcaxyvspt" , " dca to pv in the xy plane" , kTH2D , {dcaAxis, axisPt}, false );
256+ histos.add (" hdcazvspt" , " dca to pv in the z axis" , kTH2D , {dcaAxis, axisPt}, false );
257+ }
258+
259+ if (doprocessDCAvsptMC) {
260+ histos.add (" hdcaxyvsptMC" , " dca to pv in the xy plane MC" , kTH2D , {dcaAxis, axisPt}, false );
261+ histos.add (" hdcazvsptMC" , " dca to pv in the z axis MC" , kTH2D , {dcaAxis, axisPt}, false );
262+ histos.add (" hdcaxyvsptMCprimary" , " dca to pv in the xy plane MC primary particles" , kTH2D , {dcaAxis, axisPt}, false );
263+ histos.add (" hdcazvsptMCprimary" , " dca to pv in the z axis MC primary particles" , kTH2D , {dcaAxis, axisPt}, false );
264+ }
265+
253266 if (doprocessData) {
254267 histos.add (" hdcaxy" , " dca to pv in the xy plane" , kTH1D , {dcaAxis}, false );
255268 histos.add (" hdcaz" , " dca to pv in the z axis" , kTH1D , {dcaAxis}, false );
@@ -518,13 +531,77 @@ struct HeavyionMultiplicity {
518531 return true ;
519532 }
520533
534+
535+
536+
537+
521538 expressions::Filter trackSelectionProperMixed = ncheckbit(aod::track::v001::detectorMap, (uint8_t )o2::aod::track::ITS ) &&
522539 ncheckbit (aod::track::trackCutFlag, TrackSelectionIts) &&
523540 ifnode (ncheckbit(aod::track::v001::detectorMap, (uint8_t )o2::aod::track::TPC),
524541 ncheckbit(aod::track::trackCutFlag, TrackSelectionTpc), true) &&
525542 ifnode(dcaZ.node() > 0.f, nabs(aod::track::dcaZ) <= dcaZ && ncheckbit(aod::track::trackCutFlag, TrackSelectionDcaxyOnly),
526543 ncheckbit(aod::track::trackCutFlag, TrackSelectionDca));
527544
545+
546+ void processDCAvsptData (CollisionDataTable::iterator const & cols, TrackDataTable const & tracks) {
547+ if (!isEventSelected (cols)) {
548+ return ;
549+ }
550+
551+ for (const auto & track : tracks) {
552+ if (!track.hasITS ())
553+ continue ;
554+
555+ if (!isTrackSelected (track))
556+ continue ;
557+
558+ histos.fill (HIST (" hdcaxyvspt" ), track.dcaXY (), track.pt ());
559+ histos.fill (HIST (" hdcazvspt" ), track.dcaZ (), track.pt ());
560+
561+ }
562+
563+ }
564+
565+ void processDCAvsptMC (soa::Join<CollisionMCTrueTable, aod::McCollsExtra>::iterator const & mcCollision, CollisionMCRecTable const & RecCols, TrackMCTrueTable const &, TrackMCRecTable const & RecTracks) {
566+
567+ for (const auto & RecCol : RecCols) {
568+ if (!isEventSelected (RecCol)) {
569+ continue ;
570+ }
571+ if (RecCol.globalIndex () != mcCollision.bestCollisionIndex ()) {
572+ continue ;
573+ }
574+
575+ auto recTracksPart = RecTracks.sliceBy (perCollision, RecCol.globalIndex ());
576+
577+ for (const auto & Rectrack : recTracksPart) {
578+ if (!Rectrack.hasITS ())
579+ continue ;
580+
581+ if (!isTrackSelected (Rectrack))
582+ continue ;
583+
584+ if (!Rectrack.has_mcParticle ())
585+ continue ;
586+
587+
588+ histos.fill (HIST (" hdcaxyvsptMC" ), Rectrack.dcaXY (), Rectrack.pt ());
589+ histos.fill (HIST (" hdcazvsptMC" ), Rectrack.dcaZ (), Rectrack.pt ());
590+
591+ auto mcpart = Rectrack.mcParticle ();
592+
593+ if (mcpart.isPhysicalPrimary ()) {
594+ histos.fill (HIST (" hdcaxyvsptMCprimary" ), Rectrack.dcaXY (), Rectrack.pt ());
595+ histos.fill (HIST (" hdcazvsptMCprimary" ), Rectrack.dcaZ (), Rectrack.pt ());
596+ }
597+ }
598+ }
599+ }
600+
601+
602+
603+
604+
528605 void processData (CollisionDataTable::iterator const & cols, FilTrackDataTable const & tracks)
529606 {
530607 if (!isEventSelected (cols)) {
@@ -1032,7 +1109,9 @@ struct HeavyionMultiplicity {
10321109 histos.fill (HIST (" BcCentFT0CHist" ), multbc.centFT0C ());
10331110 histos.fill (HIST (" BcCentFT0MHist" ), multbc.centFT0M ());
10341111 }
1035-
1112+
1113+ PROCESS_SWITCH (HeavyionMultiplicity, processDCAvsptData, " process DCA data" , false );
1114+ PROCESS_SWITCH (HeavyionMultiplicity, processDCAvsptMC, " process DCA MC" , false );
10361115 PROCESS_SWITCH (HeavyionMultiplicity, processData, " process data CentFT0C" , false );
10371116 PROCESS_SWITCH (HeavyionMultiplicity, processCorrelation, " do correlation study in data" , false );
10381117 PROCESS_SWITCH (HeavyionMultiplicity, processMonteCarlo, " process MC CentFT0C" , false );
0 commit comments