@@ -206,8 +206,8 @@ struct UpcRhoAnalysis {
206206 Configurable<bool > requireTof{" requireTof" , false , " require TOF signal?" };
207207 Configurable<bool > useRecoFlag{" useRecoFlag" , false , " use UPC/STD reconstruction flag for event selection?" };
208208 Configurable<int > cutRecoFlag{" cutRecoFlag" , 1 , " 0 = std mode, 1 = upc mode" };
209- Configurable<bool > useRctFlag{" useRctFlag" , false , " use RCT flags for event selection?" };
210- Configurable<int > cutRctFlag{" cutRctFlag" , 0 , " 0 = off, 1 = CBT, 2 = CBT+ZDC, 3 = CBThadron, 4 = CBThadron+ZDC" };
209+ Configurable<bool > useRctFlag{" useRctFlag" , true , " use RCT flags for event selection?" };
210+ Configurable<int > cutRctFlag{" cutRctFlag" , 1 , " 0 = off, 1 = CBT, 2 = CBT+ZDC, 3 = CBThadron, 4 = CBThadron+ZDC" };
211211
212212 Configurable<bool > selectRuns{" selectRuns" , false , " select runs?" };
213213 Configurable<std::vector<int >> selectedRuns{" selectedRuns" , {544013 , 544028 , 544032 , 544091 , 544095 , 544098 , 544116 , 544121 , 544122 , 544123 , 544124 , 544184 , 544185 , 544389 , 544390 , 544391 , 544392 , 544451 , 544454 , 544474 , 544475 , 544476 , 544477 , 544490 , 544491 , 544492 , 544508 , 544510 , 544511 , 544512 , 544514 , 544515 , 544518 , 544548 , 544549 , 544550 , 544551 , 544564 , 544565 , 544567 , 544568 , 544580 , 544582 , 544583 , 544585 , 544614 , 544640 , 544652 , 544653 , 544672 , 544674 , 544692 , 544693 , 544694 , 544696 , 544739 , 544742 , 544754 , 544767 , 544794 , 544795 , 544797 , 544813 , 544868 , 544886 , 544887 , 544896 , 544913 , 544914 , 544917 , 544931 , 544947 , 544961 , 544963 , 544964 , 544968 , 544992 , 545009 , 545044 , 545047 , 545063 , 545064 , 545066 , 545185 , 545210 , 545223 , 545249 , 545291 , 545294 , 545295 , 545296 , 545312 }, " list of selected runs" };
@@ -257,7 +257,7 @@ struct UpcRhoAnalysis {
257257 void init (o2::framework::InitContext& context)
258258 {
259259 if (context.mOptions .get <bool >(" processSGdata" ) || context.mOptions .get <bool >(" processDGdata" )) {
260- // QA //
260+ // QA
261261 // collisions
262262 rQC.add (" QC/collisions/all/hPosXY" , " ;vertex #it{x} (cm);vertex #it{y} (cm);counts" , kTH2D , {{2000 , -0.1 , 0.1 }, {2000 , -0.1 , 0.1 }});
263263 rQC.add (" QC/collisions/all/hPosZ" , " ;vertex #it{z} (cm);counts" , kTH1D , {{400 , -20.0 , 20.0 }});
@@ -276,6 +276,7 @@ struct UpcRhoAnalysis {
276276 rQC.add (" QC/collisions/all/hTimeFDDA" , " ;FDDA time (ns);counts" , kTH1D , {{400 , -5.0 , 35.0 }});
277277 rQC.add (" QC/collisions/all/hTimeFDDC" , " ;FDDC time (ns);counts" , kTH1D , {{400 , -5.0 , 35.0 }});
278278 rQC.add (" QC/collisions/all/hOccupancyInTime" , " ;occupancy in time;counts" , kTH1D , {{1100 , 0.0 , 1100.0 }});
279+ rQC.add (" QC/collisions/hNumContribVsPVTracks" , " ;number of track.isPVContributor() per collision;collision.numContrib();counts" , kTH2D , {{101 , -0.5 , 100.5 }, {101 , -0.5 , 100.5 }});
279280 // events with selected rho candidates
280281 rQC.addClone (" QC/collisions/all/" , " QC/collisions/trackSelections/" );
281282 rQC.addClone (" QC/collisions/all/" , " QC/collisions/systemSelections/" );
@@ -291,9 +292,13 @@ struct UpcRhoAnalysis {
291292 rQC.get <TH2>(HIST (" QC/collisions/hSelectionCounterPerRun" ))->GetYaxis ()->SetBinLabel (i + 1 , std::to_string (runNumbers[i]).c_str ());
292293 // tracks
293294 rQC.add (" QC/tracks/all/hTpcNSigmaPi" , " ;TPC #it{n#sigma}(#pi);counts" , kTH1D , {nSigmaAxis});
295+ rQC.add (" QC/tracks/all/hPtVsEtaVsTpcNSigmaPi" , " ;TPC #it{n#sigma}(#pi);#it{p}_{T} (GeV/#it{c});#it{#eta}" , kTH3D , {{100 , -10.0 , 10.0 }, {200 , 0.0 , 4.0 }, {18 , -0.9 , 0.9 }});
294296 rQC.add (" QC/tracks/all/hTpcNSigmaEl" , " ;TPC #it{n#sigma}(e);counts" , kTH1D , {nSigmaAxis});
297+ rQC.add (" QC/tracks/all/hPtVsEtaVsTpcNSigmaEl" , " ;TPC #it{n#sigma}(e);#it{p}_{T} (GeV/#it{c});#it{#eta}" , kTH3D , {{100 , -10.0 , 10.0 }, {200 , 0.0 , 4.0 }, {18 , -0.9 , 0.9 }});
295298 rQC.add (" QC/tracks/all/hTpcNSigmaKa" , " ;TPC #it{n#sigma}(K);counts" , kTH1D , {nSigmaAxis});
299+ rQC.add (" QC/tracks/all/hPtVsEtaVsTpcNSigmaKa" , " ;TPC #it{n#sigma}(K);#it{p}_{T} (GeV/#it{c});#it{#eta}" , kTH3D , {{100 , -10.0 , 10.0 }, {200 , 0.0 , 4.0 }, {18 , -0.9 , 0.9 }});
296300 rQC.add (" QC/tracks/all/hTpcNSigmaPr" , " ;TPC #it{n#sigma}(p);counts" , kTH1D , {nSigmaAxis});
301+ rQC.add (" QC/tracks/all/hPtVsEtaVsTpcNSigmaPr" , " ;TPC #it{n#sigma}(p);#it{p}_{T} (GeV/#it{c});#it{#eta}" , kTH3D , {{100 , -10.0 , 10.0 }, {200 , 0.0 , 4.0 }, {18 , -0.9 , 0.9 }});
297302 rQC.add (" QC/tracks/all/hDcaXYZ" , " ;track #it{DCA}_{z} (cm);track #it{DCA}_{xy} (cm);counts" , kTH2D , {{1000 , -5.0 , 5.0 }, {400 , -2.0 , 2.0 }});
298303 rQC.add (" QC/tracks/all/hItsNCls" , " ;ITS #it{N}_{cls};counts" , kTH1D , {{9 , -0.5 , 8.5 }});
299304 rQC.add (" QC/tracks/all/hItsChi2NCl" , " ;ITS #it{#chi}^{2}/#it{N}_{cls};counts" , kTH1D , {{150 , 0.0 , 15.0 }});
@@ -351,6 +356,7 @@ struct UpcRhoAnalysis {
351356 rSystem.add (" system/all/unlike-sign/hM" , " ;#it{m} (GeV/#it{c}^{2});counts" , kTH1D , {mAxis });
352357 rSystem.add (" system/all/unlike-sign/hRecoSettingVsM" , " ;#it{m} (GeV/#it{c}^{2});reco setting;counts" , kTH2D , {mAxis , {2 , -0.5 , 1.5 }});
353358 rSystem.add (" system/all/unlike-sign/hPt" , " ;#it{p}_{T} (GeV/#it{c});counts" , kTH1D , {ptAxis});
359+ rSystem.add (" system/all/unlike-sign/hPtReweighting" , " ;#it{p}_{T} (GeV/#it{c});counts" , kTH1D , {{40 , 0.0 , 0.2 }});
354360 rSystem.add (" system/all/unlike-sign/hPt2" , " ;#it{p}_{T}^{2} (GeV^{2}/#it{c}^{2});counts" , kTH1D , {pt2Axis});
355361 rSystem.add (" system/all/unlike-sign/hPtVsM" , " ;#it{m} (GeV/#it{c}^{2});#it{p}_{T} (GeV/#it{c});counts" , kTH2D , {mAxis , ptAxis});
356362 rSystem.add (" system/all/unlike-sign/hPt2VsM" , " ;#it{m} (GeV/#it{c}^{2});#it{p}_{T}^{2} (GeV^{2}/#it{c}^{2});counts" , kTH2D , {mAxis , pt2Axis});
@@ -470,9 +476,13 @@ struct UpcRhoAnalysis {
470476 rQC.fill (HIST (" QC/tracks/" ) + HIST (AppliedSelections[cuts]) + HIST (" hEta" ), eta (track.px (), track.py (), track.pz ()));
471477 rQC.fill (HIST (" QC/tracks/" ) + HIST (AppliedSelections[cuts]) + HIST (" hPhi" ), phi (track.px (), track.py ()));
472478 rQC.fill (HIST (" QC/tracks/" ) + HIST (AppliedSelections[cuts]) + HIST (" hTpcNSigmaPi" ), track.tpcNSigmaPi ());
479+ rQC.fill (HIST (" QC/tracks/" ) + HIST (AppliedSelections[cuts]) + HIST (" hPtVsEtaVsTpcNSigmaPi" ), track.tpcNSigmaPi (), track.pt (), eta (track.px (), track.py (), track.pz ()));
473480 rQC.fill (HIST (" QC/tracks/" ) + HIST (AppliedSelections[cuts]) + HIST (" hTpcNSigmaEl" ), track.tpcNSigmaEl ());
481+ rQC.fill (HIST (" QC/tracks/" ) + HIST (AppliedSelections[cuts]) + HIST (" hPtVsEtaVsTpcNSigmaEl" ), track.tpcNSigmaEl (), track.pt (), eta (track.px (), track.py (), track.pz ()));
474482 rQC.fill (HIST (" QC/tracks/" ) + HIST (AppliedSelections[cuts]) + HIST (" hTpcNSigmaKa" ), track.tpcNSigmaKa ());
483+ rQC.fill (HIST (" QC/tracks/" ) + HIST (AppliedSelections[cuts]) + HIST (" hPtVsEtaVsTpcNSigmaKa" ), track.tpcNSigmaKa (), track.pt (), eta (track.px (), track.py (), track.pz ()));
475484 rQC.fill (HIST (" QC/tracks/" ) + HIST (AppliedSelections[cuts]) + HIST (" hTpcNSigmaPr" ), track.tpcNSigmaPr ());
485+ rQC.fill (HIST (" QC/tracks/" ) + HIST (AppliedSelections[cuts]) + HIST (" hPtVsEtaVsTpcNSigmaPr" ), track.tpcNSigmaPr (), track.pt (), eta (track.px (), track.py (), track.pz ()));
476486 rQC.fill (HIST (" QC/tracks/" ) + HIST (AppliedSelections[cuts]) + HIST (" hDcaXYZ" ), track.dcaZ (), track.dcaXY ());
477487 rQC.fill (HIST (" QC/tracks/" ) + HIST (AppliedSelections[cuts]) + HIST (" hItsNCls" ), track.itsNCls ());
478488 rQC.fill (HIST (" QC/tracks/" ) + HIST (AppliedSelections[cuts]) + HIST (" hItsChi2NCl" ), track.itsChi2NCl ());
@@ -498,6 +508,7 @@ struct UpcRhoAnalysis {
498508 if (cuts == 0 ) {
499509 rSystem.fill (HIST (" system/" ) + HIST (AppliedSelections[cuts]) + HIST (ChargeLabel[charge]) + HIST (" hM" ), mass);
500510 rSystem.fill (HIST (" system/" ) + HIST (AppliedSelections[cuts]) + HIST (ChargeLabel[charge]) + HIST (" hPt" ), pt);
511+ rSystem.fill (HIST (" system/" ) + HIST (AppliedSelections[cuts]) + HIST (ChargeLabel[charge]) + HIST (" hPtReweighting" ), pt);
501512 rSystem.fill (HIST (" system/" ) + HIST (AppliedSelections[cuts]) + HIST (ChargeLabel[charge]) + HIST (" hPt2" ), pt * pt);
502513 rSystem.fill (HIST (" system/" ) + HIST (AppliedSelections[cuts]) + HIST (ChargeLabel[charge]) + HIST (" hPtVsM" ), mass, pt);
503514 rSystem.fill (HIST (" system/" ) + HIST (AppliedSelections[cuts]) + HIST (ChargeLabel[charge]) + HIST (" hPt2VsM" ), mass, pt * pt);
@@ -510,6 +521,7 @@ struct UpcRhoAnalysis {
510521 } else {
511522 rSystem.fill (HIST (" system/" ) + HIST (" selected/" ) + HIST (NeutronClass[neutronClass]) + HIST (ChargeLabel[charge]) + HIST (" hM" ), mass);
512523 rSystem.fill (HIST (" system/" ) + HIST (" selected/" ) + HIST (NeutronClass[neutronClass]) + HIST (ChargeLabel[charge]) + HIST (" hPt" ), pt);
524+ rSystem.fill (HIST (" system/" ) + HIST (" selected/" ) + HIST (NeutronClass[neutronClass]) + HIST (ChargeLabel[charge]) + HIST (" hPtReweighting" ), pt);
513525 rSystem.fill (HIST (" system/" ) + HIST (" selected/" ) + HIST (NeutronClass[neutronClass]) + HIST (ChargeLabel[charge]) + HIST (" hPt2" ), pt * pt);
514526 rSystem.fill (HIST (" system/" ) + HIST (" selected/" ) + HIST (NeutronClass[neutronClass]) + HIST (ChargeLabel[charge]) + HIST (" hPtVsM" ), mass, pt);
515527 rSystem.fill (HIST (" system/" ) + HIST (" selected/" ) + HIST (NeutronClass[neutronClass]) + HIST (ChargeLabel[charge]) + HIST (" hPt2VsM" ), mass, pt * pt);
@@ -817,6 +829,14 @@ struct UpcRhoAnalysis {
817829 if (selectRuns && getRunIndex (collision.runNumber (), selectedRuns) == 0 )
818830 return ;
819831
832+ // check the number of PV tracks and the number of PV contrubutors
833+ int nPVTracks = 0 ;
834+ for (const auto & track : tracks) {
835+ if (track.isPVContributor ())
836+ nPVTracks++;
837+ }
838+ rQC.fill (HIST (" QC/collisions/hNumContribVsPVTracks" ), nPVTracks, collision.numContrib ());
839+
820840 fillCollisionQcHistos<0 >(collision); // fill QC histograms before cuts
821841 if (!collisionPassesCuts (collision, runIndex)) // apply collision cuts
822842 return ;
0 commit comments