@@ -556,12 +556,16 @@ struct f1protonreducedtable {
556556 std::vector<int > PionTOFHitFinal = {};
557557 std::vector<float > PionTPC = {};
558558 std::vector<float > PionTPCFinal = {};
559+ std::vector<float > PionTOFNsigma = {};
560+ std::vector<float > PionTOFNsigmaFinal = {};
559561
560562 // keep TOF Hit of kaon
561563 std::vector<int > KaonTOFHit = {};
562564 std::vector<int > KaonTOFHitFinal = {};
563565 std::vector<float > KaonTPC = {};
564566 std::vector<float > KaonTPCFinal = {};
567+ std::vector<float > KaonTOFNsigma = {};
568+ std::vector<float > KaonTOFNsigmaFinal = {};
565569 std::vector<float > KaonTPCPionHypo = {};
566570 std::vector<float > KaonTPCPionHypoFinal = {};
567571
@@ -571,6 +575,68 @@ struct f1protonreducedtable {
571575 // keep status of F1 signal unlike or wrong sign
572576 std::vector<float > f1signal = {};
573577
578+ // keep track dcaxy
579+ std::vector<float > PionDcaxy = {};
580+ std::vector<float > KaonDcaxy = {};
581+ std::vector<float > ProtonDcaxy = {};
582+ std::vector<float > K0D1Dcaxy = {};
583+ std::vector<float > K0D2Dcaxy = {};
584+
585+ // keep track ncls
586+ std::vector<float > PionTPCNcls = {};
587+ std::vector<float > KaonTPCNcls = {};
588+ std::vector<float > ProtonTPCNcls = {};
589+ std::vector<float > K0D1TPCNcls = {};
590+ std::vector<float > K0D2TPCNcls = {};
591+
592+ // keep track ncrs
593+ std::vector<float > PionTPCNcrs = {};
594+ std::vector<float > KaonTPCNcrs = {};
595+ std::vector<float > ProtonTPCNcrs = {};
596+ std::vector<float > K0D1TPCNcrs = {};
597+ std::vector<float > K0D2TPCNcrs = {};
598+
599+ // keep track dcaz
600+ std::vector<float > PionDcaz = {};
601+ std::vector<float > KaonDcaz = {};
602+ std::vector<float > ProtonDcaz = {};
603+
604+ // keep v0 topology
605+ std::vector<float > K0Cpa = {};
606+ std::vector<float > K0radius = {};
607+ std::vector<float > K0DcaBetweenDaughters = {};
608+ std::vector<float > K0Dca = {};
609+ std::vector<float > K0LifeTime = {};
610+
611+ // keep track dcaxy
612+ std::vector<float > PionDcaxyFinal = {};
613+ std::vector<float > KaonDcaxyFinal = {};
614+ std::vector<float > K0D1DcaxyFinal = {};
615+ std::vector<float > K0D2DcaxyFinal = {};
616+
617+ // keep track ncls
618+ std::vector<float > PionTPCNclsFinal = {};
619+ std::vector<float > KaonTPCNclsFinal = {};
620+ std::vector<float > K0D1TPCNclsFinal = {};
621+ std::vector<float > K0D2TPCNclsFinal = {};
622+
623+ // keep track ncrs
624+ std::vector<float > PionTPCNcrsFinal = {};
625+ std::vector<float > KaonTPCNcrsFinal = {};
626+ std::vector<float > K0D1TPCNcrsFinal = {};
627+ std::vector<float > K0D2TPCNcrsFinal = {};
628+
629+ // keep track dcaz
630+ std::vector<float > PionDcazFinal = {};
631+ std::vector<float > KaonDcazFinal = {};
632+
633+ // keep v0 topology
634+ std::vector<float > K0CpaFinal = {};
635+ std::vector<float > K0radiusFinal = {};
636+ std::vector<float > K0DcaBetweenDaughtersFinal = {};
637+ std::vector<float > K0DcaFinal = {};
638+ std::vector<float > K0LifeTimeFinal = {};
639+
574640 // Prepare vectors for different species
575641 std::vector<ROOT::Math::PtEtaPhiMVector> protons, kaons, pions, kshorts, f1resonance, f1resonanced1, f1resonanced2, f1resonanced3;
576642 // , protonsfinal;
@@ -649,7 +715,14 @@ struct f1protonreducedtable {
649715 pions.push_back (temp);
650716 PionIndex.push_back (track.globalIndex ());
651717 PionCharge.push_back (track.sign ());
718+
719+ PionDcaxy.push_back (std::abs (track.dcaXY ()));
720+ PionDcaz.push_back (std::abs (track.dcaZ ()));
721+ PionTPCNcls.push_back (std::abs (track.tpcNClsFound ()));
722+ PionTPCNcrs.push_back (std::abs (track.tpcNClsCrossedRows ()));
723+
652724 auto PionTOF = 0 ;
725+ auto nSigmaPionTOF = -999 ;
653726 if (track.sign () > 0 ) {
654727 qaRegistry.fill (HIST (" hNsigmaPtpionTPC" ), nTPCSigmaP[0 ], track.pt ());
655728 PionTPC.push_back (nTPCSigmaP[0 ]);
@@ -660,17 +733,26 @@ struct f1protonreducedtable {
660733 }
661734 if (track.hasTOF ()) {
662735 qaRegistry.fill (HIST (" hNsigmaPtpionTOF" ), track.tofNSigmaPi (), track.pt ());
736+ nSigmaPionTOF = track.tofNSigmaPi ();
663737 PionTOF = 1 ;
664738 }
665739 PionTOFHit.push_back (PionTOF);
740+ PionTOFNsigma.push_back (nSigmaPionTOF);
666741 }
667742
668743 if ((track.pt () > cMinKaonPt && track.sign () > 0 && SelectionPID (track, strategyPIDKaon, 1 , nTPCSigmaP[1 ]) && (itsResponse.nSigmaITS <o2::track::PID::Kaon>(track) > -3.0 && itsResponse.nSigmaITS <o2::track::PID::Kaon>(track) < 3.0 )) || (track.pt () > cMinKaonPt && track.sign () < 0 && SelectionPID (track, strategyPIDKaon, 1 , nTPCSigmaN[1 ]) && (itsResponse.nSigmaITS <o2::track::PID::Kaon>(track) > -3.0 && itsResponse.nSigmaITS <o2::track::PID::Kaon>(track) < 3.0 ))) {
669744 ROOT::Math::PtEtaPhiMVector temp (track.pt (), track.eta (), track.phi (), massKa);
670745 kaons.push_back (temp);
671746 KaonIndex.push_back (track.globalIndex ());
672747 KaonCharge.push_back (track.sign ());
748+
749+ KaonDcaxy.push_back (std::abs (track.dcaXY ()));
750+ KaonDcaz.push_back (std::abs (track.dcaZ ()));
751+ KaonTPCNcls.push_back (std::abs (track.tpcNClsFound ()));
752+ KaonTPCNcrs.push_back (std::abs (track.tpcNClsCrossedRows ()));
753+
673754 auto KaonTOF = 0 ;
755+ auto nSigmaKaonTOF = -999.0 ;
674756 if (track.sign () > 0 ) {
675757 qaRegistry.fill (HIST (" hNsigmaPtkaonTPC" ), nTPCSigmaP[1 ], nTPCSigmaP[0 ], track.pt ());
676758 KaonTPC.push_back (nTPCSigmaP[1 ]);
@@ -684,15 +766,23 @@ struct f1protonreducedtable {
684766 if (track.hasTOF ()) {
685767 qaRegistry.fill (HIST (" hNsigmaPtkaonTOF" ), track.tofNSigmaKa (), track.pt ());
686768 KaonTOF = 1 ;
769+ nSigmaKaonTOF = track.tofNSigmaKa ();
687770 }
688771 KaonTOFHit.push_back (KaonTOF);
772+ KaonTOFNsigma.push_back (nSigmaKaonTOF);
689773 }
690774
691775 if ((track.pt () < cMaxProtonPt && track.sign () > 0 && SelectionPID (track, strategyPIDProton, 2 , nTPCSigmaP[2 ]) && (itsResponse.nSigmaITS <o2::track::PID::Proton>(track) > -3.0 && itsResponse.nSigmaITS <o2::track::PID::Proton>(track) < 3.0 )) || (track.pt () < cMaxProtonPt && track.sign () < 0 && SelectionPID (track, strategyPIDProton, 2 , nTPCSigmaN[2 ]) && (itsResponse.nSigmaITS <o2::track::PID::Proton>(track) > -3.0 && itsResponse.nSigmaITS <o2::track::PID::Proton>(track) < 3.0 ))) {
692776 ROOT::Math::PtEtaPhiMVector temp (track.pt (), track.eta (), track.phi (), massPr);
693777 protons.push_back (temp);
694778 ProtonIndex.push_back (track.globalIndex ());
695779 ProtonCharge.push_back (track.sign ());
780+
781+ ProtonDcaxy.push_back (std::abs (track.dcaXY ()));
782+ ProtonDcaz.push_back (std::abs (track.dcaZ ()));
783+ ProtonTPCNcls.push_back (std::abs (track.tpcNClsFound ()));
784+ ProtonTPCNcrs.push_back (std::abs (track.tpcNClsCrossedRows ()));
785+
696786 if (track.sign () > 0 ) {
697787 qaRegistry.fill (HIST (" hNsigmaPtprotonTPC" ), nTPCSigmaP[2 ], track.pt ());
698788 ProtonTPCNsigma.push_back (nTPCSigmaP[2 ]);
@@ -707,7 +797,7 @@ struct f1protonreducedtable {
707797 ProtonTOFHit.push_back (1 );
708798 }
709799 if (!track.hasTOF ()) {
710- ProtonTOFNsigma.push_back (999.0 );
800+ ProtonTOFNsigma.push_back (- 999.0 );
711801 ProtonTOFHit.push_back (0 );
712802 }
713803 }
@@ -739,6 +829,20 @@ struct f1protonreducedtable {
739829 kshorts.push_back (temp);
740830 KshortPosDaughIndex.push_back (postrack.globalIndex ());
741831 KshortNegDaughIndex.push_back (negtrack.globalIndex ());
832+
833+ K0D1Dcaxy.push_back (std::abs (postrack.dcaXY ()));
834+ K0D1TPCNcls.push_back (std::abs (postrack.tpcNClsFound ()));
835+ K0D1TPCNcrs.push_back (std::abs (postrack.tpcNClsCrossedRows ()));
836+
837+ K0D2Dcaxy.push_back (std::abs (negtrack.dcaXY ()));
838+ K0D2TPCNcls.push_back (std::abs (negtrack.tpcNClsFound ()));
839+ K0D2TPCNcrs.push_back (std::abs (negtrack.tpcNClsCrossedRows ()));
840+
841+ K0Cpa.push_back (std::abs (v0.v0cosPA ()));
842+ K0radius.push_back (std::abs (v0.v0radius ()));
843+ K0DcaBetweenDaughters.push_back (std::abs (v0.dcaV0daughters ()));
844+ K0LifeTime.push_back (std::abs (v0.distovertotmom (collision.posX (), collision.posY (), collision.posZ ()) * TDatabasePDG::Instance ()->GetParticle (kK0Short )->Mass ()));
845+ K0Dca.push_back (std::abs (v0.dcav0topv ()));
742846 }
743847
744848 if (pions.size () != 0 && kaons.size () != 0 && kshorts.size () != 0 ) {
@@ -792,6 +896,31 @@ struct f1protonreducedtable {
792896 PionTPCFinal.push_back (PionTPC.at (i1)); // Pion TPC
793897 KaonTPCFinal.push_back (KaonTPC.at (i2)); // Kaon TPC
794898 KaonTPCPionHypoFinal.push_back (KaonTPCPionHypo.at (i2)); // Kaon TPC
899+
900+ // Fill variable for systematic
901+
902+ PionTOFNsigmaFinal.push_back (PionTOFNsigma.at (i1));
903+ PionDcaxyFinal.push_back (PionDcaxy.at (i1));
904+ PionDcazFinal.push_back (PionDcaz.at (i1));
905+ PionTPCNcrsFinal.push_back (PionTPCNcrs.at (i1));
906+ PionTPCNclsFinal.push_back (PionTPCNcls.at (i1));
907+ KaonTOFNsigmaFinal.push_back (KaonTOFNsigma.at (i2));
908+ KaonDcaxyFinal.push_back (KaonDcaxy.at (i2));
909+ KaonDcazFinal.push_back (KaonDcaz.at (i2));
910+ KaonTPCNcrsFinal.push_back (KaonTPCNcrs.at (i2));
911+ KaonTPCNclsFinal.push_back (KaonTPCNcls.at (i2));
912+ K0D1DcaxyFinal.push_back (K0D1Dcaxy.at (i3));
913+ K0D1TPCNcrsFinal.push_back (K0D1TPCNcrs.at (i3));
914+ K0D1TPCNclsFinal.push_back (K0D1TPCNcls.at (i3));
915+ K0D2DcaxyFinal.push_back (K0D2Dcaxy.at (i3));
916+ K0D2TPCNcrsFinal.push_back (K0D2TPCNcrs.at (i3));
917+ K0D2TPCNclsFinal.push_back (K0D2TPCNcls.at (i3));
918+ K0CpaFinal.push_back (K0Cpa.at (i3));
919+ K0radiusFinal.push_back (K0radius.at (i3));
920+ K0DcaBetweenDaughtersFinal.push_back (K0DcaBetweenDaughters.at (i3));
921+ K0DcaFinal.push_back (K0Dca.at (i3));
922+ K0LifeTimeFinal.push_back (K0LifeTime.at (i3));
923+
795924 if (pairsign > 0 ) {
796925 qaRegistry.fill (HIST (" hInvMassf1" ), F1Vector.M (), F1Vector.Pt ());
797926 numberF1 = numberF1 + 1 ;
@@ -848,13 +977,13 @@ struct f1protonreducedtable {
848977 F1d1dummy = f1resonanced1.at (i5);
849978 F1d2dummy = f1resonanced2.at (i5);
850979 F1d3dummy = f1resonanced3.at (i5);
851- f1track (indexEvent, f1signal.at (i5), F1VectorDummy.Px (), F1VectorDummy.Py (), F1VectorDummy.Pz (), F1d1dummy.Px (), F1d1dummy.Py (), F1d1dummy.Pz (), F1d2dummy.Px (), F1d2dummy.Py (), F1d2dummy.Pz (), F1d3dummy.Px (), F1d3dummy.Py (), F1d3dummy.Pz (), PionTOFHitFinal.at (i5), KaonTOFHitFinal.at (i5), PionTPCFinal.at (i5), KaonTPCFinal.at (i5), KaonTPCPionHypoFinal.at (i5), F1VectorDummy.M (), f1kaonkshortmass.at (i5), F1PionIndex.at (i5), F1KaonIndex.at (i5), F1KshortDaughterPositiveIndex.at (i5), F1KshortDaughterNegativeIndex.at (i5));
980+ f1track(indexEvent, f1signal.at(i5), F1VectorDummy.Px(), F1VectorDummy.Py(), F1VectorDummy.Pz(), F1d1dummy.Px(), F1d1dummy.Py(), F1d1dummy.Pz(), F1d2dummy.Px(), F1d2dummy.Py(), F1d2dummy.Pz(), F1d3dummy.Px(), F1d3dummy.Py(), F1d3dummy.Pz(), PionTOFHitFinal.at(i5), KaonTOFHitFinal.at(i5), PionTPCFinal.at(i5), KaonTPCFinal.at(i5), KaonTPCPionHypoFinal.at(i5), F1VectorDummy.M(), f1kaonkshortmass.at(i5), F1PionIndex.at(i5), F1KaonIndex.at(i5), F1KshortDaughterPositiveIndex.at(i5), F1KshortDaughterNegativeIndex.at(i5), PionTOFNsigmaFinal.at(i5), PionDcaxyFinal.at(i5), PionDcazFinal.at(i5), PionTPCNclsFinal.at(i5), PionTPCNcrsFinal.at(i5), KaonTOFNsigmaFinal.at(i5), KaonDcaxyFinal.at(i5), KaonDcazFinal.at(i5), KaonTPCNclsFinal.at(i5), KaonTPCNcrsFinal.at(i5), K0D1DcaxyFinal.at(i5), K0D1TPCNclsFinal.at(i5), K0D1TPCNcrsFinal.at(i5), K0D2DcaxyFinal.at(i5), K0D2TPCNclsFinal.at(i5), K0D2TPCNcrsFinal.at(i5), K0CpaFinal.at(i5), K0radiusFinal.at(i5), K0DcaBetweenDaughtersFinal.at(i5), K0DcaFinal.at(i5), K0LifeTimeFinal.at(i5));
852981 }
853982 // // Fill track table for proton//////////////////
854983 for (auto iproton = protons.begin (); iproton != protons.end (); ++iproton) {
855984 auto i6 = std::distance (protons.begin (), iproton);
856985 ProtonVectorDummy2 = protons.at (i6);
857- protontrack (indexEvent, ProtonCharge.at (i6), ProtonVectorDummy2.Px (), ProtonVectorDummy2.Py (), ProtonVectorDummy2.Pz (), ProtonTPCNsigma.at (i6), ProtonTOFHit.at (i6), ProtonTOFNsigma.at (i6), ProtonIndex.at (i6));
986+ protontrack (indexEvent, ProtonCharge.at (i6), ProtonVectorDummy2.Px (), ProtonVectorDummy2.Py (), ProtonVectorDummy2.Pz (), ProtonTPCNsigma.at (i6), ProtonTOFHit.at (i6), ProtonTOFNsigma.at (i6), ProtonIndex.at (i6), ProtonDcaxy. at (i6), ProtonDcaz. at (i6), ProtonTPCNcls. at (i6), ProtonTPCNcrs. at (i6) );
858987 }
859988 }
860989 }
0 commit comments