@@ -47,9 +47,21 @@ namespace tree
4747DECLARE_SOA_COLUMN (PtSideA, ptSideA, std::vector<float >);
4848DECLARE_SOA_COLUMN (RapSideA, rapSideA, std::vector<float >);
4949DECLARE_SOA_COLUMN (PhiSideA, phiSideA, std::vector<float >);
50+ DECLARE_SOA_COLUMN (TPCSignalSideA, tpcSignalSideA, std::vector<float >);
51+ DECLARE_SOA_COLUMN (TOFSignalSideA, tofSignalSideA, std::vector<float >);
52+ DECLARE_SOA_COLUMN (TPCNSigmaPiSideA, tpcNSigmaPiSideA, std::vector<float >);
53+ DECLARE_SOA_COLUMN (TOFNSigmaPiSideA, tofNSigmaPiSideA, std::vector<float >);
54+ DECLARE_SOA_COLUMN (TPCNSigmaKaSideA, tpcNSigmaKaSideA, std::vector<float >);
55+ DECLARE_SOA_COLUMN (TOFNSigmaKaSideA, tofNSigmaKaSideA, std::vector<float >);
5056DECLARE_SOA_COLUMN (PtSideC, ptSideC, std::vector<float >);
5157DECLARE_SOA_COLUMN (RapSideC, rapSideC, std::vector<float >);
5258DECLARE_SOA_COLUMN (PhiSideC, phiSideC, std::vector<float >);
59+ DECLARE_SOA_COLUMN (TPCSignalSideC, tpcSignalSideC, std::vector<float >);
60+ DECLARE_SOA_COLUMN (TOFSignalSideC, tofSignalSideC, std::vector<float >);
61+ DECLARE_SOA_COLUMN (TPCNSigmaPiSideC, tpcNSigmaPiSideC, std::vector<float >);
62+ DECLARE_SOA_COLUMN (TOFNSigmaPiSideC, tofNSigmaPiSideC, std::vector<float >);
63+ DECLARE_SOA_COLUMN (TPCNSigmaKaSideC, tpcNSigmaKaSideC, std::vector<float >);
64+ DECLARE_SOA_COLUMN (TOFNSigmaKaSideC, tofNSigmaKaSideC, std::vector<float >);
5365DECLARE_SOA_COLUMN (NchSideA, nchSideA, int );
5466DECLARE_SOA_COLUMN (MultiplicitySideA, multiplicitySideA, int );
5567DECLARE_SOA_COLUMN (NchSideC, nchSideC, int );
@@ -59,9 +71,21 @@ DECLARE_SOA_TABLE(TREE, "AOD", "Tree",
5971 tree::PtSideA,
6072 tree::RapSideA,
6173 tree::PhiSideA,
74+ tree::TPCSignalSideA,
75+ tree::TOFSignalSideA,
76+ tree::TPCNSigmaPiSideA,
77+ tree::TOFNSigmaPiSideA,
78+ tree::TPCNSigmaKaSideA,
79+ tree::TOFNSigmaKaSideA,
6280 tree::PtSideC,
6381 tree::RapSideC,
6482 tree::PhiSideC,
83+ tree::TPCSignalSideC,
84+ tree::TOFSignalSideC,
85+ tree::TPCNSigmaPiSideC,
86+ tree::TOFNSigmaPiSideC,
87+ tree::TPCNSigmaKaSideC,
88+ tree::TOFNSigmaKaSideC,
6589 tree::NchSideA,
6690 tree::MultiplicitySideA,
6791 tree::NchSideC,
@@ -127,11 +151,13 @@ struct upcPhotonuclearAnalysisJMG {
127151 Filter collisionZNTimeFilter = nabs(aod::udzdc::timeZNA) < myTimeZNACut && nabs(aod::udzdc::timeZNC) < myTimeZNCCut;
128152
129153 using FullSGUDCollision = soa::Filtered<soa::Join<aod::UDCollisions, aod::UDCollisionsSels, aod::SGCollisions, aod::UDZdcsReduced>>;
130- using FullUDTracks = soa::Join<aod::UDTracks, aod::UDTracksExtra, aod::UDTracksDCA, aod::UDTracksFlags>;
154+ using FullUDTracks = soa::Join<aod::UDTracks, aod::UDTracksExtra, aod::UDTracksPID, aod:: UDTracksDCA, aod::UDTracksFlags>;
131155
132156 // Output definitions
133- OutputObj<CorrelationContainer> same{" sameEvent" };
134- OutputObj<CorrelationContainer> mixed{" mixedEvent" };
157+ OutputObj<CorrelationContainer> sameGapSideA{" sameEventGapSideA" };
158+ OutputObj<CorrelationContainer> mixedGapSideA{" mixedEventGapSideA" };
159+ OutputObj<CorrelationContainer> sameGapSideC{" sameEventGapSideC" };
160+ OutputObj<CorrelationContainer> mixedGapSideC{" mixedEventGapSideC" };
135161
136162 UPCPairCuts mPairCuts ;
137163 bool doPairCuts = false ;
@@ -175,6 +201,7 @@ struct upcPhotonuclearAnalysisJMG {
175201 histos.add (" Tracks/SGsideA/hTrackPhi" , " #it{#phi} distribution; #it{#phi}; counts" , kTH1F , {axisPhi});
176202 histos.add (" Tracks/SGsideA/hTrackEta" , " #it{#eta} distribution; #it{#eta}; counts" , kTH1F , {axisEta});
177203 histos.add (" Tracks/SGsideA/hTrackTPCSignnalP" , " #it{TPC dE/dx vs p}; #it{p*charge}; #it{TPC dE/dx}" , kTH2F , {axisP, axisTPCSignal});
204+ histos.add (" Tracks/SGsideA/hTrackTOFSignnalP" , " #it{TOF signal vs p}; #it{p*charge}; #it{TOF signal}" , kTH2F , {axisP, axisTPCSignal});
178205 histos.add (" Tracks/SGsideA/hTrackITSNCls" , " #it{N Clusters ITS} distribution; #it{N Clusters ITS}; counts" , kTH1F , {axisNCls});
179206 histos.add (" Tracks/SGsideA/hTrackITSChi2NCls" , " #it{N Clusters Chi2 ITS} distribution; #it{N Clusters Chi2 ITS}; counts" , kTH1F , {axisChi2NCls});
180207 histos.add (" Tracks/SGsideA/hTrackNClsCrossedRowsOverNClsFindable" , " #it{NClsCrossedRows/FindableNCls} distribution in TPC; #it{NClsCrossedRows/FindableNCls}; counts" , kTH1F , {axisTPCNClsCrossedRowsMin});
@@ -205,6 +232,7 @@ struct upcPhotonuclearAnalysisJMG {
205232 histos.add (" Tracks/SGsideC/hTrackPhi" , " #it{#phi} distribution; #it{#phi}; counts" , kTH1F , {axisPhi});
206233 histos.add (" Tracks/SGsideC/hTrackEta" , " #it{#eta} distribution; #it{#eta}; counts" , kTH1F , {axisEta});
207234 histos.add (" Tracks/SGsideC/hTrackTPCSignnalP" , " #it{TPC dE/dx vs p}; #it{p*charge}; #it{TPC dE/dx}" , kTH2F , {axisP, axisTPCSignal});
235+ histos.add (" Tracks/SGsideC/hTrackTOFSignnalP" , " #it{TOF signal vs p}; #it{p*charge}; #it{TOF signal}" , kTH2F , {axisP, axisTPCSignal});
208236 histos.add (" Tracks/SGsideC/hTrackITSNCls" , " #it{N Clusters ITS} distribution; #it{N Clusters ITS}; counts" , kTH1F , {axisNCls});
209237 histos.add (" Tracks/SGsideC/hTrackITSChi2NCls" , " #it{N Clusters Chi2 ITS} distribution; #it{N Clusters Chi2 ITS}; counts" , kTH1F , {axisChi2NCls});
210238 histos.add (" Tracks/SGsideC/hTrackNClsCrossedRowsOverNClsFindable" , " #it{NClsCrossedRows/FindableNCls} distribution in TPC; #it{NClsCrossedRows/FindableNCls}; counts" , kTH1F , {axisTPCNClsCrossedRowsMin});
@@ -240,12 +268,14 @@ struct upcPhotonuclearAnalysisJMG {
240268 {axisEtaEfficiency, " #eta" },
241269 {axisPtEfficiency, " p_{T} (GeV/c)" },
242270 {axisVertexEfficiency, " z-vtx (cm)" }};
243- same.setObject (new CorrelationContainer (" sameEvent" , " sameEvent" , corrAxis, effAxis, {}));
244- mixed.setObject (new CorrelationContainer (" mixedEvent" , " mixedEvent" , corrAxis, effAxis, {}));
271+ sameGapSideA.setObject (new CorrelationContainer (" sameEventGapSideA" , " sameEventGapSideA" , corrAxis, effAxis, {}));
272+ mixedGapSideA.setObject (new CorrelationContainer (" mixedEventGapSideA" , " mixedEventGapSideA" , corrAxis, effAxis, {}));
273+ sameGapSideC.setObject (new CorrelationContainer (" sameEventGapSideC" , " sameEventGapSideC" , corrAxis, effAxis, {}));
274+ mixedGapSideC.setObject (new CorrelationContainer (" mixedEventGapSideC" , " mixedEventGapSideC" , corrAxis, effAxis, {}));
245275 }
246276
247- std::vector<double > vtxBinsEdges{VARIABLE_WIDTH, -10 .0f , -7 . 0f , - 5 .0f , - 2 . 0f , 0 .0f , 2 . 0f , 5 . 0f , 7 .0f , 10 .0f };
248- std::vector<double > multBinsEdges{VARIABLE_WIDTH, 0 .0f , 50 .0f , 400 .0f };
277+ std::vector<double > vtxBinsEdges{VARIABLE_WIDTH, -10 .0f , -5 .0f , 0 .0f , 5 .0f , 10 .0f };
278+ // std::vector<double> multBinsEdges{VARIABLE_WIDTH, 0.0f, 50.0f, 400.0f};
249279 SliceCache cache;
250280
251281 // Binning only on PosZ without multiplicity
@@ -396,8 +426,8 @@ struct upcPhotonuclearAnalysisJMG {
396426 int sgSide = reconstructedCollision.gapSide ();
397427 int nTracksCharged = 0 ;
398428 float sumPt = 0 ;
399- std::vector<float > vTrackPtSideA, vTrackEtaSideA, vTrackPhiSideA;
400- std::vector<float > vTrackPtSideC, vTrackEtaSideC, vTrackPhiSideC;
429+ std::vector<float > vTrackPtSideA, vTrackEtaSideA, vTrackPhiSideA, vTrackTPCSignalSideA, vTrackTOFSignalSideA, vTrackTPCNSigmaPiSideA, vTrackTOFNSigmaPiSideA, vTrackTPCNSigmaKaSideA, vTrackTOFNSigmaKaSideA ;
430+ std::vector<float > vTrackPtSideC, vTrackEtaSideC, vTrackPhiSideC, vTrackTPCSignalSideC, vTrackTOFSignalSideC, vTrackTPCNSigmaPiSideC, vTrackTOFNSigmaPiSideC, vTrackTPCNSigmaKaSideC, vTrackTOFNSigmaKaSideC ;
401431 int nTracksChargedSideA (-222 ), nTracksChargedSideC (-222 );
402432 int multiplicitySideA (-222 ), multiplicitySideC (-222 );
403433
@@ -427,9 +457,16 @@ struct upcPhotonuclearAnalysisJMG {
427457 histos.fill (HIST (" Tracks/SGsideA/hTrackPhi" ), phi (track.px (), track.py ()));
428458 histos.fill (HIST (" Tracks/SGsideA/hTrackEta" ), eta (track.px (), track.py (), track.pz ()));
429459 histos.fill (HIST (" Tracks/SGsideA/hTrackTPCSignnalP" ), momentum (track.px (), track.py (), track.pz ()) * track.sign (), track.tpcSignal ());
460+ histos.fill (HIST (" Tracks/SGsideA/hTrackTOFSignnalP" ), momentum (track.px (), track.py (), track.pz ()) * track.sign (), track.tofSignal ());
430461 vTrackPtSideA.push_back (track.pt ());
431462 vTrackEtaSideA.push_back (eta (track.px (), track.py (), track.pz ()));
432463 vTrackPhiSideA.push_back (phi (track.px (), track.py ()));
464+ vTrackTPCSignalSideA.push_back (track.tpcSignal ());
465+ vTrackTOFSignalSideA.push_back (track.tofSignal ());
466+ vTrackTPCNSigmaPiSideA.push_back (track.tpcNSigmaPi ());
467+ vTrackTOFNSigmaPiSideA.push_back (track.tofNSigmaPi ());
468+ vTrackTPCNSigmaKaSideA.push_back (track.tpcNSigmaKa ());
469+ vTrackTOFNSigmaKaSideA.push_back (track.tofNSigmaKa ());
433470
434471 histos.fill (HIST (" Tracks/SGsideA/hTrackITSNCls" ), track.itsNCls ());
435472 histos.fill (HIST (" Tracks/SGsideA/hTrackITSChi2NCls" ), track.itsChi2NCl ());
@@ -476,9 +513,16 @@ struct upcPhotonuclearAnalysisJMG {
476513 histos.fill (HIST (" Tracks/SGsideC/hTrackPhi" ), phi (track.px (), track.py ()));
477514 histos.fill (HIST (" Tracks/SGsideC/hTrackEta" ), eta (track.px (), track.py (), track.pz ()));
478515 histos.fill (HIST (" Tracks/SGsideC/hTrackTPCSignnalP" ), momentum (track.px (), track.py (), track.pz ()) * track.sign (), track.tpcSignal ());
516+ histos.fill (HIST (" Tracks/SGsideC/hTrackTOFSignnalP" ), momentum (track.px (), track.py (), track.pz ()) * track.sign (), track.tofSignal ());
479517 vTrackPtSideC.push_back (track.pt ());
480518 vTrackEtaSideC.push_back (eta (track.px (), track.py (), track.pz ()));
481519 vTrackPhiSideC.push_back (phi (track.px (), track.py ()));
520+ vTrackTPCSignalSideC.push_back (track.tpcSignal ());
521+ vTrackTOFSignalSideC.push_back (track.tofSignal ());
522+ vTrackTPCNSigmaPiSideC.push_back (track.tpcNSigmaPi ());
523+ vTrackTOFNSigmaPiSideC.push_back (track.tofNSigmaPi ());
524+ vTrackTPCNSigmaKaSideC.push_back (track.tpcNSigmaKa ());
525+ vTrackTOFNSigmaKaSideC.push_back (track.tofNSigmaKa ());
482526
483527 histos.fill (HIST (" Tracks/SGsideC/hTrackITSNCls" ), track.itsNCls ());
484528 histos.fill (HIST (" Tracks/SGsideC/hTrackITSChi2NCls" ), track.itsChi2NCl ());
@@ -504,80 +548,92 @@ struct upcPhotonuclearAnalysisJMG {
504548 return ;
505549 break ;
506550 }
507- tree (vTrackPtSideA, vTrackEtaSideA, vTrackPhiSideA, vTrackPtSideC, vTrackEtaSideC, vTrackPhiSideC, nTracksChargedSideA, multiplicitySideA, nTracksChargedSideC, multiplicitySideC);
551+ tree (vTrackPtSideA, vTrackEtaSideA, vTrackPhiSideA, vTrackTPCSignalSideA, vTrackTOFSignalSideA, vTrackTPCNSigmaPiSideA, vTrackTOFNSigmaPiSideA, vTrackTPCNSigmaKaSideA, vTrackTOFNSigmaKaSideA, vTrackPtSideC, vTrackEtaSideC, vTrackPhiSideC, vTrackTPCSignalSideA, vTrackTOFSignalSideA, vTrackTPCNSigmaPiSideA, vTrackTOFNSigmaPiSideA, vTrackTPCNSigmaKaSideA, vTrackTOFNSigmaKaSideA , nTracksChargedSideA, multiplicitySideA, nTracksChargedSideC, multiplicitySideC);
508552 // nTracksChargedSideA = nTracksChargedSideC = multiplicitySideA = multiplicitySideC = 0;
509553 }
510554 PROCESS_SWITCH (upcPhotonuclearAnalysisJMG, processSG, " Process in UD tables" , true );
511555
512556 void processSame (FullSGUDCollision::iterator const & reconstructedCollision, FullUDTracks const & reconstructedTracks)
513557 {
514558 int sgSide = reconstructedCollision.gapSide ();
559+ float multiplicity = 0 ;
515560
516- float multiplicity = reconstructedTracks.size ();
517561 switch (sgSide) {
518562 case 0 : // gap for side A
519563 if (isCollisionCutSG (reconstructedCollision, 0 ) == false ) {
520564 return ;
521565 }
522- if (fillCollisionUD (same, multiplicity) == false ) {
566+ multiplicity = reconstructedTracks.size ();
567+ if (fillCollisionUD (sameGapSideA, multiplicity) == false ) {
523568 return ;
524569 }
525- LOGF (info, " Filling same events" );
570+ LOGF (info, " Filling sameGapSideA events" );
526571 histos.fill (HIST (" eventcount" ), -2 );
527572 fillQAUD (reconstructedTracks);
528- fillCorrelationsUD (same , reconstructedTracks, reconstructedTracks, multiplicity, reconstructedCollision.posZ ());
573+ fillCorrelationsUD (sameGapSideA , reconstructedTracks, reconstructedTracks, multiplicity, reconstructedCollision.posZ ());
529574 break ;
530575 case 1 : // gap for side C
531- // if (isCollisionCutSG(reconstructedCollision, 1) == false) {
532- // return;
533- // }
576+ if (isCollisionCutSG (reconstructedCollision, 1 ) == false ) {
577+ return ;
578+ }
579+ multiplicity = reconstructedTracks.size ();
580+ if (fillCollisionUD (sameGapSideC, multiplicity) == false ) {
581+ return ;
582+ }
583+ LOGF (info, " Filling sameGapSideC events" );
584+ fillCorrelationsUD (sameGapSideC, reconstructedTracks, reconstructedTracks, multiplicity, reconstructedCollision.posZ ());
534585 break ;
535586 default :
536587 return ;
537588 break ;
538589 }
539590 }
540591
541- PROCESS_SWITCH (upcPhotonuclearAnalysisJMG, processSame, " Process same event" , true );
592+ PROCESS_SWITCH (upcPhotonuclearAnalysisJMG, processSame, " Process sameGapSideA event" , true );
542593
543594 void processMixed (FullSGUDCollision::iterator const & reconstructedCollision)
544595 {
545- int sgSide = reconstructedCollision.gapSide ();
546- // int sgSide = 0;
547596
548597 for (auto & [collision1, tracks1, collision2, tracks2] : pairs) {
549598 if (collision1.size () == 0 || collision2.size () == 0 ) {
550599 LOGF (info, " One or both collisions are empty." );
551600 continue ;
552601 }
553- float multiplicity = tracks1.size ();
554- LOGF (info, " Filling mixed events" );
555- switch (sgSide) {
556- case 0 : // gap for side A
557- if (isCollisionCutSG (reconstructedCollision, 0 ) == false ) {
558- return ;
559- }
560- if (fillCollisionUD (mixed, multiplicity) == false ) {
561- return ;
562- }
563- // LOGF(info, ">>> Bin of collision: ", bindingOnVtx.getBin({collision1.posZ()}));
564- // histos.fill(HIST("eventcount"), bindingOnVtx.getBin({collision1.posZ(), collision1.totalFT0AmplitudeC()}));
565- histos.fill (HIST (" eventcount" ), bindingOnVtx.getBin ({collision1.posZ ()}));
566- fillCorrelationsUD (mixed, tracks1, tracks2, multiplicity, collision1.posZ ());
567- break ;
568- case 1 : // gap for side C
569- // if (isCollisionCutSG(reconstructedCollision, 1) == false) {
570- // return;
571- // }
572- break ;
573- default :
602+
603+ float multiplicity = 0 ;
604+ if (collision1.gapSide () == 0 && collision2.gapSide () == 0 ) { // gap on side A
605+ if (isCollisionCutSG (collision1, 0 ) == false && isCollisionCutSG (collision2, 0 ) == false ) {
606+ continue ;
607+ }
608+ LOGF (info, " In the pairs loop, gap side A" );
609+ multiplicity = tracks1.size ();
610+ if (fillCollisionUD (mixedGapSideA, multiplicity) == false ) {
611+ return ;
612+ }
613+ histos.fill (HIST (" eventcount" ), bindingOnVtx.getBin ({collision1.posZ ()}));
614+ fillCorrelationsUD (mixedGapSideA, tracks1, tracks2, multiplicity, collision1.posZ ());
615+ LOGF (info, " Filling mixedGapSideA events, Gap for side A" );
616+ }
617+
618+ if (collision1.gapSide () == 1 && collision2.gapSide () == 1 ) { // gap on side C
619+ if (isCollisionCutSG (collision1, 1 ) == false && isCollisionCutSG (collision2, 1 ) == false ) {
620+ continue ;
621+ }
622+ LOGF (info, " In the pairs loop, gap side C" );
623+ multiplicity = tracks1.size ();
624+ if (fillCollisionUD (mixedGapSideC, multiplicity) == false ) {
574625 return ;
575- break ;
626+ }
627+ histos.fill (HIST (" eventcount" ), bindingOnVtx.getBin ({collision1.posZ ()}));
628+ fillCorrelationsUD (mixedGapSideC, tracks1, tracks2, multiplicity, collision1.posZ ());
629+ LOGF (info, " Filling mixedGapSideC events, Gap for side C" );
630+ } else {
631+ continue ;
576632 }
577633 }
578634 }
579635
580- PROCESS_SWITCH (upcPhotonuclearAnalysisJMG, processMixed, " Process mixed events" , true );
636+ PROCESS_SWITCH (upcPhotonuclearAnalysisJMG, processMixed, " Process mixedGapSideA events" , true );
581637};
582638
583639WorkflowSpec defineDataProcessing (ConfigContext const & cfgc)
0 commit comments