@@ -115,7 +115,6 @@ struct UccZdc {
115115 Configurable<bool > isOccupancyCut{" isOccupancyCut" , true , " Occupancy cut?" };
116116 Configurable<bool > isApplyFT0CbasedOccupancy{" isApplyFT0CbasedOccupancy" , false , " T0C Occu cut" };
117117 Configurable<bool > isTDCcut{" isTDCcut" , false , " Use TDC cut" };
118- Configurable<bool > isZEMcut{" isZEMcut" , true , " Use ZEM cut" };
119118 Configurable<bool > useMidRapNchSel{" useMidRapNchSel" , true , " Use mid-rapidit Nch selection" };
120119 Configurable<bool > applyEff{" applyEff" , true , " Apply track-by-track efficiency correction" };
121120 Configurable<bool > applyFD{" applyFD" , false , " Apply track-by-track feed down correction" };
@@ -147,6 +146,7 @@ struct UccZdc {
147146 Configurable<float > minNch{" minNch" , 0 , " Min Nch (|eta|<0.8)" };
148147 Configurable<float > minZN{" minZN" , -0.5 , " Min ZN signal" };
149148 Configurable<float > minTdc{" minTdc" , -15.0 , " minimum TDC" };
149+ Configurable<float > arbScale{" arbScale" , 100.0 , " Scale factor for forward multiplicity" };
150150
151151 Configurable<float > maxNch{" maxNch" , 3000 , " Max Nch (|eta|<0.8)" };
152152 Configurable<float > maxITSTrack{" maxITSTrack" , 6000 ., " Min ITS tracks" };
@@ -498,8 +498,8 @@ struct UccZdc {
498498 if (occuValue < minOccCut || occuValue > maxOccCut) {
499499 return false ;
500500 }
501+ registry.fill (HIST (" hEventCounter" ), EvCutLabel::OccuCut);
501502 }
502- registry.fill (HIST (" hEventCounter" ), EvCutLabel::OccuCut);
503503
504504 if (col.centFT0C () < minT0CcentCut || col.centFT0C () > maxT0CcentCut) {
505505 return false ;
@@ -530,8 +530,8 @@ struct UccZdc {
530530 registry.fill (HIST (" hEventCounter" ), EvCutLabel::Zdc);
531531 auto zdc = foundBC.zdc ();
532532
533- double aT0A{- 999 .};
534- double aT0C{- 999 .};
533+ double aT0A{0 .};
534+ double aT0C{0 .};
535535 if (foundBC.has_ft0 ()) {
536536 for (const auto & amplitude : foundBC.ft0 ().amplitudeA ()) {
537537 aT0A += amplitude;
@@ -544,18 +544,18 @@ struct UccZdc {
544544 }
545545 registry.fill (HIST (" hEventCounter" ), EvCutLabel::TZero);
546546
547- double aV0A{- 999 .};
547+ double aV0A{0 .};
548548 if (foundBC.has_fv0a ()) {
549549 for (const auto & amplitude : foundBC.fv0a ().amplitude ()) {
550550 aV0A += amplitude;
551551 }
552552 }
553553
554554 const double nPV{collision.multNTracksPVeta1 () / 1 .};
555- const double normT0M{(aT0A + aT0C) / 100 . };
556- const double normV0A{aV0A / 100 . };
557- const double normT0A{aT0A / 100 . };
558- const double normT0C{aT0C / 100 . };
555+ const double normT0M{(aT0A + aT0C) / arbScale };
556+ const double normV0A{aV0A / arbScale };
557+ const double normT0A{aT0A / arbScale };
558+ const double normT0C{aT0C / arbScale };
559559 float znA{zdc.amplitudeZNA ()};
560560 float znC{zdc.amplitudeZNC ()};
561561 float zpA{zdc.amplitudeZPA ()};
@@ -582,14 +582,6 @@ struct UccZdc {
582582 registry.fill (HIST (" hEventCounter" ), EvCutLabel::Tdc);
583583 }
584584
585- // ZEM cut
586- if (isZEMcut) {
587- if (sumZEMs < zemCut) {
588- return ;
589- }
590- registry.fill (HIST (" hEventCounter" ), EvCutLabel::Zem);
591- }
592-
593585 int itsTracks = 0 , glbTracks = 0 ;
594586 for (const auto & track : tracks) {
595587 if (track.hasITS () && ((track.eta () > minEta) && (track.eta () < maxEta))) {
@@ -667,19 +659,7 @@ struct UccZdc {
667659
668660 registry.fill (HIST (" zPos" ), collision.posZ ());
669661 registry.fill (HIST (" T0Ccent" ), collision.centFT0C ());
670- registry.fill (HIST (" ZNAamp" ), znA);
671- registry.fill (HIST (" ZNCamp" ), znC);
672- registry.fill (HIST (" ZPAamp" ), zpA);
673- registry.fill (HIST (" ZPCamp" ), zpC);
674- registry.fill (HIST (" ZNAVsZNC" ), znC, znA);
675- registry.fill (HIST (" ZNAVsZPA" ), zpA, znA);
676- registry.fill (HIST (" ZNCVsZPC" ), zpC, znC);
677- registry.fill (HIST (" ZPAVsZPC" ), zpC, zpA);
678- registry.fill (HIST (" ZNVsZEM" ), sumZEMs, sumZNs);
679662 registry.fill (HIST (" Debunch" ), tZDCdif, tZDCsum);
680- registry.fill (HIST (" ZNVsFT0A" ), normT0A, sumZNs);
681- registry.fill (HIST (" ZNVsFT0C" ), normT0C, sumZNs);
682- registry.fill (HIST (" ZNVsFT0M" ), normT0M, sumZNs);
683663 registry.fill (HIST (" NchVsFV0A" ), normV0A, glbTracks);
684664 registry.fill (HIST (" NchVsFT0A" ), normT0A, glbTracks);
685665 registry.fill (HIST (" NchVsFT0C" ), normT0C, glbTracks);
@@ -688,12 +668,29 @@ struct UccZdc {
688668 registry.fill (HIST (" Nch" ), glbTracks);
689669 registry.fill (HIST (" NchVsNPV" ), collision.multNTracksPVeta1 (), glbTracks);
690670 registry.fill (HIST (" NchVsITStracks" ), itsTracks, glbTracks);
691- registry.fill (HIST (" ZNAVsNch" ), glbTracks, znA);
692- registry.fill (HIST (" ZNCVsNch" ), glbTracks, znC);
693- registry.fill (HIST (" ZNVsNch" ), glbTracks, sumZNs);
694- registry.fill (HIST (" ZNDifVsNch" ), glbTracks, znA - znC);
695671 if (glbTracks >= minNchSel)
696672 registry.fill (HIST (" NchVsOneParCorr" ), glbTracks, sumpt / glbTracks);
673+
674+ // ZEM cut
675+ if (sumZEMs > zemCut) {
676+ registry.fill (HIST (" hEventCounter" ), EvCutLabel::Zem);
677+ registry.fill (HIST (" ZNAamp" ), znA);
678+ registry.fill (HIST (" ZNCamp" ), znC);
679+ registry.fill (HIST (" ZPAamp" ), zpA);
680+ registry.fill (HIST (" ZPCamp" ), zpC);
681+ registry.fill (HIST (" ZNAVsZNC" ), znC, znA);
682+ registry.fill (HIST (" ZNAVsZPA" ), zpA, znA);
683+ registry.fill (HIST (" ZNCVsZPC" ), zpC, znC);
684+ registry.fill (HIST (" ZPAVsZPC" ), zpC, zpA);
685+ registry.fill (HIST (" ZNVsZEM" ), sumZEMs, sumZNs);
686+ registry.fill (HIST (" ZNVsFT0A" ), normT0A, sumZNs);
687+ registry.fill (HIST (" ZNVsFT0C" ), normT0C, sumZNs);
688+ registry.fill (HIST (" ZNVsFT0M" ), normT0M, sumZNs);
689+ registry.fill (HIST (" ZNAVsNch" ), glbTracks, znA);
690+ registry.fill (HIST (" ZNCVsNch" ), glbTracks, znC);
691+ registry.fill (HIST (" ZNVsNch" ), glbTracks, sumZNs);
692+ registry.fill (HIST (" ZNDifVsNch" ), glbTracks, znA - znC);
693+ }
697694 }
698695 PROCESS_SWITCH (UccZdc, processQA, " Process QA" , true );
699696 void processZdcCollAss (o2::aod::ColEvSels::iterator const & collision, o2::aod::BCsRun3 const & /* bcs*/ , aod::Zdcs const & /* zdcs*/ , aod::FV0As const & /* fv0as*/ , aod::FT0s const & /* ft0s*/ , TheFilteredTracks const & tracks)
@@ -711,8 +708,8 @@ struct UccZdc {
711708 }
712709 registry.fill (HIST (" hEventCounter" ), EvCutLabel::Zdc);
713710
714- double aT0A{- 999 .};
715- double aT0C{- 999 .};
711+ double aT0A{0 .};
712+ double aT0C{0 .};
716713 if (foundBC.has_ft0 ()) {
717714 for (const auto & amplitude : foundBC.ft0 ().amplitudeA ()) {
718715 aT0A += amplitude;
@@ -725,16 +722,16 @@ struct UccZdc {
725722 }
726723 registry.fill (HIST (" hEventCounter" ), EvCutLabel::TZero);
727724
728- double aV0A{- 999 .};
725+ double aV0A{0 .};
729726 if (foundBC.has_fv0a ()) {
730727 for (const auto & amplitude : foundBC.fv0a ().amplitude ()) {
731728 aV0A += amplitude;
732729 }
733730 }
734731
735732 const double nPV{collision.multNTracksPVeta1 () / 1 .};
736- const double normT0M{(aT0A + aT0C) / 100 . };
737- const double normV0A{aV0A / 100 . };
733+ const double normT0M{(aT0A + aT0C) / arbScale };
734+ const double normV0A{aV0A / arbScale };
738735 float znA{foundBC.zdc ().amplitudeZNA ()};
739736 float znC{foundBC.zdc ().amplitudeZNC ()};
740737 float zpA{foundBC.zdc ().amplitudeZPA ()};
@@ -772,14 +769,6 @@ struct UccZdc {
772769 registry.fill (HIST (" hEventCounter" ), EvCutLabel::Tdc);
773770 }
774771
775- // ZEM cut
776- if (isZEMcut) {
777- if (sumZEMs < zemCut) {
778- return ;
779- }
780- registry.fill (HIST (" hEventCounter" ), EvCutLabel::Zem);
781- }
782-
783772 // Nch-based selection
784773 double glbTracks{0.0 };
785774 for (const auto & track : tracks) {
@@ -961,17 +950,11 @@ struct UccZdc {
961950 registry.fill (HIST (" NchUncorrected" ), glbTracks);
962951 registry.fill (HIST (" NchVsV0A" ), nchMult, normV0A);
963952 registry.fill (HIST (" NchVsT0M" ), nchMult, normT0M);
964- registry.fill (HIST (" NchVsZN" ), nchMult, sumZNs);
965- registry.fill (HIST (" NchVsZP" ), nchMult, sumZPs);
966953
967954 registry.fill (HIST (" NchVsOneParCorr" ), nchMult, oneParCorr);
968955 registry.fill (HIST (" NchVsTwoParCorr" ), nchMult, twoParCorr);
969956 registry.fill (HIST (" NchVsThreeParCorr" ), nchMult, threeParCorr);
970957
971- registry.fill (HIST (" NchVsOneParCorrVsZN" ), nchMult, sumZNs, oneParCorr);
972- registry.fill (HIST (" NchVsTwoParCorrVsZN" ), nchMult, sumZNs, twoParCorr);
973- registry.fill (HIST (" NchVsThreeParCorrVsZN" ), nchMult, sumZNs, threeParCorr);
974-
975958 registry.fill (HIST (" NchVsOneParCorrVsT0M" ), nchMult, normT0M, oneParCorr);
976959 registry.fill (HIST (" NchVsTwoParCorrVsT0M" ), nchMult, normT0M, twoParCorr);
977960 registry.fill (HIST (" NchVsThreeParCorrVsT0M" ), nchMult, normT0M, threeParCorr);
@@ -980,8 +963,17 @@ struct UccZdc {
980963 registry.fill (HIST (" NchVsTwoParCorrVsV0A" ), nchMult, normV0A, twoParCorr);
981964 registry.fill (HIST (" NchVsThreeParCorrVsV0A" ), nchMult, normV0A, threeParCorr);
982965
966+ if (sumZEMs > zemCut) {
967+ registry.fill (HIST (" hEventCounter" ), EvCutLabel::Zem);
968+ registry.fill (HIST (" NchVsZN" ), nchMult, sumZNs);
969+ registry.fill (HIST (" NchVsZP" ), nchMult, sumZPs);
970+ registry.fill (HIST (" NchVsOneParCorrVsZN" ), nchMult, sumZNs, oneParCorr);
971+ registry.fill (HIST (" NchVsTwoParCorrVsZN" ), nchMult, sumZNs, twoParCorr);
972+ registry.fill (HIST (" NchVsThreeParCorrVsZN" ), nchMult, sumZNs, threeParCorr);
973+ }
974+
983975 const uint64_t timeStamp{foundBC.timestamp ()};
984- eventSampling (tracks, normV0A, normT0M, sumZNs, timeStamp);
976+ eventSampling (tracks, normV0A, normT0M, sumZNs, sumZEMs, timeStamp);
985977 }
986978 PROCESS_SWITCH (UccZdc, processZdcCollAss, " Process ZDC W/Coll Ass." , true );
987979
@@ -1024,14 +1016,7 @@ struct UccZdc {
10241016 return ;
10251017 }
10261018
1027- // double aV0A{-999.};
1028- // if (foundBC.has_fv0a()) {
1029- // for (const auto& amplitude : foundBC.fv0a().amplitude()) { aV0A += amplitude; }
1030- // }
1031-
1032- const double normT0M{(aT0A + aT0C) / 100 .};
1033- // const double normV0A{aV0A/100.};
1034-
1019+ const double normT0M{(aT0A + aT0C) / arbScale};
10351020 double nchRaw{0 .};
10361021 double nchMult{0 .};
10371022 double nchMC{0 .};
@@ -1197,7 +1182,6 @@ struct UccZdc {
11971182 if (nchMC < minNchSel) {
11981183 continue ;
11991184 }
1200- // printf("nchMult = %f | nchMC = %f | nchMult/nchMc = %f\n",nchMult,nchMC,nchMult/nchMC);
12011185
12021186 double p1MC, p2MC, p3MC, p4MC, w1MC, w2MC, w3MC, w4MC;
12031187 p1MC = p2MC = p3MC = p4MC = w1MC = w2MC = w3MC = w4MC = 0.0 ;
@@ -1588,7 +1572,7 @@ struct UccZdc {
15881572 }
15891573
15901574 template <typename T, typename U, typename V>
1591- void eventSampling (const T& tracks, const U& normV0A, const U& normT0M, const U& sumZNs, const V& timeStamp)
1575+ void eventSampling (const T& tracks, const U& normV0A, const U& normT0M, const U& sumZNs, const U& sumZEMs, const V& timeStamp)
15921576 {
15931577 TRandom3 rndGen (timeStamp);
15941578 std::vector<uint64_t > vPoisson;
@@ -1687,8 +1671,6 @@ struct UccZdc {
16871671 pTs.emplace_back (pt);
16881672 vecEff.emplace_back (effValue);
16891673 vecFD.emplace_back (fdValue);
1690- // To calculate event-averaged <pt>
1691- registry.fill (HIST (" NchVsZNVsPt" ), nchMult, sumZNs, pt * (fdValue / effValue));
16921674 }
16931675 }
16941676 } else {
@@ -1704,9 +1686,6 @@ struct UccZdc {
17041686 pTs.emplace_back (track.pt ());
17051687 vecEff.emplace_back (1 .);
17061688 vecFD.emplace_back (1 .);
1707-
1708- // To calculate event-averaged <pt>
1709- registry.fill (HIST (" NchVsZNVsPt" ), nchMult, sumZNs, track.pt ());
17101689 }
17111690 }
17121691
@@ -1727,21 +1706,23 @@ struct UccZdc {
17271706 const double numThreeParCorr{std::pow (p1, 3 .) - (3 . * p2 * p1) + (2 . * p3)};
17281707 const double threeParCorr{numThreeParCorr / denThreeParCorr};
17291708
1730- hNchVsZN[replica]->Fill (nchMult, sumZNs);
17311709 hNchVsV0A[replica]->Fill (nchMult, normV0A);
17321710 hNchVsT0M[replica]->Fill (nchMult, normT0M);
17331711
1734- pNchVsOneParCorrVsZN[replica]->Fill (nchMult, sumZNs, oneParCorr);
1735- pNchVsTwoParCorrVsZN[replica]->Fill (nchMult, sumZNs, twoParCorr);
1736- pNchVsThreeParCorrVsZN[replica]->Fill (nchMult, sumZNs, threeParCorr);
1737-
17381712 pNchVsOneParCorrVsT0M[replica]->Fill (nchMult, normT0M, oneParCorr);
17391713 pNchVsTwoParCorrVsT0M[replica]->Fill (nchMult, normT0M, twoParCorr);
17401714 pNchVsThreeParCorrVsT0M[replica]->Fill (nchMult, normT0M, threeParCorr);
17411715
17421716 pNchVsOneParCorrVsV0A[replica]->Fill (nchMult, normV0A, oneParCorr);
17431717 pNchVsTwoParCorrVsV0A[replica]->Fill (nchMult, normV0A, twoParCorr);
17441718 pNchVsThreeParCorrVsV0A[replica]->Fill (nchMult, normV0A, threeParCorr);
1719+
1720+ if (sumZEMs > zemCut) {
1721+ hNchVsZN[replica]->Fill (nchMult, sumZNs);
1722+ pNchVsOneParCorrVsZN[replica]->Fill (nchMult, sumZNs, oneParCorr);
1723+ pNchVsTwoParCorrVsZN[replica]->Fill (nchMult, sumZNs, twoParCorr);
1724+ pNchVsThreeParCorrVsZN[replica]->Fill (nchMult, sumZNs, threeParCorr);
1725+ }
17451726 } // event per replica
17461727 } // replica's loop
17471728 }
0 commit comments