82{
83
84
85
86
87
88 auto n_taus = Monitored::Scalar<int>("NTauCandidates", 0);
89
90 auto pT = Monitored::Scalar<float>(
"Pt", 0);
91 auto eta = Monitored::Scalar<float>(
"Eta", -99.9);
92 auto phi = Monitored::Scalar<float>(
"Phi", -99.9);
93
94 auto etaRoI = Monitored::Scalar<float>("EtaRoI", -99.9);
95 auto phiRoI = Monitored::Scalar<float>("PhiRoI", -99.9);
96 auto dEta_RoI = Monitored::Scalar<float>("dEtaTau_RoI", -10);
97 auto dPhi_RoI = Monitored::Scalar<float>("dPhiTau_RoI", -10);
98
99 auto mEflowApprox = Monitored::Scalar<float>(
"mEflowApprox", -99.9);
101 auto pt_jetseed_log = Monitored::Scalar<float>(
"pt_jetseed_log", -99.9);
102 auto etaDetectorAxis = Monitored::Scalar<float>("etaDetectorAxis", -99.9);
103 auto ptDetectorAxis = Monitored::Scalar<float>(
"ptDetectorAxis", -99.9);
104 auto ptDetectorAxis_log = Monitored::Scalar<float>("ptDetectorAxis_log", -99.9);
105
106 auto n_cells = Monitored::Scalar<int>("NCaloCells", 0);
107 auto EMRadius = Monitored::Scalar<float>(
"EMRadius", -0.099);
108 auto HadRadius = Monitored::Scalar<float>("HadRadius", -0.099);
109 auto EtHad = Monitored::Scalar<float>("EtHad", -10);
110 auto EtEm = Monitored::Scalar<float>("EtEm", -10);
111 auto EMFrac = Monitored::Scalar<float>("EMFrac", -10);
112 auto IsoFrac = Monitored::Scalar<float>("IsoFrac", -1);
113 auto CentFrac = Monitored::Scalar<float>("CentFrac", -10);
114
115 auto clustersMeanCenterLambda = Monitored::Scalar<float>("clustersMeanCenterLambda", 0);
116 auto clustersMeanFirstEngDens = Monitored::Scalar<float>("clustersMeanFirstEngDens", 0);
117 auto clustersMeanEMProbability = Monitored::Scalar<float>("clustersMeanEMProbability", 0);
118 auto clustersMeanSecondLambda = Monitored::Scalar<float>("clustersMeanSecondLambda", 0);
119 auto clustersMeanPresamplerFrac = Monitored::Scalar<float>("clustersMeanPresamplerFrac", 0);
120
121 auto n_clusters = Monitored::Scalar<int>("NClusters", 0);
122 std::vector<float> cluster_et_log, cluster_dEta, cluster_dPhi;
123 std::vector<float> cluster_log_SECOND_R, cluster_SECOND_LAMBDA, cluster_CENTER_LAMBDA;
128 auto mon_cluster_SECOND_LAMBDA =
Monitored::Collection(
"cluster_SECOND_LAMBDA", cluster_SECOND_LAMBDA);
129 auto mon_cluster_CENTER_LAMBDA =
Monitored::Collection(
"cluster_CENTER_LAMBDA", cluster_CENTER_LAMBDA);
130 std::vector<unsigned char> calo_errors;
132
133
134 auto n_tracks = Monitored::Scalar<int>("NTracks", -10);
135 auto n_iso_tracks = Monitored::Scalar<int>("NIsoTracks", -10);
136
137 auto ipSigLeadTrk = Monitored::Scalar<float>(
"ipSigLeadTrk", -1000);
138 auto trFlightPathSig = Monitored::Scalar<float>(
"trFlightPathSig", -10);
139 auto massTrkSys = Monitored::Scalar<float>(
"massTrkSys", -10);
140 auto dRmax = Monitored::Scalar<float>(
"dRmax", -10);
141 auto trkAvgDist = Monitored::Scalar<float>(
"TrkAvgDist", -1);
142 auto innerTrkAvgDist = Monitored::Scalar<float>(
"innerTrkAvgDist", -1);
143 auto etovPtLead = Monitored::Scalar<float>("EtovPtLead", -10);
144 auto PSSFraction = Monitored::Scalar<float>(
"PSSFraction", -999.9);
145 auto EMPOverTrkSysP = Monitored::Scalar<float>(
"EMPOverTrkSysP", -999.9);
147 auto vertex_x = Monitored::Scalar<float>("vertex_x", -999.9);
148 auto vertex_y = Monitored::Scalar<float>("vertex_y", -999.9);
149 auto vertex_z = Monitored::Scalar<float>("vertex_z", -999.9);
150
151 auto n_all_tracks = Monitored::Scalar<int>("NAllTracks", 0);
152 std::vector<float> track_pt_log, track_dEta, track_dPhi;
153 std::vector<float> track_d0_abs_log, track_z0sinthetaTJVA_abs_log;
154 std::vector<float> track_nPixelHitsPlusDeadSensors, track_nSCTHitsPlusDeadSensors;
159 auto mon_track_z0sinthetaTJVA_abs_log =
Monitored::Collection(
"track_z0sinthetaTJVA_abs_log", track_z0sinthetaTJVA_abs_log);
160 auto mon_track_nPixelHitsPlusDeadSensors =
Monitored::Collection(
"track_nPixelHitsPlusDeadSensors", track_nPixelHitsPlusDeadSensors);
161 auto mon_track_nSCTHitsPlusDeadSensors =
Monitored::Collection(
"track_nSCTHitsPlusDeadSensors", track_nSCTHitsPlusDeadSensors);
162 std::vector<unsigned char> track_errors;
164
165 std::map<std::string, Monitored::Scalar<float>> monitoredIdVariables;
167 monitoredIdVariables.emplace(key + "_TauJetScore_0p", Monitored::Scalar<float>(key + "_TauJetScore_0p", -1));
168 monitoredIdVariables.emplace(key + "_TauJetScoreTrans_0p", Monitored::Scalar<float>(key + "_TauJetScoreTrans_0p", -1));
169 monitoredIdVariables.emplace(key + "_TauJetScore_1p", Monitored::Scalar<float>(key + "_TauJetScore_1p", -1));
170 monitoredIdVariables.emplace(key + "_TauJetScoreTrans_1p", Monitored::Scalar<float>(key + "_TauJetScoreTrans_1p", -1));
171 monitoredIdVariables.emplace(key + "_TauJetScore_mp", Monitored::Scalar<float>(key + "_TauJetScore_mp", -1));
172 monitoredIdVariables.emplace(key + "_TauJetScoreTrans_mp", Monitored::Scalar<float>(key + "_TauJetScoreTrans_mp", -1));
173 }
174
175 std::vector<std::reference_wrapper<Monitored::IMonitoredVariable>> monVars = {
176 std::ref(n_taus),
177 std::ref(pT), std::ref(
eta), std::ref(
phi),
178 std::ref(etaRoI), std::ref(phiRoI), std::ref(dEta_RoI), std::ref(dPhi_RoI),
179 std::ref(mEflowApprox), std::ref(ptRatioEflowApprox), std::ref(pt_jetseed_log),
180 std::ref(etaDetectorAxis), std::ref(ptDetectorAxis), std::ref(ptDetectorAxis_log),
181 std::ref(n_cells),
182 std::ref(EMRadius), std::ref(HadRadius), std::ref(EtHad), std::ref(EtEm), std::ref(EMFrac), std::ref(IsoFrac), std::ref(CentFrac),
183 std::ref(clustersMeanCenterLambda), std::ref(clustersMeanFirstEngDens), std::ref(clustersMeanEMProbability),
184 std::ref(clustersMeanSecondLambda), std::ref(clustersMeanPresamplerFrac),
185 std::ref(n_clusters), std::ref(mon_cluster_et_log), std::ref(mon_cluster_dEta), std::ref(mon_cluster_dPhi),
186 std::ref(mon_cluster_log_SECOND_R), std::ref(mon_cluster_SECOND_LAMBDA), std::ref(mon_cluster_CENTER_LAMBDA),
187 std::ref(mon_calo_errors),
188 std::ref(n_tracks), std::ref(n_iso_tracks),
189 std::ref(ipSigLeadTrk), std::ref(trFlightPathSig), std::ref(massTrkSys), std::ref(dRmax), std::ref(trkAvgDist), std::ref(innerTrkAvgDist),
190 std::ref(etovPtLead), std::ref(PSSFraction), std::ref(EMPOverTrkSysP), std::ref(ChPiEMEOverCaloEME),
191 std::ref(vertex_x), std::ref(vertex_y), std::ref(vertex_z),
192 std::ref(n_all_tracks), std::ref(mon_track_pt_log), std::ref(mon_track_dEta), std::ref(mon_track_dPhi),
193 std::ref(mon_track_d0_abs_log), std::ref(mon_track_z0sinthetaTJVA_abs_log),
194 std::ref(mon_track_nPixelHitsPlusDeadSensors), std::ref(mon_track_nSCTHitsPlusDeadSensors),
195 std::ref(mon_track_errors)
196 };
197 for(auto& [key, var] : monitoredIdVariables) monVars.push_back(std::ref(var));
198 auto monitorIt = Monitored::Group(
m_monTool, monVars);
199
200
202
203
204
205
207
208
209
210
211
215 return StatusCode::FAILURE;
216 }
217
218 if(roisHandle->empty()) {
220 return StatusCode::FAILURE;
221 }
222
224 if(roiDescriptor) {
226 } else {
229 return StatusCode::FAILURE;
230 }
231
232
233
234
235
236
237
238 std::unique_ptr<xAOD::TauJetContainer> outputContainer = std::make_unique<xAOD::TauJetContainer>();
239 std::unique_ptr<xAOD::TauJetAuxContainer> outputAuxContainer = std::make_unique<xAOD::TauJetAuxContainer>();
240 outputContainer->setStore(outputAuxContainer.get());
241
243 ATH_CHECK(outputTauHandle.record(std::move(outputContainer), std::move(outputAuxContainer)));
244
245
246 std::unique_ptr<xAOD::TauTrackContainer> outputTrackContainer = std::make_unique<xAOD::TauTrackContainer>();
247 std::unique_ptr<xAOD::TauTrackAuxContainer> outputTrackAuxContainer = std::make_unique<xAOD::TauTrackAuxContainer>();
248 outputTrackContainer->setStore(outputTrackAuxContainer.get());
249
251 ATH_CHECK(tauTrackHandle.record(std::move(outputTrackContainer), std::move(outputTrackAuxContainer)));
252
253
254
255
256
257
258
259
260
261
262
263
265
268
270 if(RoICaloClusterContainer) {
271 ATH_MSG_DEBUG(
"CaloCluster container found of size: " << RoICaloClusterContainer->
size());
272
273
275 } else {
278 return StatusCode::FAILURE;
279 }
280
281
282 std::unique_ptr<xAOD::JetContainer> jetContainer{std::make_unique<xAOD::JetContainer>()};
283 std::unique_ptr<xAOD::JetAuxContainer> jetAuxContainer{std::make_unique<xAOD::JetAuxContainer>()};
284 jetContainer->setStore(jetAuxContainer.get());
285
287 ATH_CHECK(outputTauSeedJetHandle.
record(std::move(jetContainer), std::move(jetAuxContainer)));
288
289
290 outputTauSeedJetHandle->push_back(std::make_unique<xAOD::Jet>());
291 xAOD::Jet *jet = outputTauSeedJetHandle->back();
292
293
294
295
296
298 TLorentzVector cluster_p4, barycenter;
300 ATH_MSG_DEBUG(
"Cluster (e, eta, phi): (" << cluster->e() <<
", " << cluster->eta() <<
", " << cluster->phi() <<
")");
301
302 if(cluster->e() < 0) {
304 continue;
305 }
306
307 cluster_p4.SetPtEtaPhiE(cluster->pt(), cluster->eta(), cluster->phi(), cluster->e());
309
310 barycenter += cluster_p4;
311 }
312
314 ATH_MSG_DEBUG(
"Built jet with eta: " << jet->
eta() <<
", phi: " << jet->
phi() <<
", pT: " << jet->
pt() <<
", E: "<< jet->
e() );
315
316
317
318
319 outputTauHandle->push_back(std::make_unique<xAOD::TauJet>());
320 tau = outputTauHandle->back();
322
323
324 tau->
setJet(outputTauSeedJetHandle.
ptr(), jet);
325
326
328 ATH_MSG_DEBUG(
"Changing (eta, phi) back to the RoI center due to negative energy: " << jet->
e());
329 tau->
setP4(tau->
pt(), roiDescriptor->
eta(), roiDescriptor->
phi(), tau->
m());
331 }
332 }
333
334
335
336
337
339
341 SG::ReadHandle<xAOD::TauJetContainer> tauInputHandle(
m_tauJetInputKey, ctx);
344
345
347 }
348
349
354
355
357 }
358
359
360
361 if(!outputTauHandle->empty()) {
362 tau = outputTauHandle->back();
363
364
366
367
368
369
371 }
372 }
373
374
375
376
377
381
382 if(!VertexContainerHandle.
isValid()) {
383 ATH_MSG_DEBUG(
"No VertexContainer retrieved for the trigger element");
385 } else {
386 RoIVxContainer = VertexContainerHandle.
get();
388 }
389 }
390
391
393
394
395
396
397
398 StatusCode processStatus = StatusCode::SUCCESS;
399
400
401
404
405 processStatus =
tool->executeVertexFinder(*tau, RoIVxContainer);
406
407 if(!processStatus.isFailure()) {
409 } else {
411 break;
412 }
413 }
414
417 else break;
418
419 processStatus =
tool->execute(*tau);
420
421 if(!processStatus.isFailure()) {
423 } else {
425 break;
426 }
427 }
428
431 else break;
432
433 processStatus =
tool->executeTrackFinder(*tau, *tauTrackHandle);
434
435 if(!processStatus.isFailure()) {
437 } else {
439 break;
440 }
441 }
442
445 else break;
446
447 processStatus =
tool->execute(*tau);
448
449 if(!processStatus.isFailure()) {
451 } else {
453 break;
454 }
455 }
456
457
461 else break;
462
463 processStatus =
tool->executeVertexVariables(*tau, dummyVxCont);
464
465 if(!processStatus.isFailure()) {
467 } else {
469 break;
470 }
471 }
472
475 else break;
476
477 processStatus =
tool->execute(*tau);
478
479 if(!processStatus.isFailure()) {
481 } else {
483 break;
484 }
485 }
486
488
489
490
491 if(!processStatus.isSuccess()) {
492 ATH_MSG_DEBUG(
"The tau object has NOT been registered in the tau container");
493
496 tauTrackHandle->erase(tauTrackHandle->end() - bad_tau->
nAllTracks(), tauTrackHandle->end());
497
498 outputTauHandle->pop_back();
499
501
502 } else {
503
504
505 float fJetEnergy = (*tau->
jetLink())->e();
507
508 if(fJetEnergy < 0.00001) {
509 ATH_MSG_DEBUG(
"Changing tau's (eta,phi) to RoI ones due to negative energy (PxPyPzE flips eta and phi)");
510 ATH_MSG_DEBUG(
"This is probably not needed anymore, method PxPyPzE has been corrected");
511
512
513 tau->
setP4(tau->
pt(), roiDescriptor->
eta(), roiDescriptor->
phi(), tau->
m());
514
515 ATH_MSG_DEBUG(
"Roi: " << roiDescriptor->
roiId() <<
", Tau eta: " << tau->
eta() <<
", phi: " << tau->
phi() <<
", pT: " << tau->
pt());
516 }
517
518
519
520
521
522
523 pT = tau->
pt()/Gaudi::Units::GeV;
526
527
528 etaRoI = roiDescriptor->
eta();
529 phiRoI = roiDescriptor->
phi();
530 dEta_RoI =
eta - roiDescriptor->
eta();
531 dPhi_RoI =
phi - roiDescriptor->
phi();
532 if(dPhi_RoI < -
M_PI) dPhi_RoI += 2.0*
M_PI;
533 if(dPhi_RoI >
M_PI) dPhi_RoI -= 2.0*
M_PI;
534
535
536 float pre_mEflowApprox;
538 mEflowApprox = std::log10(std::max(pre_mEflowApprox, 140.0f));
539
540 float pre_ptRatioEflowApprox;
543
547 ptDetectorAxis_log = std::log10(std::min(tau->
ptDetectorAxis()/Gaudi::Units::GeV, 10000.0));
548
549
554 EtHad /= Gaudi::Units::GeV;
556 EtEm /= Gaudi::Units::GeV;
557
558 float Et_raw = EtEm + EtHad;
559 if(Et_raw != 0) EMFrac = EtEm / Et_raw;
560
563
564
565
568 if(test) clustersMeanCenterLambda =
tmp;
570 if(test) clustersMeanFirstEngDens =
tmp;
572 if(test) clustersMeanEMProbability =
tmp;
574 if(test) clustersMeanSecondLambda =
tmp;
576 if(test) clustersMeanPresamplerFrac =
tmp;
577
578
579
580 n_clusters = tau->
clusters().size();
581 for(
const auto& cluster : tau->
clusters()) {
583
584 cluster_et_log.push_back(std::log10(
cls->et()));
585 cluster_dEta.push_back(
cls->eta() - tau->
eta());
586 cluster_dPhi.push_back(
cls->p4().DeltaPhi(tau->
p4()));
587
588 double log_second_R = -999;
590 if(success_SECOND_R) log_second_R = std::log10(log_second_R + 0.1);
591 cluster_log_SECOND_R.push_back(log_second_R);
592
593 double second_lambda = -999;
595 if(success_SECOND_LAMBDA) second_lambda = std::log10(second_lambda + 0.1);
596 cluster_SECOND_LAMBDA.push_back(second_lambda);
597
598 double center_lambda = -999;
600 if(success_CENTER_LAMBDA) center_lambda = std::log10(center_lambda + 1e-6);
601 cluster_CENTER_LAMBDA.push_back(center_lambda);
602 }
603
604
605
620
625 }
626
627
628
631 track_pt_log.push_back(std::log10(
track->pt()));
632 track_dEta.push_back(
track->eta() - tau->
eta());
633 track_dPhi.push_back(
track->p4().DeltaPhi(tau->
p4()));
634 track_d0_abs_log.push_back(std::log10(std::abs(
track->track()->d0()) + 1e-6));
635 track_z0sinthetaTJVA_abs_log.push_back(
track->z0sinthetaTJVA());
636
637 uint8_t pixel_hits, pixel_dead;
640 float nPixelHitsPlusDeadSensor = -999;
641 if(success1_pixel_hits && success2_pixel_dead) nPixelHitsPlusDeadSensor = pixel_hits + pixel_dead;
642 track_nPixelHitsPlusDeadSensors.push_back(nPixelHitsPlusDeadSensor);
643
649 track_nSCTHitsPlusDeadSensors.push_back(nSCTHitsPlusDeadSensors);
650 }
651
652
653
655 if(
p.first.isAvailable(*tau)) {
657 monitoredIdVariables.at(key +
"_TauJetScore_0p") =
p.first(*tau);
658 }
else if(tau->
nTracks() == 1) {
659 monitoredIdVariables.at(key +
"_TauJetScore_1p") =
p.first(*tau);
660 } else {
661 monitoredIdVariables.at(key +
"_TauJetScore_mp") =
p.first(*tau);
662 }
663 }
664
665 if(
p.second.isAvailable(*tau)) {
667 monitoredIdVariables.at(key +
"_TauJetScoreTrans_0p") =
p.second(*tau);
668 }
else if(tau->
nTracks() == 1) {
669 monitoredIdVariables.at(key +
"_TauJetScoreTrans_1p") =
p.second(*tau);
670 } else {
671 monitoredIdVariables.at(key +
"_TauJetScoreTrans_mp") =
p.second(*tau);
672 }
673 }
674 }
675
676
677 ++n_taus;
678
679
681 <<
", Tau pT (GeV): " << pT <<
", Tau eta: " <<
eta <<
", Tau phi: " <<
phi
682 << ", wrt RoI dEta: " << dEta_RoI << ", dPhi: " << dPhi_RoI);
683 }
684
685
686
687
688
689 ATH_MSG_DEBUG(
"Output TauJetContainer size: " << outputTauHandle->size());
690 ATH_MSG_DEBUG(
"Output TauJetTrackContainer size: " << tauTrackHandle->size());
691
692 return StatusCode::SUCCESS;
693}
Scalar eta() const
pseudorapidity method
Scalar phi() const
phi method
#define ATH_CHECK
Evaluate an expression and check for errors.
Athena::TPCnvVers::Current TrigRoiDescriptor
size_type size() const noexcept
Returns the number of elements in the collection.
bool empty() const noexcept
Returns true if the collection is empty.
bool isValid() const
Test to see if the link can be dereferenced.
virtual double phi() const override final
Methods to retrieve data members.
virtual double eta() const override final
virtual bool isValid() override final
Can the handle be successfully dereferenced?
const_pointer_type get() const
Dereference the pointer, but don't cache anything.
StatusCode record(std::unique_ptr< T > data)
Record a const object to the store.
pointer_type ptr()
Dereference the pointer.
virtual unsigned int roiWord() const override final
virtual unsigned int roiId() const override final
these quantities probably don't need to be used any more
const ToolHandleArray< ITauToolBase > m_idTools
StatusCode deepCopy(SG::WriteHandle< DataVector< V > > &writeHandle, const DataVector< V > *oldContainer) const
const ToolHandleArray< ITauToolBase > m_commonTools
const ToolHandle< GenericMonitoringTool > m_monTool
SG::WriteHandleKey< xAOD::TauJetContainer > m_tauJetOutputKey
bool doCaloReconstruction() const
SG::WriteHandleKey< xAOD::TauTrackContainer > m_tauTrackOutputKey
const ToolHandleArray< ITauToolBase > m_commonToolsBeforeTF
SG::ReadHandleKey< xAOD::TauTrackContainer > m_tauTrackInputKey
SG::WriteHandleKey< xAOD::JetContainer > m_tauSeedOutputKey
SG::ReadHandleKey< xAOD::VertexContainer > m_vertexInputKey
const ToolHandleArray< ITauToolBase > m_vertexFinderTools
const ToolHandleArray< ITauToolBase > m_trackFinderTools
const ToolHandleArray< ITauToolBase > m_vertexVarsTools
Gaudi::Property< std::map< std::string, std::pair< std::string, std::string > > > m_monitoredIdScores
SG::ReadHandleKey< TrigRoiDescriptorCollection > m_roiInputKey
std::map< std::string, std::pair< SG::ConstAccessor< float >, SG::ConstAccessor< float > > > m_monitoredIdAccessors
@ SECOND_LAMBDA
Second Moment in .
@ SECOND_R
Second Moment in .
@ CENTER_LAMBDA
Shower depth at Cluster Centroid.
virtual double phi() const
The azimuthal angle ( ) of the particle.
void addConstituent(const ElementLink< IParticleContainer > &link, float weight=1.0)
Add a constituent directly in the ElementLink format.
void setJetP4(const JetFourMom_t &p4)
void setConstituentsSignalState(JetConstitScale t)
Set the state at which constituents were when this jet was found. This function is called by jet buil...
virtual double pt() const
The transverse momentum ( ) of the particle.
virtual double eta() const
The pseudorapidity ( ) of the particle.
virtual double e() const
The total energy of the particle.
virtual double phi() const
The azimuthal angle ( ) of the particle.
void setROIWord(unsigned int)
void clearTauTrackLinks()
Remove all tracks from the tau.
unsigned int ROIWord() const
the ROIWord, in case TauJet is used in EF trigger
double ptDetectorAxis() const
virtual FourMom_t p4() const
The full 4-momentum of the particle.
virtual double pt() const
The transverse momentum ( ) of the particle.
double etaDetectorAxis() const
const VertexLink_t & vertexLink() const
const JetLink_t & jetLink() const
void setJet(const xAOD::JetContainer *cont, const xAOD::Jet *jet)
bool detail(TauJetParameters::Detail detail, int &value) const
Get and set values of common details variables via enum.
const TauTrack * track(size_t i, TauJetParameters::TauTrackFlag flag=TauJetParameters::TauTrackFlag::classifiedCharged, int *container_index=0) const
Get the pointer to a given tauTrack associated with this tau /*container index needed by trackNonCons...
const Vertex * vertex() const
void setP4(double pt, double eta, double phi, double m)
Set methods for IParticle values.
std::vector< const IParticle * > clusters() const
size_t nTracksIsolation() const
virtual double m() const
The invariant mass of the particle.
size_t nAllTracks() const
std::vector< const TauTrack * > allTracks() const
Get the v<const pointer> to all tracks associated with this tau, regardless of classification.
virtual double eta() const
The pseudorapidity ( ) of the particle.
size_t nTracks(TauJetParameters::TauTrackFlag flag=TauJetParameters::TauTrackFlag::classifiedCharged) const
float z() const
Returns the z position.
float y() const
Returns the y position.
VxType::VertexType vertexType() const
The type of the vertex.
float x() const
Returns the x position.
@ nSCTHitsPlusDeadSensors
::StatusCode StatusCode
StatusCode definition for legacy code.
ValuesCollection< T > Collection(std::string name, const T &collection)
Declare a monitored (double-convertible) collection.
SG::ReadCondHandle< T > makeHandle(const SG::ReadCondHandleKey< T > &key, const EventContext &ctx=Gaudi::Hive::currentContext())
bool pt_jetseed_log(const xAOD::TauJet &tau, const xAOD::CaloVertexedTopoCluster &, float &out)
bool ptDetectorAxis(const xAOD::TauJet &tau, float &out)
@ hadRadius
Get hadron calorimeter radius.
@ EMRadius
Get E_T radius.
@ etHadAtEMScale
Get Hadronic energy at EM scale.
@ isolFrac
Get isolation fraction.
@ ClustersMeanEMProbability
@ ClustersMeanSecondLambda
@ ClustersMeanFirstEngDens
@ trkAvgDist
Get calibrated EM transverse energy (DEPRECATED since r19)
@ ClustersMeanPresamplerFrac
@ etEMAtEMScale
Get EM energy at EM scale.
@ centFrac
Get centrality fraction.
@ ClustersMeanCenterLambda
@ dRmax
Get maximal dR of tracks associated to calo-seeded tau.
@ NoVtx
Dummy vertex. TrackParticle was not used in vertex fit.
Jet_v1 Jet
Definition of the current "jet version".
CaloCluster_v1 CaloCluster
Define the latest version of the calorimeter cluster class.
VertexContainer_v1 VertexContainer
Definition of the current "Vertex container version".
TauTrack_v1 TauTrack
Definition of the current version.
TauJet_v3 TauJet
Definition of the current "tau version".
TauTrackContainer_v1 TauTrackContainer
Definition of the current TauTrack container version.
CaloClusterContainer_v1 CaloClusterContainer
Define the latest version of the calorimeter cluster container.
TauJetContainer_v3 TauJetContainer
Definition of the current "taujet container version".
@ numberOfSCTDeadSensors
number of dead SCT sensors crossed [unit8_t].
@ numberOfSCTHits
number of hits in SCT [unit8_t].
@ numberOfPixelHits
these are the pixel hits, including the b-layer [unit8_t].
@ numberOfPixelDeadSensors
number of dead pixel sensors crossed [unit8_t].
@ CalibratedJetConstituent
ROOT::Math::LorentzVector< ROOT::Math::PtEtaPhiM4D< double > > JetFourMom_t
Base 4 Momentum type for Jet.