@@ -342,6 +342,7 @@ struct TreeWriterTpcV0 {
342342
343343 void init (o2::framework::InitContext&)
344344 {
345+ std::cout << " tpcSkimsTableCreator::TreeWriterTpcV0::init()3e14964" ;
345346 ccdb->setURL (" http://alice-ccdb.cern.ch" );
346347 ccdb->setCaching (true );
347348 ccdb->setFatalWhenNull (false );
@@ -909,7 +910,19 @@ struct TreeWriterTPCTOF {
909910 ccdb->setFatalWhenNull (false );
910911 }
911912
912- void processStandard (Colls::iterator const & collision, soa::Filtered<Trks> const & tracks, aod::BCsWithTimestamps const &)
913+ // / Evaluate tpcSignal with or without correction
914+ template <bool IsCorrecteddEdx, typename TrkType>
915+ double tpcSignalGeneric (const TrkType& track)
916+ {
917+ if constexpr (IsCorrecteddEdx) {
918+ return track.tpcSignalCorrected ();
919+ } else {
920+ return track.tpcSignal ();
921+ }
922+ }
923+
924+ template <bool IsCorrecteddEdx, typename TrksType>
925+ void runStandard (Colls::iterator const & collision, soa::Filtered<TrksType> const & tracks)
913926 {
914927 // / Check event selection
915928 if (!isEventSelected (collision, tracks)) {
@@ -923,81 +936,46 @@ struct TreeWriterTPCTOF {
923936 for (auto const & trk : tracks) {
924937 // / Fill tree for tritons
925938 if (trk.tpcInnerParam () < maxMomHardCutOnlyTr && trk.tpcInnerParam () <= maxMomTPCOnlyTr && std::abs (trk.tpcNSigmaTr ()) < nSigmaTPCOnlyTr && downsampleTsalisCharged (trk.pt (), downsamplingTsalisProtons, MassTriton)) {
926- fillSkimmedTPCTOFTable (trk, collision, trk.tpcNSigmaTr (), trk.tofNSigmaTr (), trk.tpcExpSignalTr (trk. tpcSignal ( )), PidTriton, runnumber, dwnSmplFactor_Tr, hadronicRate);
939+ fillSkimmedTPCTOFTable<IsCorrecteddEdx> (trk, collision, trk.tpcNSigmaTr (), trk.tofNSigmaTr (), trk.tpcExpSignalTr (tpcSignalGeneric<IsCorrecteddEdx>(trk )), PidTriton, runnumber, dwnSmplFactor_Tr, hadronicRate);
927940 } else if (trk.tpcInnerParam () < maxMomHardCutOnlyTr && trk.tpcInnerParam () > maxMomTPCOnlyTr && std::abs (trk.tofNSigmaTr ()) < nSigmaTOF_TPCTOF_Tr && std::abs (trk.tpcNSigmaTr ()) < nSigmaTPC_TPCTOF_Tr && downsampleTsalisCharged (trk.pt (), downsamplingTsalisProtons, MassTriton)) {
928- fillSkimmedTPCTOFTable (trk, collision, trk.tpcNSigmaTr (), trk.tofNSigmaTr (), trk.tpcExpSignalTr (trk. tpcSignal ( )), PidTriton, runnumber, dwnSmplFactor_Tr, hadronicRate);
941+ fillSkimmedTPCTOFTable<IsCorrecteddEdx> (trk, collision, trk.tpcNSigmaTr (), trk.tofNSigmaTr (), trk.tpcExpSignalTr (tpcSignalGeneric<IsCorrecteddEdx>(trk )), PidTriton, runnumber, dwnSmplFactor_Tr, hadronicRate);
929942 }
930943 // / Fill tree for deuterons
931944 if (trk.tpcInnerParam () < maxMomHardCutOnlyDe && trk.tpcInnerParam () <= maxMomTPCOnlyDe && std::abs (trk.tpcNSigmaDe ()) < nSigmaTPCOnlyDe && downsampleTsalisCharged (trk.pt (), downsamplingTsalisProtons, MassDeuteron)) {
932- fillSkimmedTPCTOFTable (trk, collision, trk.tpcNSigmaDe (), trk.tofNSigmaDe (), trk.tpcExpSignalDe (trk. tpcSignal ( )), PidDeuteron, runnumber, dwnSmplFactor_De, hadronicRate);
945+ fillSkimmedTPCTOFTable<IsCorrecteddEdx> (trk, collision, trk.tpcNSigmaDe (), trk.tofNSigmaDe (), trk.tpcExpSignalDe (tpcSignalGeneric<IsCorrecteddEdx>(trk )), PidDeuteron, runnumber, dwnSmplFactor_De, hadronicRate);
933946 } else if (trk.tpcInnerParam () < maxMomHardCutOnlyDe && trk.tpcInnerParam () > maxMomTPCOnlyDe && std::abs (trk.tofNSigmaDe ()) < nSigmaTOF_TPCTOF_De && std::abs (trk.tpcNSigmaDe ()) < nSigmaTPC_TPCTOF_De && downsampleTsalisCharged (trk.pt (), downsamplingTsalisProtons, MassDeuteron)) {
934- fillSkimmedTPCTOFTable (trk, collision, trk.tpcNSigmaDe (), trk.tofNSigmaDe (), trk.tpcExpSignalDe (trk. tpcSignal ( )), PidDeuteron, runnumber, dwnSmplFactor_De, hadronicRate);
947+ fillSkimmedTPCTOFTable<IsCorrecteddEdx> (trk, collision, trk.tpcNSigmaDe (), trk.tofNSigmaDe (), trk.tpcExpSignalDe (tpcSignalGeneric<IsCorrecteddEdx>(trk )), PidDeuteron, runnumber, dwnSmplFactor_De, hadronicRate);
935948 }
936949 // / Fill tree for protons
937950 if (trk.tpcInnerParam () <= maxMomTPCOnlyPr && std::abs (trk.tpcNSigmaPr ()) < nSigmaTPCOnlyPr && downsampleTsalisCharged (trk.pt (), downsamplingTsalisProtons, MassProton)) {
938- fillSkimmedTPCTOFTable (trk, collision, trk.tpcNSigmaPr (), trk.tofNSigmaPr (), trk.tpcExpSignalPr (trk. tpcSignal ( )), PidProton, runnumber, dwnSmplFactor_Pr, hadronicRate);
951+ fillSkimmedTPCTOFTable<IsCorrecteddEdx> (trk, collision, trk.tpcNSigmaPr (), trk.tofNSigmaPr (), trk.tpcExpSignalPr (tpcSignalGeneric<IsCorrecteddEdx>(trk )), PidProton, runnumber, dwnSmplFactor_Pr, hadronicRate);
939952 } else if (trk.tpcInnerParam () > maxMomTPCOnlyPr && std::abs (trk.tofNSigmaPr ()) < nSigmaTOF_TPCTOF_Pr && std::abs (trk.tpcNSigmaPr ()) < nSigmaTPC_TPCTOF_Pr && downsampleTsalisCharged (trk.pt (), downsamplingTsalisProtons, MassProton)) {
940- fillSkimmedTPCTOFTable (trk, collision, trk.tpcNSigmaPr (), trk.tofNSigmaPr (), trk.tpcExpSignalPr (trk. tpcSignal ( )), PidProton, runnumber, dwnSmplFactor_Pr, hadronicRate);
953+ fillSkimmedTPCTOFTable<IsCorrecteddEdx> (trk, collision, trk.tpcNSigmaPr (), trk.tofNSigmaPr (), trk.tpcExpSignalPr (tpcSignalGeneric<IsCorrecteddEdx>(trk )), PidProton, runnumber, dwnSmplFactor_Pr, hadronicRate);
941954 }
942955 // / Fill tree for kaons
943956 if (trk.tpcInnerParam () < maxMomHardCutOnlyKa && trk.tpcInnerParam () <= maxMomTPCOnlyKa && std::abs (trk.tpcNSigmaKa ()) < nSigmaTPCOnlyKa && downsampleTsalisCharged (trk.pt (), downsamplingTsalisKaons, MassKaon)) {
944- fillSkimmedTPCTOFTable (trk, collision, trk.tpcNSigmaKa (), trk.tofNSigmaKa (), trk.tpcExpSignalKa (trk. tpcSignal ( )), PidKaon, runnumber, dwnSmplFactor_Ka, hadronicRate);
957+ fillSkimmedTPCTOFTable<IsCorrecteddEdx> (trk, collision, trk.tpcNSigmaKa (), trk.tofNSigmaKa (), trk.tpcExpSignalKa (tpcSignalGeneric<IsCorrecteddEdx>(trk )), PidKaon, runnumber, dwnSmplFactor_Ka, hadronicRate);
945958 } else if (trk.tpcInnerParam () < maxMomHardCutOnlyKa && trk.tpcInnerParam () > maxMomTPCOnlyKa && std::abs (trk.tofNSigmaKa ()) < nSigmaTOF_TPCTOF_Ka && std::abs (trk.tpcNSigmaKa ()) < nSigmaTPC_TPCTOF_Ka && downsampleTsalisCharged (trk.pt (), downsamplingTsalisKaons, MassKaon)) {
946- fillSkimmedTPCTOFTable (trk, collision, trk.tpcNSigmaKa (), trk.tofNSigmaKa (), trk.tpcExpSignalKa (trk. tpcSignal ( )), PidKaon, runnumber, dwnSmplFactor_Ka, hadronicRate);
959+ fillSkimmedTPCTOFTable<IsCorrecteddEdx> (trk, collision, trk.tpcNSigmaKa (), trk.tofNSigmaKa (), trk.tpcExpSignalKa (tpcSignalGeneric<IsCorrecteddEdx>(trk )), PidKaon, runnumber, dwnSmplFactor_Ka, hadronicRate);
947960 }
948961 // / Fill tree pions
949962 if (trk.tpcInnerParam () <= maxMomTPCOnlyPi && std::abs (trk.tpcNSigmaPi ()) < nSigmaTPCOnlyPi && downsampleTsalisCharged (trk.pt (), downsamplingTsalisPions, MassPion)) {
950- fillSkimmedTPCTOFTable (trk, collision, trk.tpcNSigmaPi (), trk.tofNSigmaPi (), trk.tpcExpSignalPi (trk. tpcSignal ( )), PidPion, runnumber, dwnSmplFactor_Pi, hadronicRate);
963+ fillSkimmedTPCTOFTable<IsCorrecteddEdx> (trk, collision, trk.tpcNSigmaPi (), trk.tofNSigmaPi (), trk.tpcExpSignalPi (tpcSignalGeneric<IsCorrecteddEdx>(trk )), PidPion, runnumber, dwnSmplFactor_Pi, hadronicRate);
951964 } else if (trk.tpcInnerParam () > maxMomTPCOnlyPi && std::abs (trk.tofNSigmaPi ()) < nSigmaTOF_TPCTOF_Pi && std::abs (trk.tpcNSigmaPi ()) < nSigmaTPC_TPCTOF_Pi && downsampleTsalisCharged (trk.pt (), downsamplingTsalisPions, MassPion)) {
952- fillSkimmedTPCTOFTable (trk, collision, trk.tpcNSigmaPi (), trk.tofNSigmaPi (), trk.tpcExpSignalPi (trk. tpcSignal ( )), PidPion, runnumber, dwnSmplFactor_Pi, hadronicRate);
965+ fillSkimmedTPCTOFTable<IsCorrecteddEdx> (trk, collision, trk.tpcNSigmaPi (), trk.tofNSigmaPi (), trk.tpcExpSignalPi (tpcSignalGeneric<IsCorrecteddEdx>(trk )), PidPion, runnumber, dwnSmplFactor_Pi, hadronicRate);
953966 }
954967 } // / Loop tracks
968+ }
969+
970+ void processStandard (Colls::iterator const & collision, soa::Filtered<Trks> const & tracks, aod::BCsWithTimestamps const &)
971+ {
972+ runStandard<false , Trks>(collision, tracks);
955973 } // / process
956974 PROCESS_SWITCH (TreeWriterTPCTOF, processStandard, " Standard Samples for PID" , true );
957975
958976 void processStandard2 (Colls::iterator const & collision, soa::Filtered<TrksWithDEdxCorrection> const & tracks, aod::BCsWithTimestamps const &)
959977 {
960- // / Check event selection
961- if (!isEventSelected (collision, tracks)) {
962- return ;
963- }
964- auto bc = collision.bc_as <aod::BCsWithTimestamps>();
965- const int runnumber = bc.runNumber ();
966- float hadronicRate = mRateFetcher .fetch (ccdb.service , bc.timestamp (), runnumber, irSource) * 1 .e -3 ;
967-
968- rowTPCTOFTree.reserve (tracks.size ());
969- for (auto const & trk : tracks) {
970- // / Fill tree for tritons/* */
971- if (trk.tpcInnerParam () < maxMomHardCutOnlyTr && trk.tpcInnerParam () <= maxMomTPCOnlyTr && std::abs (trk.tpcNSigmaTr ()) < nSigmaTPCOnlyTr && downsampleTsalisCharged (trk.pt (), downsamplingTsalisProtons, MassTriton)) {
972- fillSkimmedTPCTOFTable<true >(trk, collision, trk.tpcNSigmaTr (), trk.tofNSigmaTr (), trk.tpcExpSignalTr (trk.tpcSignalCorrected ()), PidTriton, runnumber, dwnSmplFactor_Tr, hadronicRate);
973- } else if (trk.tpcInnerParam () < maxMomHardCutOnlyTr && trk.tpcInnerParam () > maxMomTPCOnlyTr && std::abs (trk.tofNSigmaTr ()) < nSigmaTOF_TPCTOF_Tr && std::abs (trk.tpcNSigmaTr ()) < nSigmaTPC_TPCTOF_Tr && downsampleTsalisCharged (trk.pt (), downsamplingTsalisProtons, MassTriton)) {
974- fillSkimmedTPCTOFTable<true >(trk, collision, trk.tpcNSigmaTr (), trk.tofNSigmaTr (), trk.tpcExpSignalTr (trk.tpcSignalCorrected ()), PidTriton, runnumber, dwnSmplFactor_Tr, hadronicRate);
975- }
976- // / Fill tree for deuterons
977- if (trk.tpcInnerParam () < maxMomHardCutOnlyDe && trk.tpcInnerParam () <= maxMomTPCOnlyDe && std::abs (trk.tpcNSigmaDe ()) < nSigmaTPCOnlyDe && downsampleTsalisCharged (trk.pt (), downsamplingTsalisProtons, MassDeuteron)) {
978- fillSkimmedTPCTOFTable<true >(trk, collision, trk.tpcNSigmaDe (), trk.tofNSigmaDe (), trk.tpcExpSignalDe (trk.tpcSignalCorrected ()), PidDeuteron, runnumber, dwnSmplFactor_De, hadronicRate);
979- } else if (trk.tpcInnerParam () < maxMomHardCutOnlyDe && trk.tpcInnerParam () > maxMomTPCOnlyDe && std::abs (trk.tofNSigmaDe ()) < nSigmaTOF_TPCTOF_De && std::abs (trk.tpcNSigmaDe ()) < nSigmaTPC_TPCTOF_De && downsampleTsalisCharged (trk.pt (), downsamplingTsalisProtons, MassDeuteron)) {
980- fillSkimmedTPCTOFTable<true >(trk, collision, trk.tpcNSigmaDe (), trk.tofNSigmaDe (), trk.tpcExpSignalDe (trk.tpcSignalCorrected ()), PidDeuteron, runnumber, dwnSmplFactor_De, hadronicRate);
981- }
982- // / Fill tree for protons
983- if (trk.tpcInnerParam () <= maxMomTPCOnlyPr && std::abs (trk.tpcNSigmaPr ()) < nSigmaTPCOnlyPr && downsampleTsalisCharged (trk.pt (), downsamplingTsalisProtons, MassProton)) {
984- fillSkimmedTPCTOFTable<true >(trk, collision, trk.tpcNSigmaPr (), trk.tofNSigmaPr (), trk.tpcExpSignalPr (trk.tpcSignalCorrected ()), PidProton, runnumber, dwnSmplFactor_Pr, hadronicRate);
985- } else if (trk.tpcInnerParam () > maxMomTPCOnlyPr && std::abs (trk.tofNSigmaPr ()) < nSigmaTOF_TPCTOF_Pr && std::abs (trk.tpcNSigmaPr ()) < nSigmaTPC_TPCTOF_Pr && downsampleTsalisCharged (trk.pt (), downsamplingTsalisProtons, MassProton)) {
986- fillSkimmedTPCTOFTable<true >(trk, collision, trk.tpcNSigmaPr (), trk.tofNSigmaPr (), trk.tpcExpSignalPr (trk.tpcSignalCorrected ()), PidProton, runnumber, dwnSmplFactor_Pr, hadronicRate);
987- }
988- // / Fill tree for kaons
989- if (trk.tpcInnerParam () < maxMomHardCutOnlyKa && trk.tpcInnerParam () <= maxMomTPCOnlyKa && std::abs (trk.tpcNSigmaKa ()) < nSigmaTPCOnlyKa && downsampleTsalisCharged (trk.pt (), downsamplingTsalisKaons, MassKaon)) {
990- fillSkimmedTPCTOFTable<true >(trk, collision, trk.tpcNSigmaKa (), trk.tofNSigmaKa (), trk.tpcExpSignalKa (trk.tpcSignalCorrected ()), PidKaon, runnumber, dwnSmplFactor_Ka, hadronicRate);
991- } else if (trk.tpcInnerParam () < maxMomHardCutOnlyKa && trk.tpcInnerParam () > maxMomTPCOnlyKa && std::abs (trk.tofNSigmaKa ()) < nSigmaTOF_TPCTOF_Ka && std::abs (trk.tpcNSigmaKa ()) < nSigmaTPC_TPCTOF_Ka && downsampleTsalisCharged (trk.pt (), downsamplingTsalisKaons, MassKaon)) {
992- fillSkimmedTPCTOFTable<true >(trk, collision, trk.tpcNSigmaKa (), trk.tofNSigmaKa (), trk.tpcExpSignalKa (trk.tpcSignalCorrected ()), PidKaon, runnumber, dwnSmplFactor_Ka, hadronicRate);
993- }
994- // / Fill tree pions
995- if (trk.tpcInnerParam () <= maxMomTPCOnlyPi && std::abs (trk.tpcNSigmaPi ()) < nSigmaTPCOnlyPi && downsampleTsalisCharged (trk.pt (), downsamplingTsalisPions, MassPion)) {
996- fillSkimmedTPCTOFTable<true >(trk, collision, trk.tpcNSigmaPi (), trk.tofNSigmaPi (), trk.tpcExpSignalPi (trk.tpcSignalCorrected ()), PidPion, runnumber, dwnSmplFactor_Pi, hadronicRate);
997- } else if (trk.tpcInnerParam () > maxMomTPCOnlyPi && std::abs (trk.tofNSigmaPi ()) < nSigmaTOF_TPCTOF_Pi && std::abs (trk.tpcNSigmaPi ()) < nSigmaTPC_TPCTOF_Pi && downsampleTsalisCharged (trk.pt (), downsamplingTsalisPions, MassPion)) {
998- fillSkimmedTPCTOFTable<true >(trk, collision, trk.tpcNSigmaPi (), trk.tofNSigmaPi (), trk.tpcExpSignalPi (trk.tpcSignalCorrected ()), PidPion, runnumber, dwnSmplFactor_Pi, hadronicRate);
999- }
1000- } // / Loop tracks
978+ runStandard<true , TrksWithDEdxCorrection>(collision, tracks);
1001979 } // / process
1002980 PROCESS_SWITCH (TreeWriterTPCTOF, processStandard2, " Standard Samples for PID with corrected dEdx" , false );
1003981
0 commit comments