Skip to content

Commit 220e673

Browse files
authored
Merge pull request cms-sw#33891 from AdrianoDee/xilosttracks12X
Adding Xi-compatible tracks to lostTracks collection
2 parents d767c50 + 807d8e0 commit 220e673

File tree

2 files changed

+25
-2
lines changed

2 files changed

+25
-2
lines changed

PhysicsTools/PatAlgos/plugins/PATLostTracks.cc

Lines changed: 22 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -68,6 +68,8 @@ namespace pat {
6868
const double maxDxyForNotReconstructedPrimary_;
6969
const double maxDxySigForNotReconstructedPrimary_;
7070
const bool useLegacySetup_;
71+
const bool xiSelection_;
72+
const double xiMassCut_;
7173
};
7274
} // namespace pat
7375

@@ -100,7 +102,9 @@ pat::PATLostTracks::PATLostTracks(const edm::ParameterSet& iConfig)
100102
.getParameter<double>("maxDxyForNotReconstructedPrimary")),
101103
maxDxySigForNotReconstructedPrimary_(iConfig.getParameter<edm::ParameterSet>("pvAssignment")
102104
.getParameter<double>("maxDxySigForNotReconstructedPrimary")),
103-
useLegacySetup_(iConfig.getParameter<bool>("useLegacySetup")) {
105+
useLegacySetup_(iConfig.getParameter<bool>("useLegacySetup")),
106+
xiSelection_(iConfig.getParameter<bool>("xiSelection")),
107+
xiMassCut_(iConfig.getParameter<double>("xiMassCut")) {
104108
std::vector<std::string> trkQuals(iConfig.getParameter<std::vector<std::string>>("qualsToAutoAccept"));
105109
std::transform(
106110
trkQuals.begin(), trkQuals.end(), std::back_inserter(qualsToAutoAccept_), reco::TrackBase::qualityByName);
@@ -190,10 +194,27 @@ void pat::PATLostTracks::produce(edm::StreamID, edm::Event& iEvent, const edm::E
190194
}
191195
}
192196
for (const auto& v0 : *lambdas) {
197+
double protonCharge = 0;
193198
for (size_t dIdx = 0; dIdx < v0.numberOfDaughters(); dIdx++) {
194199
size_t key = (dynamic_cast<const reco::RecoChargedCandidate*>(v0.daughter(dIdx)))->track().key();
195200
if (trkStatus[key] == TrkStatus::NOTUSED)
196201
trkStatus[key] = TrkStatus::VTX;
202+
protonCharge += v0.daughter(dIdx)->charge() * v0.daughter(dIdx)->momentum().mag2();
203+
}
204+
if (xiSelection_) {
205+
// selecting potential Xi- -> Lambda pi candidates
206+
math::XYZTLorentzVector p4Lambda(v0.px(), v0.py(), v0.pz(), sqrt(v0.momentum().mag2() + v0.mass() * v0.mass()));
207+
208+
for (unsigned int trkIndx = 0; trkIndx < tracks->size(); trkIndx++) {
209+
reco::TrackRef trk(tracks, trkIndx);
210+
if ((*trk).charge() * protonCharge < 0 || trkStatus[trkIndx] != TrkStatus::NOTUSED)
211+
continue;
212+
213+
math::XYZTLorentzVector p4pi(
214+
trk->px(), trk->py(), trk->pz(), sqrt(trk->momentum().mag2() + 0.01947995518)); // pion mass ^2
215+
if ((p4Lambda + p4pi).M() < xiMassCut_)
216+
trkStatus[trkIndx] = TrkStatus::VTX; // selecting potential Xi- candidates
217+
}
197218
}
198219
}
199220
std::vector<int> mapping(tracks->size(), -1);

PhysicsTools/PatAlgos/python/slimming/lostTracks_cfi.py

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,9 @@
2222
minPtToStoreLowQualityProps = cms.double(0.0),
2323
passThroughCut = cms.string("pt>2"),
2424
pvAssignment = primaryVertexAssociation.assignment,
25-
useLegacySetup = cms.bool(False) #When True: check only if track used to fit vertex[0] and do not store track detailed info for Pt between 0.5 and minPtToStoreProps GeV
25+
useLegacySetup = cms.bool(False), #When True: check only if track used to fit vertex[0] and do not store track detailed info for Pt between 0.5 and minPtToStoreProps GeV
26+
xiSelection = cms.bool(True),
27+
xiMassCut = cms.double(1.5)
2628
)
2729
from Configuration.Eras.Modifier_phase1Pixel_cff import phase1Pixel
2830
phase1Pixel.toModify(lostTracks, covarianceVersion =1 )

0 commit comments

Comments
 (0)