Skip to content

Commit 4e8135d

Browse files
author
AdrianoDee
committed
Adding tracks compatible with a Xi to lost tracks
- add to lostTracks tracks consistent with coming from a Xi candidate decaying to LambdaPi - adding a flag to turn on the slection
1 parent 628c74d commit 4e8135d

File tree

2 files changed

+31
-7
lines changed

2 files changed

+31
-7
lines changed

PhysicsTools/PatAlgos/plugins/PATLostTracks.cc

Lines changed: 28 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,8 @@
1212
#include "FWCore/ParameterSet/interface/ParameterSet.h"
1313
#include "CommonTools/Utils/interface/StringCutObjectSelector.h"
1414

15+
#include "TLorentzVector.h"
16+
1517
namespace {
1618
bool passesQuality(const reco::Track& trk, const std::vector<reco::TrackBase::TrackQuality>& allowedQuals) {
1719
for (const auto& qual : allowedQuals) {
@@ -68,6 +70,8 @@ namespace pat {
6870
const double maxDxyForNotReconstructedPrimary_;
6971
const double maxDxySigForNotReconstructedPrimary_;
7072
const bool useLegacySetup_;
73+
const bool xiSelection_;
74+
const double xiMassCut_;
7175
};
7276
} // namespace pat
7377

@@ -100,7 +104,9 @@ pat::PATLostTracks::PATLostTracks(const edm::ParameterSet& iConfig)
100104
.getParameter<double>("maxDxyForNotReconstructedPrimary")),
101105
maxDxySigForNotReconstructedPrimary_(iConfig.getParameter<edm::ParameterSet>("pvAssignment")
102106
.getParameter<double>("maxDxySigForNotReconstructedPrimary")),
103-
useLegacySetup_(iConfig.getParameter<bool>("useLegacySetup")) {
107+
useLegacySetup_(iConfig.getParameter<bool>("useLegacySetup")),
108+
xiSelection_(iConfig.getParameter<double>("xiSelection")),
109+
xiMassCut_(iConfig.getParameter<double>("xiMassCut")) {
104110
std::vector<std::string> trkQuals(iConfig.getParameter<std::vector<std::string>>("qualsToAutoAccept"));
105111
std::transform(
106112
trkQuals.begin(), trkQuals.end(), std::back_inserter(qualsToAutoAccept_), reco::TrackBase::qualityByName);
@@ -189,11 +195,27 @@ void pat::PATLostTracks::produce(edm::StreamID, edm::Event& iEvent, const edm::E
189195
trkStatus[key] = TrkStatus::VTX;
190196
}
191197
}
192-
for (const auto& v0 : *lambdas) {
193-
for (size_t dIdx = 0; dIdx < v0.numberOfDaughters(); dIdx++) {
194-
size_t key = (dynamic_cast<const reco::RecoChargedCandidate*>(v0.daughter(dIdx)))->track().key();
195-
if (trkStatus[key] == TrkStatus::NOTUSED)
196-
trkStatus[key] = TrkStatus::VTX;
198+
for (const auto& v0 : *lambdas){
199+
double protonCharge = 0;
200+
for(size_t dIdx=0;dIdx<v0.numberOfDaughters(); dIdx++){
201+
size_t key= (dynamic_cast<const reco::RecoChargedCandidate*>(v0.daughter(dIdx)))->track().key();
202+
if(trkStatus[key]==TrkStatus::NOTUSED) trkStatus[key]=TrkStatus::VTX;
203+
protonCharge += v0.daughter(dIdx)->charge() * v0.daughter(dIdx)->momentum().mag2();
204+
}
205+
if (xiSelection_)
206+
{
207+
// selecting potential Xi- -> Lambda pi candidates
208+
TLorentzVector p4Lambda;
209+
p4Lambda.SetPtEtaPhiM(v0.pt(),v0.eta(),v0.phi(), v0.mass());
210+
for(unsigned int trkIndx=0; trkIndx < tracks->size(); trkIndx++){
211+
reco::TrackRef trk(tracks,trkIndx);
212+
if ((*trk).charge() * protonCharge < 0) continue;
213+
TLorentzVector p4pi;
214+
p4pi.SetPtEtaPhiM((*trk).pt(),(*trk).eta(),(*trk).phi(), 0.13957061);
215+
if ((p4Lambda+p4pi).M() < xiMassCut_){ // selecting potential Xi- candidates
216+
if(trkStatus[trkIndx]==TrkStatus::NOTUSED) trkStatus[trkIndx]=TrkStatus::VTX;
217+
}
218+
}
197219
}
198220
}
199221
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.bool(1.6)
2628
)
2729
from Configuration.Eras.Modifier_phase1Pixel_cff import phase1Pixel
2830
phase1Pixel.toModify(lostTracks, covarianceVersion =1 )

0 commit comments

Comments
 (0)