33
44using namespace l1trackunpacker ;
55
6- double DisplacedVertexProducer::FloatPtFromBits (const L1TTTrackType &track) const {
7- ap_uint<14 > ptEmulationBits = track.getTrackWord ()(TTTrack_TrackWord::TrackBitLocations::kRinvMSB - 1 , TTTrack_TrackWord::TrackBitLocations::kRinvLSB );
6+ double DisplacedVertexProducer::FloatPtFromBits (const L1TTTrackType& track) const {
7+ ap_uint<14 > ptEmulationBits = track.getTrackWord ()(TTTrack_TrackWord::TrackBitLocations::kRinvMSB - 1 ,
8+ TTTrack_TrackWord::TrackBitLocations::kRinvLSB );
89 ap_ufixed<14 , 9 > ptEmulation;
910 ptEmulation.V = (ptEmulationBits.range ());
1011 return ptEmulation.to_double ();
1112}
1213
13- double DisplacedVertexProducer::FloatEtaFromBits (const L1TTTrackType & track) const {
14+ double DisplacedVertexProducer::FloatEtaFromBits (const L1TTTrackType& track) const {
1415 TTTrack_TrackWord::tanl_t etaBits = track.getTanlWord ();
1516 glbeta_intern digieta;
1617 digieta.V = etaBits.range ();
1718 return (double )digieta;
1819}
1920
20- double DisplacedVertexProducer::FloatPhiFromBits (const L1TTTrackType & track) const {
21+ double DisplacedVertexProducer::FloatPhiFromBits (const L1TTTrackType& track) const {
2122 int Sector = track.phiSector ();
2223 double sector_phi_value = 0 ;
2324 if (Sector < 5 ) {
@@ -26,36 +27,36 @@ double DisplacedVertexProducer::FloatPhiFromBits(const L1TTTrackType &track) con
2627 sector_phi_value = (-1.0 * M_PI + M_PI / 9.0 + (Sector - 5 ) * 2.0 * M_PI / 9.0 );
2728 }
2829 glbphi_intern trkphiSector = DoubleToBit (
29- sector_phi_value, TTTrack_TrackWord::TrackBitWidths::kPhiSize + kExtraGlobalPhiBit , TTTrack_TrackWord::stepPhi0);
30+ sector_phi_value, TTTrack_TrackWord::TrackBitWidths::kPhiSize + kExtraGlobalPhiBit , TTTrack_TrackWord::stepPhi0);
3031 glbphi_intern local_phiBits = 0 ;
3132 local_phiBits.V = track.getPhiWord ();
32-
33+
3334 glbphi_intern local_phi =
34- DoubleToBit (BitToDouble (local_phiBits, TTTrack_TrackWord::TrackBitWidths::kPhiSize , TTTrack_TrackWord::stepPhi0),
35- TTTrack_TrackWord::TrackBitWidths::kPhiSize + kExtraGlobalPhiBit ,
36- TTTrack_TrackWord::stepPhi0);
35+ DoubleToBit (BitToDouble (local_phiBits, TTTrack_TrackWord::TrackBitWidths::kPhiSize , TTTrack_TrackWord::stepPhi0),
36+ TTTrack_TrackWord::TrackBitWidths::kPhiSize + kExtraGlobalPhiBit ,
37+ TTTrack_TrackWord::stepPhi0);
3738 glbphi_intern digiphi = local_phi + trkphiSector;
3839 return BitToDouble (
39- digiphi, TTTrack_TrackWord::TrackBitWidths::kPhiSize + kExtraGlobalPhiBit , TTTrack_TrackWord::stepPhi0);
40+ digiphi, TTTrack_TrackWord::TrackBitWidths::kPhiSize + kExtraGlobalPhiBit , TTTrack_TrackWord::stepPhi0);
4041}
4142
42- double DisplacedVertexProducer::FloatZ0FromBits (const L1TTTrackType & track) const {
43+ double DisplacedVertexProducer::FloatZ0FromBits (const L1TTTrackType& track) const {
4344 z0_intern trkZ = track.getZ0Word ();
4445 return BitToDouble (trkZ, TTTrack_TrackWord::TrackBitWidths::kZ0Size , TTTrack_TrackWord::stepZ0);
4546}
4647
47- double DisplacedVertexProducer::FloatD0FromBits (const L1TTTrackType & track) const {
48+ double DisplacedVertexProducer::FloatD0FromBits (const L1TTTrackType& track) const {
4849 d0_intern trkD0 = track.getD0Word ();
4950 return BitToDouble (trkD0, TTTrack_TrackWord::TrackBitWidths::kD0Size , TTTrack_TrackWord::stepD0);
5051}
5152
52- int DisplacedVertexProducer::ChargeFromBits (const L1TTTrackType & track) const {
53+ int DisplacedVertexProducer::ChargeFromBits (const L1TTTrackType& track) const {
5354 ap_uint<1 > chargeBit = track.getTrackWord ()[TTTrack_TrackWord::TrackBitLocations::kRinvMSB ];
54- return 1 - (2 * chargeBit.to_uint ());
55+ return 1 - (2 * chargeBit.to_uint ());
5556}
5657
57- double convertPtToR (double pt){
58- return 100.0 * (1.0 / (0.3 * 3.8 )) * pt; // returns R in cm
58+ double convertPtToR (double pt) {
59+ return 100.0 * (1.0 / (0.3 * 3.8 )) * pt; // returns R in cm
5960}
6061
6162bool ComparePtTrack (std::pair<Track_Parameters, edm::Ptr<TrackingParticle>> a,
@@ -210,38 +211,37 @@ void DisplacedVertexProducer::produce(edm::StreamID, edm::Event& iEvent, const e
210211 float pt, eta, phi, z0, d0, rho, chi2rphi, chi2rz, bendchi2, MVA1;
211212 int nstub;
212213
213- if (runEmulation_){
214+ if (runEmulation_) {
214215 pt = FloatPtFromBits (*gtttrack_ptr);
215216 eta = FloatEtaFromBits (*gtttrack_ptr);
216217 phi = FloatPhiFromBits (*gtttrack_ptr);
217- z0 = gtttrack_ptr->getZ0 (); // cm
218+ z0 = gtttrack_ptr->getZ0 (); // cm
218219 d0 = gtttrack_ptr->getD0 ();
219220 int charge = ChargeFromBits (*gtttrack_ptr);
220- rho = charge* convertPtToR (pt);
221+ rho = charge * convertPtToR (pt);
221222 chi2rphi = gtttrack_ptr->getChi2RPhi ();
222223 chi2rz = gtttrack_ptr->getChi2RZ ();
223224 bendchi2 = gtttrack_ptr->getBendChi2 ();
224225 MVA1 = gtttrack_ptr->getMVAQuality ();
225226 nstub = gtttrack_ptr->getNStubs ();
226- }
227- else {
227+ } else {
228228 pt = l1track_ptr->momentum ().perp ();
229229 eta = l1track_ptr->momentum ().eta ();
230230 phi = l1track_ptr->momentum ().phi ();
231231 z0 = l1track_ptr->z0 (); // cm
232232 float x0 = l1track_ptr->POCA ().x ();
233233 float y0 = l1track_ptr->POCA ().y ();
234234 d0 = x0 * sin (phi) - y0 * cos (phi);
235- rho = 1 / l1track_ptr->rInv ();
235+ rho = 1 / l1track_ptr->rInv ();
236236 chi2rphi = l1track_ptr->chi2XYRed ();
237237 chi2rz = l1track_ptr->chi2ZRed ();
238238 bendchi2 = l1track_ptr->stubPtConsistency ();
239- MVA1 = l1track_ptr->trkMVA1 ();
239+ MVA1 = l1track_ptr->trkMVA1 ();
240240 std::vector<edm::Ref<edmNew::DetSetVector<TTStub<Ref_Phase2TrackerDigi_>>, TTStub<Ref_Phase2TrackerDigi_>>>
241- stubRefs = l1track_ptr->getStubRefs ();
241+ stubRefs = l1track_ptr->getStubRefs ();
242242 nstub = (int )stubRefs.size ();
243243 }
244-
244+
245245 if (chi2rz < chi2rzMax_ && MVA1 > promptMVAMin_ && pt > ptMin_ && fabs (eta) < etaMax_) {
246246 if (fabs (d0) > dispD0Min_) {
247247 if (MVA1 <= promptMVADispTrackMin_)
@@ -260,18 +260,8 @@ void DisplacedVertexProducer::produce(edm::StreamID, edm::Event& iEvent, const e
260260 continue ;
261261 }
262262
263- Track_Parameters track = Track_Parameters (pt,
264- d0,
265- z0,
266- eta,
267- phi,
268- rho,
269- (this_l1track - 1 ),
270- nstub,
271- chi2rphi,
272- chi2rz,
273- bendchi2,
274- MVA1);
263+ Track_Parameters track =
264+ Track_Parameters (pt, d0, z0, eta, phi, rho, (this_l1track - 1 ), nstub, chi2rphi, chi2rz, bendchi2, MVA1);
275265
276266 edm::Ptr<TrackingParticle> my_tp = MCTruthTTTrackHandle->findTrackingParticlePtr (l1track_ptr);
277267 selectedTracksWithTruth.push_back (std::make_pair (track, my_tp));
@@ -310,9 +300,11 @@ void DisplacedVertexProducer::produce(edm::StreamID, edm::Event& iEvent, const e
310300 Vertex_Parameters vertex = Vertex_Parameters (
311301 x_dv_trk, y_dv_trk, z_dv_trk, selectedTracksWithTruth[i].first , selectedTracksWithTruth[j].first );
312302
313- if (vertex.R_T >RTMax_) continue ;
314- if (vertex.R_T <RTMin_) continue ;
315-
303+ if (vertex.R_T > RTMax_)
304+ continue ;
305+ if (vertex.R_T < RTMin_)
306+ continue ;
307+
316308 l1t::DisplacedTrackVertex outputVertex = l1t::DisplacedTrackVertex (selectedTracksWithTruth[i].first .index ,
317309 selectedTracksWithTruth[j].first .index ,
318310 inTraj,
@@ -327,65 +319,63 @@ void DisplacedVertexProducer::produce(edm::StreamID, edm::Event& iEvent, const e
327319 vertex.p_mag ,
328320 isReal);
329321
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 ());
322+ if (runEmulation_) {
323+ std::vector<ap_fixed<13 , 8 , AP_RND_CONV, AP_SAT>> Transformed_features = {
324+ selectedTracksWithTruth[i].first .pt * 0.25 ,
325+ selectedTracksWithTruth[j].first .pt * 0.25 ,
326+ selectedTracksWithTruth[i].first .eta ,
327+ selectedTracksWithTruth[j].first .eta ,
328+ selectedTracksWithTruth[i].first .phi ,
329+ selectedTracksWithTruth[j].first .phi ,
330+ selectedTracksWithTruth[i].first .d0 ,
331+ selectedTracksWithTruth[j].first .d0 ,
332+ selectedTracksWithTruth[i].first .z0 ,
333+ selectedTracksWithTruth[j].first .z0 ,
334+ selectedTracksWithTruth[i].first .chi2rz + 0.07 ,
335+ selectedTracksWithTruth[j].first .chi2rz + 0.07 ,
336+ selectedTracksWithTruth[i].first .bendchi2 + 0.07 ,
337+ selectedTracksWithTruth[j].first .bendchi2 + 0.07 ,
338+ selectedTracksWithTruth[i].first .MVA1 + 0.07 ,
339+ selectedTracksWithTruth[j].first .MVA1 + 0.07 ,
340+ vertex.d_T ,
341+ vertex.R_T ,
342+ vertex.cos_T ,
343+ vertex.delta_z * 0.125 };
344+ conifer::BDT<ap_fixed<13 , 8 , AP_RND_CONV, AP_SAT>, ap_fixed<13 , 8 , AP_RND_CONV, AP_SAT>> bdt (this ->model_ );
345+ std::vector<ap_fixed<13 , 8 , AP_RND_CONV, AP_SAT>> output = bdt.decision_function (Transformed_features);
346+ outputVertex.setScore (output.at (0 ).to_float ());
347+ } else {
348+ std::vector<float > Transformed_features = {float (selectedTracksWithTruth[i].first .pt * 0.25 ),
349+ float (selectedTracksWithTruth[j].first .pt * 0.25 ),
350+ selectedTracksWithTruth[i].first .eta ,
351+ selectedTracksWithTruth[j].first .eta ,
352+ selectedTracksWithTruth[i].first .phi ,
353+ selectedTracksWithTruth[j].first .phi ,
354+ selectedTracksWithTruth[i].first .d0 ,
355+ selectedTracksWithTruth[j].first .d0 ,
356+ selectedTracksWithTruth[i].first .z0 ,
357+ selectedTracksWithTruth[j].first .z0 ,
358+ float (selectedTracksWithTruth[i].first .chi2rz + 0.07 ),
359+ float (selectedTracksWithTruth[j].first .chi2rz + 0.07 ),
360+ float (selectedTracksWithTruth[i].first .bendchi2 + 0.07 ),
361+ float (selectedTracksWithTruth[j].first .bendchi2 + 0.07 ),
362+ float (selectedTracksWithTruth[i].first .MVA1 + 0.07 ),
363+ float (selectedTracksWithTruth[j].first .MVA1 + 0.07 ),
364+ vertex.d_T ,
365+ vertex.R_T ,
366+ vertex.cos_T ,
367+ float (vertex.delta_z * 0.125 )};
368+ conifer::BDT<float , float > bdt (this ->model_ );
369+ std::vector<float > output = bdt.decision_function (Transformed_features);
370+ outputVertex.setScore (output.at (0 ));
354371 }
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-
381-
372+
382373 product->emplace_back (outputVertex);
383374 }
384375 }
385376
386377 // //=== Store output
387378 iEvent.put (std::move (product), outputVertexCollectionName_);
388-
389379}
390380
391381DEFINE_FWK_MODULE (DisplacedVertexProducer);
0 commit comments