11 #include <reconstruction/modules/CDCDedxSkimCDST/CDCDedxSkimCDST.h>
13 #include <mdst/dataobjects/Track.h>
14 #include <mdst/dataobjects/PIDLikelihood.h>
16 #include <framework/datastore/SelectSubset.h>
18 #include <unordered_set>
28 setDescription(
"Extract dE/dx information for calibration development.");
29 addParam(
"particleLists", m_strParticleList,
"Vector of ParticleLists to save", std::vector<std::string>());
30 addParam(
"ListsType", isRecList,
"Yes for reco particle list else No ",
true);
38 B2INFO(
"Selecting two good tracks for radiative bhabha candidates...");
41 m_dedxTracks.isRequired();
46 m_selector.registerSubset(set);
57 int nParticleList = m_strParticleList.size();
58 std::unordered_set<int> indicesToKeep;
66 for (
int iList = 0; iList < nParticleList; iList++) {
69 if (!particlelist or particlelist->getListSize(
true) == 0) {
76 for (
unsigned int iPGen1 = 0; iPGen1 < particlelist->getListSize(
true); iPGen1++) {
78 Particle* fPartGen1 = particlelist->getParticle(iPGen1,
true);
80 B2WARNING(
"No particles in the list...");
86 for (
unsigned iPGen2 = 0; iPGen2 < fPartGen1->
getNDaughters(); ++iPGen2) {
92 B2WARNING(
"Searching w/ 2nd Gen >> No related PID likelihood found");
98 B2WARNING(
"Searching w/ 2nd Gen >> No related Track found");
104 B2WARNING(
"Searching w/ 2nd Gen >> No related CDCDedxTrack found");
115 B2WARNING(
"No related PID likelihood found");
121 B2WARNING(
"No related Track found");
127 B2WARNING(
"No related CDCDedxTrack found");
138 auto selector = [indicesToKeep](
const CDCDedxTrack * d) ->
bool {
139 if (indicesToKeep.size() > 2)
141 std::cout <<
"More than three good tracks!" << std::endl;
144 int idx = d->getArrayIndex();
145 if (indicesToKeep.count(idx) == 1)
return true;
148 m_selector.select(selector);
153 B2INFO(
"CDCDedxSkimCDST terminated: \n");