Skip to content

Commit 8b860f2

Browse files
committed
Removing repeated code in displaced vertex producer, removing unneeded branches from ntuple maker
1 parent 07db5f5 commit 8b860f2

File tree

4 files changed

+103
-546
lines changed

4 files changed

+103
-546
lines changed

L1Trigger/L1TTrackMatch/interface/DisplacedVertexProducer.h

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -170,8 +170,7 @@ class DisplacedVertexProducer : public edm::global::EDProducer<> {
170170
const edm::EDGetTokenT<TTTrackAssociationMap<Ref_Phase2TrackerDigi_>> ttTrackMCTruthToken_;
171171
const edm::EDGetTokenT<std::vector<TTTrack<Ref_Phase2TrackerDigi_>>> trackToken_;
172172
const edm::EDGetTokenT<std::vector<TTTrack<Ref_Phase2TrackerDigi_>>> trackGTTToken_;
173-
const std::string outputTrackCollectionName_;
174-
const std::string outputTrackEmulationCollectionName_;
173+
const std::string outputVertexCollectionName_;
175174
const std::string model_;
176175
const bool runEmulation_;
177176
const edm::ParameterSet cutSet_;

L1Trigger/L1TTrackMatch/plugins/DisplacedVertexProducer.cc

Lines changed: 93 additions & 183 deletions
Original file line numberDiff line numberDiff line change
@@ -168,8 +168,7 @@ DisplacedVertexProducer::DisplacedVertexProducer(const edm::ParameterSet& iConfi
168168
iConfig.getParameter<edm::InputTag>("l1TracksInputTag"))),
169169
trackGTTToken_(consumes<std::vector<TTTrack<Ref_Phase2TrackerDigi_>>>(
170170
iConfig.getParameter<edm::InputTag>("l1TracksGTTInputTag"))),
171-
outputTrackCollectionName_(iConfig.getParameter<std::string>("l1TrackVertexCollectionName")),
172-
outputTrackEmulationCollectionName_(iConfig.getParameter<std::string>("l1TrackEmulationVertexCollectionName")),
171+
outputVertexCollectionName_(iConfig.getParameter<std::string>("l1TrackVertexCollectionName")),
173172
model_(iConfig.getParameter<std::string>("model")),
174173
runEmulation_(iConfig.getParameter<bool>("runEmulation")),
175174
cutSet_(iConfig.getParameter<edm::ParameterSet>("cutSet")),
@@ -188,8 +187,7 @@ DisplacedVertexProducer::DisplacedVertexProducer(const edm::ParameterSet& iConfi
188187
RTMin_(cutSet_.getParameter<double>("RTMin")),
189188
RTMax_(cutSet_.getParameter<double>("RTMax")) {
190189
//--- Define EDM output to be written to file (if required)
191-
produces<l1t::DisplacedTrackVertexCollection>(outputTrackCollectionName_);
192-
if(runEmulation_) produces<l1t::DisplacedTrackVertexCollection>(outputTrackEmulationCollectionName_);
190+
produces<l1t::DisplacedTrackVertexCollection>(outputVertexCollectionName_);
193191
}
194192

195193
void DisplacedVertexProducer::produce(edm::StreamID, edm::Event& iEvent, const edm::EventSetup& iSetup) const {
@@ -202,85 +200,47 @@ void DisplacedVertexProducer::produce(edm::StreamID, edm::Event& iEvent, const e
202200
std::vector<TTTrack<Ref_Phase2TrackerDigi_>>::const_iterator iterL1Track;
203201
int this_l1track = 0;
204202
std::vector<std::pair<Track_Parameters, edm::Ptr<TrackingParticle>>> selectedTracksWithTruth;
205-
std::vector<std::pair<Track_Parameters, edm::Ptr<TrackingParticle>>> selectedTracksEmulationWithTruth;
206203

207-
//Simulation track selection loop
204+
//track selection loop
208205
for (iterL1Track = TTTrackHandle->begin(); iterL1Track != TTTrackHandle->end(); iterL1Track++) {
209206
edm::Ptr<TTTrack<Ref_Phase2TrackerDigi_>> l1track_ptr(TTTrackHandle, this_l1track);
207+
edm::Ptr<TTTrack<Ref_Phase2TrackerDigi_>> gtttrack_ptr(TTTrackGTTHandle, this_l1track);
210208
this_l1track++;
211209

212-
float pt = l1track_ptr->momentum().perp();
213-
float eta = l1track_ptr->momentum().eta();
214-
float phi = l1track_ptr->momentum().phi();
215-
float z0 = l1track_ptr->z0(); //cm
216-
float x0 = l1track_ptr->POCA().x();
217-
float y0 = l1track_ptr->POCA().y();
218-
float d0 = -x0 * sin(phi) + y0 * cos(phi);
219-
float rinv = l1track_ptr->rInv();
220-
float chi2rphi = l1track_ptr->chi2XYRed();
221-
float chi2rz = l1track_ptr->chi2ZRed();
222-
float bendchi2 = l1track_ptr->stubPtConsistency();
223-
float MVA1 = l1track_ptr->trkMVA1();
224-
225-
std::vector<edm::Ref<edmNew::DetSetVector<TTStub<Ref_Phase2TrackerDigi_>>, TTStub<Ref_Phase2TrackerDigi_>>>
210+
float pt, eta, phi, z0, d0, rho, chi2rphi, chi2rz, bendchi2, MVA1;
211+
int nstub;
212+
213+
if(runEmulation_){
214+
pt = FloatPtFromBits(*gtttrack_ptr);
215+
eta = FloatEtaFromBits(*gtttrack_ptr);
216+
phi = FloatPhiFromBits(*gtttrack_ptr);
217+
z0 = gtttrack_ptr->getZ0(); //cm
218+
d0 = gtttrack_ptr->getD0();
219+
int charge = ChargeFromBits(*gtttrack_ptr);
220+
rho = charge*convertPtToR(pt);
221+
chi2rphi = gtttrack_ptr->getChi2RPhi();
222+
chi2rz = gtttrack_ptr->getChi2RZ();
223+
bendchi2 = gtttrack_ptr->getBendChi2();
224+
MVA1 = gtttrack_ptr->getMVAQuality();
225+
nstub = gtttrack_ptr->getNStubs();
226+
}
227+
else{
228+
pt = l1track_ptr->momentum().perp();
229+
eta = l1track_ptr->momentum().eta();
230+
phi = l1track_ptr->momentum().phi();
231+
z0 = l1track_ptr->z0(); //cm
232+
float x0 = l1track_ptr->POCA().x();
233+
float y0 = l1track_ptr->POCA().y();
234+
d0 = -x0 * sin(phi) + y0 * cos(phi);
235+
rho = 1/l1track_ptr->rInv();
236+
chi2rphi = l1track_ptr->chi2XYRed();
237+
chi2rz = l1track_ptr->chi2ZRed();
238+
bendchi2 = l1track_ptr->stubPtConsistency();
239+
MVA1 = l1track_ptr->trkMVA1();
240+
std::vector<edm::Ref<edmNew::DetSetVector<TTStub<Ref_Phase2TrackerDigi_>>, TTStub<Ref_Phase2TrackerDigi_>>>
226241
stubRefs = l1track_ptr->getStubRefs();
227-
int nstub = (int)stubRefs.size();
228-
229-
if (chi2rz < chi2rzMax_ && MVA1 > promptMVAMin_ && pt > ptMin_ && fabs(eta) < etaMax_) {
230-
if (fabs(d0) > dispD0Min_) {
231-
if (MVA1 <= promptMVADispTrackMin_)
232-
continue;
233-
}
234-
if (fabs(eta) > overlapEtaMin_ && fabs(eta) < overlapEtaMax_) {
235-
if (nstub <= overlapNStubsMin_)
236-
continue;
237-
}
238-
if (fabs(eta) > diskEtaMin_) {
239-
if (fabs(d0) <= diskD0Min_)
240-
continue;
241-
}
242-
if (fabs(eta) <= diskEtaMin_) {
243-
if (fabs(d0) <= barrelD0Min_)
244-
continue;
245-
}
246-
247-
Track_Parameters track = Track_Parameters(pt,
248-
-d0,
249-
z0,
250-
eta,
251-
phi,
252-
(1/rinv),
253-
(this_l1track - 1),
254-
nstub,
255-
chi2rphi,
256-
chi2rz,
257-
bendchi2,
258-
MVA1);
259-
260-
edm::Ptr<TrackingParticle> my_tp = MCTruthTTTrackHandle->findTrackingParticlePtr(l1track_ptr);
261-
selectedTracksWithTruth.push_back(std::make_pair(track, my_tp));
242+
nstub = (int)stubRefs.size();
262243
}
263-
}
264-
265-
//Emulation track selection loop
266-
this_l1track = 0;
267-
for (iterL1Track = TTTrackHandle->begin(); iterL1Track != TTTrackHandle->end(); iterL1Track++) {
268-
edm::Ptr<TTTrack<Ref_Phase2TrackerDigi_>> l1track_ptr(TTTrackGTTHandle, this_l1track);
269-
edm::Ptr<TTTrack<Ref_Phase2TrackerDigi_>> l1track_ref(TTTrackHandle, this_l1track);
270-
this_l1track++;
271-
272-
float pt = FloatPtFromBits(*l1track_ptr);
273-
float eta = FloatEtaFromBits(*l1track_ptr);
274-
float phi = FloatPhiFromBits(*l1track_ptr);
275-
float z0 = l1track_ptr->getZ0(); //cm
276-
float d0 = l1track_ptr->getD0();
277-
int charge = ChargeFromBits(*l1track_ptr);
278-
float rho = charge*convertPtToR(pt);
279-
float chi2rphi = l1track_ptr->getChi2RPhi();
280-
float chi2rz = l1track_ptr->getChi2RZ();
281-
float bendchi2 = l1track_ptr->getBendChi2();
282-
float MVA1 = l1track_ptr->getMVAQuality();
283-
int nstub = l1track_ptr->getNStubs();
284244

285245
if (chi2rz < chi2rzMax_ && MVA1 > promptMVAMin_ && pt > ptMin_ && fabs(eta) < etaMax_) {
286246
if (fabs(d0) > dispD0Min_) {
@@ -313,12 +273,12 @@ void DisplacedVertexProducer::produce(edm::StreamID, edm::Event& iEvent, const e
313273
bendchi2,
314274
MVA1);
315275

316-
edm::Ptr<TrackingParticle> my_tp = MCTruthTTTrackHandle->findTrackingParticlePtr(l1track_ref);
317-
selectedTracksEmulationWithTruth.push_back(std::make_pair(track, my_tp));
276+
edm::Ptr<TrackingParticle> my_tp = MCTruthTTTrackHandle->findTrackingParticlePtr(l1track_ptr);
277+
selectedTracksWithTruth.push_back(std::make_pair(track, my_tp));
318278
}
319279
}
320280

321-
//Simulation vertex loop
281+
//vertex loop
322282
std::unique_ptr<l1t::DisplacedTrackVertexCollection> product(new std::vector<l1t::DisplacedTrackVertex>());
323283
for (int i = 0; i < int(selectedTracksWithTruth.size() - 1); i++) {
324284
for (int j = i + 1; j < int(selectedTracksWithTruth.size()); j++) {
@@ -366,116 +326,66 @@ void DisplacedVertexProducer::produce(edm::StreamID, edm::Event& iEvent, const e
366326
vertex.openingAngle,
367327
vertex.p_mag,
368328
isReal);
329+
330+
if(runEmulation_){
331+
std::vector<ap_fixed<13,8,AP_RND_CONV, AP_SAT>> Transformed_features = {selectedTracksWithTruth[i].first.pt*0.25,
332+
selectedTracksWithTruth[j].first.pt*0.25,
333+
selectedTracksWithTruth[i].first.eta,
334+
selectedTracksWithTruth[j].first.eta,
335+
selectedTracksWithTruth[i].first.phi,
336+
selectedTracksWithTruth[j].first.phi,
337+
selectedTracksWithTruth[i].first.d0,
338+
selectedTracksWithTruth[j].first.d0,
339+
selectedTracksWithTruth[i].first.z0,
340+
selectedTracksWithTruth[j].first.z0,
341+
selectedTracksWithTruth[i].first.chi2rz+0.07,
342+
selectedTracksWithTruth[j].first.chi2rz+0.07,
343+
selectedTracksWithTruth[i].first.bendchi2+0.07,
344+
selectedTracksWithTruth[j].first.bendchi2+0.07,
345+
selectedTracksWithTruth[i].first.MVA1+0.07,
346+
selectedTracksWithTruth[j].first.MVA1+0.07,
347+
vertex.d_T,
348+
vertex.R_T,
349+
vertex.cos_T,
350+
vertex.delta_z*0.125};
351+
conifer::BDT<ap_fixed<13,8,AP_RND_CONV, AP_SAT>, ap_fixed<13,8,AP_RND_CONV, AP_SAT>> bdt(this->model_);
352+
std::vector<ap_fixed<13,8,AP_RND_CONV, AP_SAT>> output = bdt.decision_function(Transformed_features);
353+
outputVertex.setScore(output.at(0).to_float());
354+
}
355+
else{
356+
std::vector<float> Transformed_features = {float(selectedTracksWithTruth[i].first.pt*0.25),
357+
float(selectedTracksWithTruth[j].first.pt*0.25),
358+
selectedTracksWithTruth[i].first.eta,
359+
selectedTracksWithTruth[j].first.eta,
360+
selectedTracksWithTruth[i].first.phi,
361+
selectedTracksWithTruth[j].first.phi,
362+
selectedTracksWithTruth[i].first.d0,
363+
selectedTracksWithTruth[j].first.d0,
364+
selectedTracksWithTruth[i].first.z0,
365+
selectedTracksWithTruth[j].first.z0,
366+
float(selectedTracksWithTruth[i].first.chi2rz+0.07),
367+
float(selectedTracksWithTruth[j].first.chi2rz+0.07),
368+
float(selectedTracksWithTruth[i].first.bendchi2+0.07),
369+
float(selectedTracksWithTruth[j].first.bendchi2+0.07),
370+
float(selectedTracksWithTruth[i].first.MVA1+0.07),
371+
float(selectedTracksWithTruth[j].first.MVA1+0.07),
372+
vertex.d_T,
373+
vertex.R_T,
374+
vertex.cos_T,
375+
float(vertex.delta_z*0.125)};
376+
conifer::BDT<float,float> bdt(this->model_);
377+
std::vector<float> output = bdt.decision_function(Transformed_features);
378+
outputVertex.setScore(output.at(0));
379+
}
380+
369381

370-
std::vector<float> Transformed_features = {float(selectedTracksWithTruth[i].first.pt*0.25),
371-
float(selectedTracksWithTruth[j].first.pt*0.25),
372-
selectedTracksWithTruth[i].first.eta,
373-
selectedTracksWithTruth[j].first.eta,
374-
selectedTracksWithTruth[i].first.phi,
375-
selectedTracksWithTruth[j].first.phi,
376-
selectedTracksWithTruth[i].first.d0,
377-
selectedTracksWithTruth[j].first.d0,
378-
selectedTracksWithTruth[i].first.z0,
379-
selectedTracksWithTruth[j].first.z0,
380-
float(selectedTracksWithTruth[i].first.chi2rz+0.07),
381-
float(selectedTracksWithTruth[j].first.chi2rz+0.07),
382-
float(selectedTracksWithTruth[i].first.bendchi2+0.07),
383-
float(selectedTracksWithTruth[j].first.bendchi2+0.07),
384-
float(selectedTracksWithTruth[i].first.MVA1+0.07),
385-
float(selectedTracksWithTruth[j].first.MVA1+0.07),
386-
vertex.d_T,
387-
vertex.R_T,
388-
vertex.cos_T,
389-
float(vertex.delta_z*0.125)};
390-
391-
conifer::BDT<float,float> bdt(this->model_);
392-
std::vector<float> output = bdt.decision_function(Transformed_features);
393-
outputVertex.setScore(output.at(0));
394382
product->emplace_back(outputVertex);
395383
}
396384
}
397385

398386
// //=== Store output
399-
iEvent.put(std::move(product), outputTrackCollectionName_);
400-
if(!runEmulation_) return;
401-
402-
//Emulation vertex loop
403-
std::unique_ptr<l1t::DisplacedTrackVertexCollection> productEmulation(new std::vector<l1t::DisplacedTrackVertex>());
404-
for (int i = 0; i < int(selectedTracksEmulationWithTruth.size() - 1); i++) {
405-
for (int j = i + 1; j < int(selectedTracksEmulationWithTruth.size()); j++) {
406-
if (dist_TPs(selectedTracksEmulationWithTruth[i].first, selectedTracksEmulationWithTruth[j].first) != 0)
407-
continue;
408-
Double_t x_dv_trk = -9999.0;
409-
Double_t y_dv_trk = -9999.0;
410-
Double_t z_dv_trk = -9999.0;
411-
edm::Ptr<TrackingParticle> tp_i = selectedTracksEmulationWithTruth[i].second;
412-
edm::Ptr<TrackingParticle> tp_j = selectedTracksEmulationWithTruth[j].second;
413-
bool isReal = false;
414-
if (!tp_i.isNull() && !tp_j.isNull()) {
415-
bool isHard_i = false;
416-
bool isHard_j = false;
417-
if (!tp_i->genParticles().empty() && !tp_j->genParticles().empty()) {
418-
isHard_i = tp_i->genParticles()[0]->isHardProcess() || tp_i->genParticles()[0]->fromHardProcessFinalState();
419-
isHard_j = tp_j->genParticles()[0]->isHardProcess() || tp_j->genParticles()[0]->fromHardProcessFinalState();
420-
}
421-
422-
if (tp_i->eventId().event() == 0 && tp_j->eventId().event() == 0 && fabs(tp_i->vx() - tp_j->vx()) < 0.0001 &&
423-
fabs(tp_i->vy() - tp_j->vy()) < 0.0001 && fabs(tp_i->vz() - tp_j->vz()) < 0.0001 && isHard_i && isHard_j &&
424-
((tp_i->charge() + tp_j->charge()) == 0)) {
425-
isReal = true;
426-
}
427-
}
428-
429-
int inTraj =
430-
calcVertex(selectedTracksEmulationWithTruth[i].first, selectedTracksEmulationWithTruth[j].first, x_dv_trk, y_dv_trk, z_dv_trk);
431-
Vertex_Parameters vertex = Vertex_Parameters(
432-
x_dv_trk, y_dv_trk, z_dv_trk, selectedTracksEmulationWithTruth[i].first, selectedTracksEmulationWithTruth[j].first);
433-
434-
if(vertex.R_T>RTMax_) continue;
435-
if(vertex.R_T<RTMin_) continue;
436-
437-
l1t::DisplacedTrackVertex outputVertex = l1t::DisplacedTrackVertex(selectedTracksEmulationWithTruth[i].first.index,
438-
selectedTracksEmulationWithTruth[j].first.index,
439-
inTraj,
440-
vertex.d_T,
441-
vertex.R_T,
442-
vertex.cos_T,
443-
vertex.delta_z,
444-
vertex.x_dv,
445-
vertex.y_dv,
446-
vertex.z_dv,
447-
vertex.openingAngle,
448-
vertex.p_mag,
449-
isReal);
450-
451-
std::vector<ap_fixed<13,8,AP_RND_CONV, AP_SAT>> Transformed_features = {selectedTracksEmulationWithTruth[i].first.pt*0.25,
452-
selectedTracksEmulationWithTruth[j].first.pt*0.25,
453-
selectedTracksEmulationWithTruth[i].first.eta,
454-
selectedTracksEmulationWithTruth[j].first.eta,
455-
selectedTracksEmulationWithTruth[i].first.phi,
456-
selectedTracksEmulationWithTruth[j].first.phi,
457-
selectedTracksEmulationWithTruth[i].first.d0,
458-
selectedTracksEmulationWithTruth[j].first.d0,
459-
selectedTracksEmulationWithTruth[i].first.z0,
460-
selectedTracksEmulationWithTruth[j].first.z0,
461-
selectedTracksEmulationWithTruth[i].first.chi2rz+0.07,
462-
selectedTracksEmulationWithTruth[j].first.chi2rz+0.07,
463-
selectedTracksEmulationWithTruth[i].first.bendchi2+0.07,
464-
selectedTracksEmulationWithTruth[j].first.bendchi2+0.07,
465-
selectedTracksEmulationWithTruth[i].first.MVA1+0.07,
466-
selectedTracksEmulationWithTruth[j].first.MVA1+0.07,
467-
vertex.d_T,
468-
vertex.R_T,
469-
vertex.cos_T,
470-
vertex.delta_z*0.125};
471-
472-
conifer::BDT<ap_fixed<13,8,AP_RND_CONV, AP_SAT>, ap_fixed<13,8,AP_RND_CONV, AP_SAT>> bdt(this->model_);
473-
std::vector<ap_fixed<13,8,AP_RND_CONV, AP_SAT>> output = bdt.decision_function(Transformed_features);
474-
outputVertex.setScore(output.at(0).to_float());
475-
productEmulation->emplace_back(outputVertex);
476-
}
477-
}
478-
iEvent.put(std::move(productEmulation), outputTrackEmulationCollectionName_);
387+
iEvent.put(std::move(product), outputVertexCollectionName_);
388+
479389
}
480390

481391
DEFINE_FWK_MODULE(DisplacedVertexProducer);

L1Trigger/L1TTrackMatch/python/DisplacedVertexProducer_cfi.py

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -4,10 +4,9 @@
44
l1TracksInputTag = cms.InputTag("l1tTTTracksFromExtendedTrackletEmulation", "Level1TTTracks"),
55
l1TracksGTTInputTag = cms.InputTag("l1tGTTInputProducerExtended","Level1TTTracksExtendedConverted"),
66
l1TrackVertexCollectionName = cms.string("dispVertices"),
7-
l1TrackEmulationVertexCollectionName = cms.string("dispVerticesEmulation"),
87
mcTruthTrackInputTag = cms.InputTag("TTTrackAssociatorFromPixelDigisExtended", "Level1TTTracks"),
98
model = cms.string("/afs/cern.ch/user/r/rmccarth/private/dispVert/l1tOfflinePR/CMSSW_14_0_0_pre3/src/L1Trigger/L1TTrackMatch/data/dispVertTaggerEmulationConiferShifted13p8.json"),
10-
runEmulation = cms.bool(True),
9+
runEmulation = cms.bool(False),
1110
cutSet = cms.PSet(
1211
chi2rzMax = cms.double(3.0), # chi2rz value for all tracks must be less than this
1312
promptMVAMin = cms.double(0.2), # prompt track quality MVA score for all tracks must be greater than this

0 commit comments

Comments
 (0)