1212
1313#include < cmath>
1414#include < algorithm>
15+ #include < string>
16+ #include < vector>
1517
1618#include " Framework/AnalysisTask.h"
1719#include " Framework/AnalysisDataModel.h"
@@ -935,11 +937,9 @@ struct IdentifiedBfFilterTracks {
935937 template <typename TrackObject>
936938 inline MatchRecoGenSpecies IdentifyTrack (TrackObject const & track);
937939 template <typename TrackObject>
938- MatchRecoGenSpecies trackIdentification (TrackObject const & track);
939- template <typename TrackObject>
940940 int8_t AcceptTrack (TrackObject const & track);
941941 template <typename ParticleObject, typename MCCollisionObject>
942- int8_t AcceptParticle (ParticleObject& particle, MCCollisionObject const &);
942+ int8_t AcceptParticle (ParticleObject& particle, MCCollisionObject const & mccollision );
943943 template <typename CollisionObjects, typename TrackObject>
944944 int8_t selectTrackAmbiguousCheck (CollisionObjects const & collisions, TrackObject const & track);
945945 template <typename ParticleObject>
@@ -1020,7 +1020,6 @@ struct IdentifiedBfFilterTracks {
10201020 void filterParticles (soa::Join<aod::McCollisions, aod::IdentifiedBfCFGenCollisionsInfo> const & gencollisions, aod::McParticles const & particles)
10211021 {
10221022 using namespace identifiedbffilter ;
1023-
10241023 int acceptedparticles = 0 ;
10251024 int acceptedcollisions = 0 ;
10261025 if (!fullDerivedData) {
@@ -1049,38 +1048,9 @@ struct IdentifiedBfFilterTracks {
10491048 fillParticleHistosBeforeSelection (particle, mccollision, charge);
10501049
10511050 /* track selection */
1052- /* TODO: at some point the pid has to be substituted by the identified species */
10531051 pid = AcceptParticle (particle, mccollision);
1054- if (!(pid < 0 )) {
1055- /* the particle has been accepted */
1056- /* let's identify the particle */
1057- /* TODO: probably this needs to go to AcceptParticle */
1058- MatchRecoGenSpecies sp = IdentifyParticle (particle);
1059- if (sp != kWrongSpecies ) {
1060- if (sp != kIdBfCharged ) {
1061- /* fill the charged particle histograms */
1062- fillParticleHistosAfterSelection (particle, mccollision, charge, kIdBfCharged );
1063- /* update charged multiplicities */
1064- if (pid % 2 == 0 ) {
1065- partMultPos[kIdBfCharged ]++;
1066- }
1067- if (pid % 2 == 1 ) {
1068- partMultNeg[kIdBfCharged ]++;
1069- }
1070- }
1071- /* fill the species histograms */
1072- fillParticleHistosAfterSelection (particle, mccollision, charge, sp);
1073- /* update species multiplicities */
1074- if (pid % 2 == 0 ) {
1075- partMultPos[sp]++;
1076- }
1077- if (pid % 2 == 1 ) {
1078- partMultNeg[sp]++;
1079- }
1080- acceptedparticles++;
1081- } else {
1082- pid = -1 ;
1083- }
1052+ if (!(pid < 0 )) { // if PID isn't negative
1053+ acceptedparticles++;
10841054 }
10851055 }
10861056 } else {
@@ -1161,7 +1131,7 @@ struct IdentifiedBfFilterTracks {
11611131 }
11621132 PROCESS_SWITCH (IdentifiedBfFilterTracks, filterRecoWithoutPIDAmbiguous, " Track filtering without PID information with ambiguous tracks check" , false )
11631133
1164- void filterDetectorLevelWithoutPID (soa::Join<aod::Collisions, aod::IdentifiedBfCFCollisionsInfo> const & collisions, IdBfFullTracksDetLevel const & tracks)
1134+ void filterDetectorLevelWithoutPID (soa::Join<aod::Collisions, aod::IdentifiedBfCFCollisionsInfo> const & collisions, IdBfFullTracksDetLevel const & tracks, aod::McParticles const & )
11651135 {
11661136 filterTracks (collisions, tracks);
11671137 }
@@ -1358,30 +1328,6 @@ inline MatchRecoGenSpecies IdentifiedBfFilterTracks::IdentifyTrack(TrackObject c
13581328 }
13591329}
13601330
1361- template <typename TrackObject>
1362- MatchRecoGenSpecies IdentifiedBfFilterTracks::trackIdentification (TrackObject const & track)
1363- {
1364- using namespace identifiedbffilter ;
1365- MatchRecoGenSpecies sp = kWrongSpecies ;
1366- if (recoIdMethod == 0 ) {
1367- sp = kIdBfCharged ;
1368- } else if (recoIdMethod == 1 ) {
1369-
1370- if constexpr (framework::has_type_v<aod::pidtpc_tiny::TPCNSigmaStorePi, typename TrackObject::all_columns> || framework::has_type_v<aod::pidtpc::TPCNSigmaPi, typename TrackObject::all_columns>) {
1371- sp = IdentifyTrack (track);
1372- } else {
1373- LOGF (fatal, " Track identification required but PID information not present" );
1374- }
1375- } else if (recoIdMethod == 2 ) {
1376- if constexpr (framework::has_type_v<aod::mctracklabel::McParticleId, typename TrackObject::all_columns>) {
1377- sp = IdentifyParticle (track.template mcParticle_as <aod::McParticles>());
1378- } else {
1379- LOGF (fatal, " Track identification required from MC particle but MC information not present" );
1380- }
1381- }
1382- return sp;
1383- }
1384-
13851331// / \brief Accepts or not the passed track
13861332// / \param track the track of interest
13871333// / \return the internal track id, -1 if not accepted
@@ -1404,17 +1350,33 @@ inline int8_t IdentifiedBfFilterTracks::AcceptTrack(TrackObject const& track)
14041350 if (matchTrackType (track)) {
14051351 if (ptlow < track.pt () && track.pt () < ptup && etalow < track.eta () && track.eta () < etaup) {
14061352 fillTrackHistosAfterSelection (track, kIdBfCharged );
1407- MatchRecoGenSpecies sp = trackIdentification (track);
1353+ MatchRecoGenSpecies sp = kWrongSpecies ;
1354+ if (recoIdMethod == 0 ) {
1355+ sp = kIdBfCharged ;
1356+ } else if (recoIdMethod == 1 ) {
1357+
1358+ if constexpr (framework::has_type_v<aod::pidtpc_tiny::TPCNSigmaStorePi, typename TrackObject::all_columns> || framework::has_type_v<aod::pidtpc::TPCNSigmaPi, typename TrackObject::all_columns>) {
1359+ sp = IdentifyTrack (track);
1360+ } else {
1361+ LOGF (fatal, " Track identification required but PID information not present" );
1362+ }
1363+ } else if (recoIdMethod == 2 ) {
1364+ if constexpr (framework::has_type_v<aod::mctracklabel::McParticleId, typename TrackObject::all_columns>) {
1365+ sp = IdentifyParticle (track.template mcParticle_as <aod::McParticles>());
1366+ } else {
1367+ LOGF (fatal, " Track identification required from MC particle but MC information not present" );
1368+ }
1369+ }
14081370 if (sp == kWrongSpecies ) {
14091371 return -1 ;
14101372 }
14111373 if (!(sp < 0 )) {
14121374 fillTrackHistosAfterSelection (track, sp); // <Fill accepted track histo with PID
1413- if (track.sign () > 0 ) {
1375+ if (track.sign () > 0 ) { // if positive
14141376 trkMultPos[sp]++; // << Update Particle Multiplicity
14151377 return speciesChargeValue1[sp];
14161378 }
1417- if (track.sign () < 0 ) {
1379+ if (track.sign () < 0 ) { // if negative
14181380 trkMultNeg[sp]++; // << Update Particle Multiplicity
14191381 return speciesChargeValue1[sp] + 1 ;
14201382 }
@@ -1428,7 +1390,7 @@ inline int8_t IdentifiedBfFilterTracks::AcceptTrack(TrackObject const& track)
14281390// / \param track the particle of interest
14291391// / \return `true` if the particle is accepted, `false` otherwise
14301392template <typename ParticleObject, typename MCCollisionObject>
1431- inline int8_t IdentifiedBfFilterTracks::AcceptParticle (ParticleObject& particle, MCCollisionObject const &)
1393+ inline int8_t IdentifiedBfFilterTracks::AcceptParticle (ParticleObject& particle, MCCollisionObject const & mccollision )
14321394{
14331395 /* overall momentum cut */
14341396 if (!(overallminp < particle.p ())) {
@@ -1444,6 +1406,26 @@ inline int8_t IdentifiedBfFilterTracks::AcceptParticle(ParticleObject& particle,
14441406
14451407 if (ptlow < particle.pt () && particle.pt () < ptup && etalow < particle.eta () && particle.eta () < etaup) {
14461408 MatchRecoGenSpecies sp = IdentifyParticle (particle);
1409+ if (sp != kWrongSpecies ) {
1410+ if (sp != kIdBfCharged ) {
1411+ /* fill the charged particle histograms */
1412+ fillParticleHistosAfterSelection (particle, mccollision, charge, kIdBfCharged );
1413+ /* update charged multiplicities */
1414+ if (charge == 1 ) {
1415+ partMultPos[kIdBfCharged ]++;
1416+ } else if (charge == -1 ) {
1417+ partMultNeg[kIdBfCharged ]++;
1418+ }
1419+ }
1420+ /* fill the species histograms */
1421+ fillParticleHistosAfterSelection (particle, mccollision, charge, sp);
1422+ /* update species multiplicities */
1423+ if (charge == 1 ) {
1424+ partMultPos[sp]++;
1425+ } else if (charge == -1 ) {
1426+ partMultNeg[sp]++;
1427+ }
1428+ }
14471429 if (charge == 1 ) {
14481430 return speciesChargeValue1[sp];
14491431
0 commit comments