ATLAS Offline Software
Loading...
Searching...
No Matches
TauJet.cxx
Go to the documentation of this file.
1/*
2 Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration
3*/
4
21
22
23#include "VxVertex/RecVertex.h"
24#include "tauEvent/TauJet.h"
25#include "tauEvent/TauDetails.h"
33#include <algorithm> //for remove_if
34#include <any>
35
36
37
38namespace Analysis
39{
40 // Default constructor - for persistency
41 TauJet :: TauJet():
43 INavigable (),
44 I4Momentum (),
47 m_author(TauJetParameters :: unknown),
49 m_tauID(0),
50 m_roiWord(0),
52 {
53
54
55 }
56
57 // Constructor with author
58 TauJet :: TauJet(TauJetParameters :: Author author):
60 INavigable (),
61 I4Momentum (),
66 m_tauID(0),
67 m_roiWord(0),
69 {
70
71 }
72
73 // Copy constructor
74 TauJet :: TauJet(const TauJet &rhs):
75 IAthenaBarCode(rhs),
76 INavigable (rhs),
77 I4Momentum (rhs),
79 TauJetImpl_t(rhs),
80 m_tracks(rhs.m_tracks),
87 m_jet(rhs.m_jet),
88 m_author(rhs.m_author),
90 m_tauID(0),
94 {
95 if(rhs.m_tauID) {
96 m_tauID = new TauPID(*rhs.m_tauID);
97 }
98
99 }
100
101 // Assignment operator
102 TauJet &TauJet :: operator =(const TauJet &rhs)
103 {
104 if(this != &rhs) {
105 IAthenaBarCode::operator=(rhs);
106 INavigable::operator=(rhs);
107 I4Momentum::operator=(rhs);
108 INavigable4Momentum::operator=(rhs);
110 m_tracks=rhs.m_tracks;
117 m_jet=rhs.m_jet;
118 m_author=rhs.m_author;
120 if(rhs.m_tauID) {
121 delete m_tauID;
122 m_tauID = new TauPID(*rhs.m_tauID);
123 }
127 }
128 return *this;
129 }
130
131 // Equality operator
132 bool TauJet::operator==( const TauJet& rhs ) const
133 {
134 if (m_tracks!=rhs.m_tracks) return false;
135 if (m_conversionTracks!=rhs.m_conversionTracks) return false;
136 if (m_seedCalo_tracks!=rhs.m_seedCalo_tracks) return false;
137 if (m_seedTrk_tracks!=rhs.m_seedTrk_tracks) return false;
138 if (m_tauDetails!=rhs.m_tauDetails) return false;
139 if (m_cluster!=rhs.m_cluster) return false;
140 if (m_cellCluster!=rhs.m_cellCluster) return false;
141 if (m_jet!=rhs.m_jet) return false;
142 if (m_author!=rhs.m_author) return false;
143 if (m_numberOfTracks!=rhs.m_numberOfTracks) return false;
144 //Compare if pointers are valid
145 if ( (m_tauID!=0) && (rhs.m_tauID!=0) ) {
146 if ((*m_tauID) != (*rhs.m_tauID)) return false;
147 } else if ( ( (m_tauID!=0) && (rhs.m_tauID==0) ) ||
148 ( (m_tauID==0) && (rhs.m_tauID!=0) ) )
149 {
150 //false if only one of the pointers is set
151 return false;
152 }
153 if (m_roiWord!=rhs.m_roiWord) return false;
155
156 //ToDo:: cmp for tauHLVStorage
157
158 return true;
159 }
160
161 // Destructor
162 TauJet :: ~TauJet()
163 {
164 delete m_tauID; m_tauID = 0;
165 }
166
167 std::string TauJet::toString() const
168 {
169 std::stringstream s;
170 printOn(s);
171 return s.str();
172 }
173
175 TauDetailsContainer* tauDetailsContainer,
176 TauDetailsContainer* tauExtraDetailsContainer)
177 {
178 //Skip merge if merge allready called
180 return;
181 }
182 else {
184 }
185
186 //Copy old details to new common details
187 TauCommonDetails* tauCommonDetails=0;
188 const Tau1P3PDetails* tau1P3PDetails =
190 const TauRecDetails* tauRecDetails =
192 //Check that we have a details container
193 if ( tauDetailsContainer != 0 ) {
194 //Check that we have at least one detail
195 if( (tau1P3PDetails != 0) || (tauRecDetails != 0) ) {
196 //Create new common details
197 tauCommonDetails=new TauCommonDetails();
198 CopyToCommonDetails(tau1P3PDetails,tauCommonDetails);
199 CopyToCommonDetails(tauRecDetails,tauCommonDetails);
200 }
201 }
202
203 //Copy old extra details to new common extra details
204 TauCommonExtraDetails* tauCommonExtraDetails = 0;
205 const Tau1P3PExtraDetails* tau1P3PExtraDetails =
207 const TauRecExtraDetails* tauRecExtraDetails =
209 //Check that we have an extra details container
210 if (tauExtraDetailsContainer!=0) {
211 //Check that we have at least one extra detail
212 if( ( tau1P3PExtraDetails != 0) || (tauRecExtraDetails != 0)) {
213 //Create new common extra details
214 tauCommonExtraDetails=new TauCommonExtraDetails();
215 CopyToCommonDetails(tau1P3PExtraDetails,tauCommonExtraDetails);
216 CopyToCommonDetails(tauRecExtraDetails,tauCommonExtraDetails);
217 }
218 }
219
220 //Delete all existing details links
221 m_tauDetails.erase(m_tauDetails.begin(), m_tauDetails.end());
222
223 //Add new details (if there is a container and a detail)
224 if( (tauDetailsContainer!=0) && (tauCommonDetails!=0)) {
225 tauDetailsContainer->push_back(tauCommonDetails);
226 addDetails(tauDetailsContainer,tauCommonDetails);
227 }
228
229 //Add new extra details (if there is a container and a detail)
230 if((tauExtraDetailsContainer!=0) && (tauCommonExtraDetails!=0)) {
231 tauExtraDetailsContainer->push_back(tauCommonExtraDetails);
232 addDetails(tauExtraDetailsContainer,tauCommonExtraDetails);
233 }
234 }
235
236 // Fill navigation token
237 void TauJet :: fillToken(INavigationToken &token) const
238 {
239 // Check if one requested for tracks
241 dynamic_cast<NavigationToken<Rec::TrackParticle>*>(&token);
242 if(trackToken) {
243 for(unsigned int i = 0; i <= numTrack(); ++i) {
244 const Rec::TrackParticle *track = this->track(i);
245 if(track)
246 trackToken->setObject(track);
247 }
248 return;
249 }
250 // Check if one requested for tracks with alternative token
252 dynamic_cast<NavigationToken<Rec::TrackParticle,double>*>(&token);
253 if(altTrackToken) {
254 for(unsigned int i = 0; i <= numTrack(); ++i) {
255 const Rec::TrackParticle *track = this->track(i);
256 if(track)
257 altTrackToken->setObject(track);
258 }
259 return;
260 }
261
262 // Check if one requested for Jet
263 NavigationToken<Jet> *jetToken =
264 dynamic_cast<NavigationToken<Jet>*>(&token);
265 const Jet *jet = this->jet();
266 if(jetToken) {
267 if(jet != 0)
268 jetToken->setObject(jet);
269 return;
270 }
271 // Check if one requested for Jet with alternative token
272 NavigationToken<Jet, double> *altJetToken =
273 dynamic_cast< NavigationToken<Jet, double>* >(&token);
274 if(altJetToken != 0) {
275 if(jet != 0)
276 altJetToken->setObject(jet);
277 return;
278 }
279 // The token is not supported by this object, passing token
280 // to composite consitutents
281 if(jet)
282 jet->fillToken(token);
283
284 // Try for generic type requests
285 for(unsigned int i = 0; i <= this->numTrack(); ++i) {
286 const Rec::TrackParticle *track = this->track(i);
287 if(track)
288 token.trySetObject(track);
289 }
290 }
291
292 // Fill navigation token
293 void TauJet :: fillToken(INavigationToken &token,
294 const std::any &weight) const
295 {
296 // Check if one requested for tracks
298 dynamic_cast<NavigationToken<Rec::TrackParticle>*>(&token);
299 if(trackToken) {
300 for(unsigned int i = 0; i <= numTrack(); ++i) {
301 const Rec::TrackParticle *track = this->track(i);
302 if(track)
303 trackToken->setObject(track);
304 }
305 return;
306 }
307 // Check if one requested for tracks with alternative token
309 dynamic_cast<NavigationToken<Rec::TrackParticle,double>*>(&token);
310 if(altTrackToken) {
311 for(unsigned int i = 0; i <= numTrack(); ++i) {
312 const Rec::TrackParticle *track = this->track(i);
313 if(track)
314 altTrackToken->setObject(
315 track, std::any_cast<double>(weight));
316 }
317 return;
318 }
319
320 NavigationToken<Jet> *jetToken =
321 dynamic_cast<NavigationToken<Jet>*>(&token);
322 const Jet *jet = this->jet();
323 if(jetToken) {
324 if(jet != 0)
325 jetToken->setObject(jet);
326 return;
327 }
328 // Check if one requested for Jet with alternative token
329 NavigationToken<Jet, double> *altJetToken =
330 dynamic_cast< NavigationToken<Jet, double>* >(&token);
331 if(altJetToken != 0) {
332 if(jet != 0)
333 altJetToken->setObject(
334 jet, std::any_cast<double>(weight));
335 return;
336 }
337 // The token is not supported by this object, passing token
338 // to composite consitutents
339 if(jet)
340 jet->fillToken(token);
341
342 // Try for generic type requests
343 for(unsigned int i = 0; i <= this->numTrack(); ++i) {
344 const Rec::TrackParticle *track = this->track(i);
345 if(track)
346 token.trySetObject(track, weight);
347 }
348 }
349
350 // Parameter accessor for analysis code compatibility
351 double TauJet :: parameter(TauJetParameters :: Detail) const
352 {
353 return TauDetails::DEFAULT;
354 }
355
357 {
358 if(i >= 0 && i <(int)m_tauDetails.size())
359 m_tauDetails.erase(m_tauDetails.begin() + i);
360 return;
361 }
362
364 const std::string &name, const std::string& className /*= ""*/ )
365 {
367 = m_tauDetails.begin();
368 while(iter != m_tauDetails.end()) {
369 const unsigned int i = iter - m_tauDetails.begin();
370 const TauDetails* detail = *m_tauDetails[i];
371 if(m_tauDetails.elementDataID(i) == name
372 &&(className.empty() || detail->className() == className))
373 iter = m_tauDetails.erase(iter);
374 else ++iter;
375 }
376 return;
377 }
378
379 const TauDetails* TauJet::detail(const std::string& className,
380 const std::string& name /*= ""*/)const
381 {
382 size_t n = m_tauDetails.size();
383 for(size_t i = 0; i < n; i++) {
384 const TauDetails* detail = *m_tauDetails[i];
385 if(detail->className() == className &&
386 (name.empty() || m_tauDetails.elementDataID(i) == name))
387 return detail;
388 }
389 return 0;
390 }
391
392 const TauDetails* TauJet::detail(int i) const
393 {
394 if(i >= 0 && i <(int)m_tauDetails.size())
395 return *m_tauDetails[i];
396 return 0;
397 }
398
401 {
402 if(i >= 0 && i <(int)m_tauDetails.size())
403 return m_tauDetails[i];
405 }
406
407 std::string TauJet::detailName(int i) const
408 {
409 if(i >= 0 && i <(int)m_tauDetails.size())
410 return m_tauDetails.elementDataID(i);
411 return "";
412 }
413
415 {
416 return m_tauDetails.size();
417 }
418
420 {
421 //remove invalid details
422 //sroe:I couldn't work out the type here, so use an 'auto' argument
423 auto isInvalid = [](const auto t){return not t.isValid();};
424 auto validEnd = std::remove_if(m_tauDetails.begin(), m_tauDetails.end(), isInvalid);
425 m_tauDetails.erase(validEnd, m_tauDetails.end());
426 //
427 //remove nullptrs before next step
428 auto goodPointerEnd = std::remove(m_tauDetails.begin(), m_tauDetails.end(), nullptr);
429 m_tauDetails.erase(goodPointerEnd, m_tauDetails.end());
430 //remove pointers which cast to details
431 auto castsToDetail = [](const auto t){
432 const TauDetails* detail = * t;
433 auto isNull = (detail == nullptr);
434 auto castToCommon = dynamic_cast<const TauCommonExtraDetails*>(detail);
435 auto castToRec = dynamic_cast<const TauRecExtraDetails*>(detail);
436 auto castTo1P3P = dynamic_cast<const Tau1P3PExtraDetails*>(detail);
437 //rely on pointer to bool conversion
438 return (isNull or castToCommon or castToRec or castTo1P3P);
439 };
440 auto detailPointerEnd = std::remove_if(m_tauDetails.begin(), m_tauDetails.end(), castsToDetail);
441 m_tauDetails.erase(detailPointerEnd, m_tauDetails.end());
442 }
443
445 const Tau1P3PDetails *tau1P3PDetails,
446 TauCommonDetails *tauCommonDetails)
447 {
448 if((tau1P3PDetails==0) ||(tauCommonDetails==0)) return;
449 tauCommonDetails->m_ipZ0SinThetaSigLeadTrk =
450 tau1P3PDetails->m_z0SinThetaSig;
451 tauCommonDetails->m_ipSigLeadTrk = tau1P3PDetails->m_signD0Trk3P;
452 tauCommonDetails->m_massTrkSys = tau1P3PDetails->m_massTrk3P;
453 tauCommonDetails->m_trkWidth2 = tau1P3PDetails->m_rWidth2Trk3P;
454 tauCommonDetails->m_trFlightPathSig =
455 tau1P3PDetails->m_trFlightPathSig;
456 tauCommonDetails->m_etEflow = tau1P3PDetails->m_etEflow;
457 tauCommonDetails->m_seedTrk_nStrip = tau1P3PDetails->m_numStripCells;
458 tauCommonDetails->m_seedTrk_stripWidth2 =
459 tau1P3PDetails->m_stripWidth2;
460 tauCommonDetails->m_seedTrk_EMRadius = tau1P3PDetails->m_emRadius;
461 tauCommonDetails->m_seedTrk_isolFrac = tau1P3PDetails->m_ET12Frac;
462 tauCommonDetails->m_seedTrk_etIsolHad = tau1P3PDetails->m_etIsolHAD;
463 tauCommonDetails->m_seedTrk_etIsolEM = tau1P3PDetails->m_etIsolEM;
464 tauCommonDetails->m_seedTrk_etChrgHad = tau1P3PDetails->m_etChrgHAD;
465 tauCommonDetails->m_seedTrk_nOtherCoreTrk =
466 tau1P3PDetails->m_nAssocTracksCore;
467 tauCommonDetails->m_seedTrk_nIsolTrk =
468 tau1P3PDetails->m_nAssocTracksIsol;
469 tauCommonDetails->m_seedTrk_etChrgHadOverSumTrkPt =
470 tau1P3PDetails->m_etChrgHADoverPttot;
471 tauCommonDetails->m_seedTrk_isolFracWide =
472 tau1P3PDetails->m_etIsolFrac;
473 tauCommonDetails->m_seedTrk_etHadAtEMScale =
474 tau1P3PDetails->m_etHadAtEMScale;
475 tauCommonDetails->m_seedTrk_etEMAtEMScale =
476 tau1P3PDetails->m_etEMAtEMScale;
477 tauCommonDetails->m_seedTrk_etEMCL = tau1P3PDetails->m_etEMCL;
478 tauCommonDetails->m_seedTrk_etChrgEM = tau1P3PDetails->m_etChrgEM;
479 tauCommonDetails->m_seedTrk_etNeuEM = tau1P3PDetails->m_etNeuEM;
480 tauCommonDetails->m_seedTrk_etResNeuEM = tau1P3PDetails->m_etResNeuEM;
481 tauCommonDetails->m_seedTrk_sumEMCellEtOverLeadTrkPt =
482 tau1P3PDetails->m_sumEtCellsLArOverLeadTrackPt;
483 tauCommonDetails->m_seedTrk_hadLeakEt =
484 tau1P3PDetails->m_hadronicLeak;
485 tauCommonDetails->m_seedTrk_secMaxStripEt =
486 tau1P3PDetails->m_secondaryMax;
487
488 tauCommonDetails->m_cellEM012Cluster=tau1P3PDetails->m_cellEM012Cluster;
489 tauCommonDetails->m_sumPi0Vec=tau1P3PDetails->m_sumEM;
490 if(tau1P3PDetails->m_secVertex) {
491 delete tauCommonDetails->m_secVtx;
492 tauCommonDetails->m_secVtx=new Trk::RecVertex(
493 *(tau1P3PDetails->m_secVertex));
494 }
495 tauCommonDetails->m_pi0=tau1P3PDetails->m_pi0;
496 tauCommonDetails->m_seedTrk_etChrgEM01Trk=
497 tau1P3PDetails->m_etChrgEM01Trk;
498 tauCommonDetails->m_seedTrk_etResChrgEMTrk=
499 tau1P3PDetails->m_etResChrgEMTrk;
500 }
501
503 const TauRecDetails *tauRecDetails,
504 TauCommonDetails *tauCommonDetails)
505 {
506 if((tauRecDetails==0) ||(tauCommonDetails==0)) return;
507
508 tauCommonDetails->m_ipSigLeadLooseTrk =
509 tauRecDetails->m_ipSigLeadTrack;
510 tauCommonDetails->m_etOverPtLeadLooseTrk =
511 tauRecDetails->m_etOverPtLeadTrack;
512 tauCommonDetails->m_leadLooseTrkPt =
513 tauRecDetails->m_leadingTrackPT;
514 tauCommonDetails->m_chrgLooseTrk =
515 tauRecDetails->m_chargeLooseTracks;
516 tauCommonDetails->m_seedCalo_nIsolLooseTrk =
517 tauRecDetails->m_nTracksdrdR;
518 tauCommonDetails->m_seedCalo_EMRadius = tauRecDetails->m_emRadius;
519 tauCommonDetails->m_seedCalo_hadRadius = tauRecDetails->m_hadRadius;
520 tauCommonDetails->m_seedCalo_etEMAtEMScale =
521 tauRecDetails->m_sumEmCellEt;
522 tauCommonDetails->m_seedCalo_etHadAtEMScale =
523 tauRecDetails->m_sumHadCellEt;
524 tauCommonDetails->m_seedCalo_isolFrac = tauRecDetails->m_ET12Frac;
525 tauCommonDetails->m_seedCalo_centFrac =
526 tauRecDetails->m_centralityFraction;
527 tauCommonDetails->m_seedCalo_stripWidth2 =
528 tauRecDetails->m_stripWidth2;
529 tauCommonDetails->m_seedCalo_nStrip = tauRecDetails->m_numStripCells;
530 tauCommonDetails->m_seedCalo_etEMCalib = tauRecDetails->m_etEMCalib;
531 tauCommonDetails->m_seedCalo_etHadCalib = tauRecDetails->m_etHadCalib;
532 tauCommonDetails->m_seedCalo_eta = tauRecDetails->m_etaCalo;
533 tauCommonDetails->m_seedCalo_phi = tauRecDetails->m_phiCalo;
534
535 //Copy only if we don't have a tau1P3P seed
537 tauCommonDetails->m_sumPi0Vec=tauRecDetails->m_sumEM;
538 tauCommonDetails->m_trFlightPathSig =
539 tauRecDetails->m_trFlightPathSig;
540 }
541
542 if(tauRecDetails->m_secVertex) {
543 delete tauCommonDetails->m_secVtx;
544 tauCommonDetails->m_secVtx =
545 new Trk::RecVertex(*(tauRecDetails->m_secVertex));
546 }
547 tauCommonDetails->m_looseTrk=
548 tauRecDetails->m_looseTracks;
549 }
550
552 const Tau1P3PExtraDetails *tau1P3PExtraDetails,
553 TauCommonExtraDetails *tauCommonExtraDetails)
554 {
555 if((tau1P3PExtraDetails==0) ||(tauCommonExtraDetails==0)) return;
556 tauCommonExtraDetails->setSumPtTrk(tau1P3PExtraDetails->m_sumPTTracks);
557 tauCommonExtraDetails->m_closestEtaTrkVertCell=
558 tau1P3PExtraDetails->m_closestEtaTrkVertCell;
559 tauCommonExtraDetails->m_closestEtaTrkCell=
560 tau1P3PExtraDetails->m_closestEtaTrkCell;
561 tauCommonExtraDetails->m_closestPhiTrkVertCell=
562 tau1P3PExtraDetails->m_closestPhiTrkVertCell;
563 tauCommonExtraDetails->m_closestPhiTrkCell=
564 tau1P3PExtraDetails->m_closestPhiTrkCell;
565 tauCommonExtraDetails->m_etaTrkCaloSamp=
566 tau1P3PExtraDetails->m_etaTrackCaloSamp;
567 tauCommonExtraDetails->m_phiTrkCaloSamp=
568 tau1P3PExtraDetails->m_phiTrackCaloSamp;
569 }
570
572 const TauRecExtraDetails *tauRecExtraDetails,
573 TauCommonExtraDetails *tauCommonExtraDetails)
574 {
575 if((tauRecExtraDetails==0) ||(tauCommonExtraDetails==0)) return;
576 tauCommonExtraDetails->m_seedCalo_nEMCell=
577 tauRecExtraDetails->m_numEMCells;
578 tauCommonExtraDetails->m_seedCalo_stripEt=
579 tauRecExtraDetails->m_stripET;
580 tauCommonExtraDetails->m_seedCalo_EMCentFrac=
581 tauRecExtraDetails->m_emCentralityFraction;
582 tauCommonExtraDetails->m_seedCalo_sumCellEnergy=
583 tauRecExtraDetails->m_sumCellE;
584 tauCommonExtraDetails->m_seedCalo_sumEMCellEnergy=
585 tauRecExtraDetails->m_sumEMCellE;
586 tauCommonExtraDetails->m_sumPtLooseTrk=
587 tauRecExtraDetails->m_sumPTTracks;
588 }
589
591 {
592 m_tauHLVStorage.clear();
593 }
594
595} //Namespace
Declaration of tau jet transient class.
DEPRECATED DO NOT USE.
DEPRECATED DO NOT USE.
Declaration of details class for tau event.
Declaration of extra details class for tau event.
Declaration of tau details container transient class.
Declaration of tau details base class.
DEPRECATED DO NOT USE.
DEPRECATED DO NOTT USE.
DEPRECATED DO NOT USE - MIGRATE TO TauCommonDetails Basic details class containing information produc...
std ::vector< double > m_etResChrgEMTrk
ElementLinkVector< CaloClusterContainer > m_pi0
CLHEP::HepLorentzVector m_sumEM
std ::vector< double > m_etChrgEM01Trk
Trk::RecVertex * m_secVertex
ElementLink< CaloClusterContainer > m_cellEM012Cluster
DEPRECATED DO NOT USE - MIGRATE TO TauCommonDetails Extended details class containing information pro...
std::vector< std::vector< double > > m_phiTrackCaloSamp
std::vector< std::vector< ElementLink< CaloCellContainer > > > m_closestPhiTrkCell
std::vector< std::vector< ElementLink< CaloCellContainer > > > m_closestPhiTrkVertCell
std::vector< std::vector< ElementLink< CaloCellContainer > > > m_closestEtaTrkVertCell
std::vector< std::vector< double > > m_etaTrackCaloSamp
std::vector< std::vector< ElementLink< CaloCellContainer > > > m_closestEtaTrkCell
Basic detail class containing information for track and calo seeded tau reconstruction algorithms.
int m_seedTrk_nStrip
Number of strip cells.
double m_seedCalo_etEMCalib
Calibrated EM transverse energy.
double m_seedTrk_etIsolEM
Transverse energy in EM calo (at EM Scale) in 0.2 < dR < 0.4.
double m_seedTrk_etNeuEM
Transverse energy of EM cells (at EM scale), within "core" cone around tau1P3P axis after subtraction...
double m_seedTrk_stripWidth2
Strip width squared.
double m_seedTrk_etChrgHadOverSumTrkPt
charged hadronic transverse energy over sum of transverse momenta of all tracks
double m_etEflow
E_T from energy flow.
double m_seedCalo_eta
eta of TauJet calculated from calorimeter
double m_seedCalo_hadRadius
Uncalibrated hadron calorimeter weighted radius.
double m_seedTrk_secMaxStripEt
Secondary maximum.
double m_massTrkSys
Invariant mass of the tracks system.
double m_ipSigLeadLooseTrk
Impact parameter significance of leading loose track.
int m_seedTrk_nIsolTrk
Associated, "not good" quality tracks in core region.
double m_seedTrk_etResNeuEM
Correction term for eflow calculations.
double m_seedTrk_etChrgHad
Charged transverse energy in narrow window around track(s) in hadronic calorimeter.
double m_trkWidth2
Width of tracks momenta.
std ::vector< double > m_seedTrk_etResChrgEMTrk
Correction term for eflow calculations (evaluated for each track separately)
std ::vector< double > m_seedTrk_etChrgEM01Trk
Transverse energy in narrow window around the track(s), EM layers 0 1 only.
double m_seedCalo_etHadCalib
Calibrated hadronic transverse energy.
double m_seedTrk_sumEMCellEtOverLeadTrkPt
Ratio of sum Et of LAr Cells to the pT of leading track.
double m_seedCalo_nIsolLooseTrk
Number of isolated tracks.
double m_ipSigLeadTrk
Impact parameter significance of leading track.
double m_chrgLooseTrk
Charge of loose tracks.
double m_leadLooseTrkPt
p_T of leading loose track - for Trigger
double m_seedCalo_isolFrac
Ratio of the uncalibrated transverse energy of cells within 0.1<dR<0.2 and cells within 0<dR<0....
double m_seedTrk_hadLeakEt
hadronic leakage in Et summed over cells
double m_ipZ0SinThetaSigLeadTrk
Significance of z0 sin(Theta)
double m_seedTrk_EMRadius
EM radius.
double m_seedTrk_etChrgEM
Transverse energy of EM cells (at EM scale) classified as "charged electromagnetic" collected in narr...
double m_seedTrk_isolFrac
Isolation fraction.
double m_seedCalo_centFrac
Centrality fraction (ET(dr<0.1)/ET(dr<0.4) for all calos.
double m_seedTrk_etEMCL
Transverse energy of cells classified as "pure electromagnetic" seeded by egamma or topo cluster (ste...
double m_seedCalo_EMRadius
Uncalibrated Et weighted radius in the Presampler + EM1 + EM2 within dR < 0.4.
double m_trFlightPathSig
Transverse flight path significance for taus with at least 2 associated tracks.
double m_seedTrk_etIsolHad
Transverse energy in HAD calo (at EM Scale) in 0.2 < dR < 0.4.
double m_seedTrk_etHadAtEMScale
Hadronic E_T at EM scale.
CLHEP::HepLorentzVector m_sumPi0Vec
Pi0 energy sum vector.
double m_seedCalo_phi
phi of TauJet calculated from calorimeter
int m_seedCalo_nStrip
Number of Strip cells within dR < 0.4, with energy above specified threshold.
ElementLinkVector< CaloClusterContainer > m_pi0
Pi0 clusters.
double m_etOverPtLeadLooseTrk
Ratio of E_T of TauCandidate to p_T of leading loose track.
Trk::RecVertex * m_secVtx
Secondary vertex.
ElementLink< CaloClusterContainer > m_cellEM012Cluster
EM calorimeter cell cluster.
double m_seedCalo_stripWidth2
Uncalibrated transverse energy weighted width in the strip layer within dR < 0.4.
double m_seedTrk_isolFracWide
Ratio of Transverse Energy in 0.2 < dr < 0.4 to total transverse energy at EM scale.
int m_seedTrk_nOtherCoreTrk
Associated, "not good" quality tracks in core region.
double m_seedCalo_etHadAtEMScale
Uncalibrated Sum of Cell Transverse energy in the Presampler + EM1 + EM2 within dR < 0....
double m_seedTrk_etEMAtEMScale
EM E_T at EM scale.
double m_seedCalo_etEMAtEMScale
Uncalibrated Sum of Cell Transverse energy in the Presampler + EM1 + EM2 within dR < 0....
ElementLinkVector< Rec::TrackParticleContainer > m_looseTrk
Loose tracks.
Extra detail class containing information for track and calo seeded tau reconstruction algorithms.
double m_seedCalo_stripEt
Uncalibrated sum of ET in the strip layer within dR < 0.4.
double m_seedCalo_EMCentFrac
EM Centrality Fraction (ET(dr<0.1)/ET(dr<0.4) for EM calos only.
std::vector< std::vector< double > > m_etaTrkCaloSamp
Eta of extrapolation point in EM Calo.
std::vector< std::vector< ElementLink< CaloCellContainer > > > m_closestEtaTrkVertCell
Closest cell to track position at vertex in eta.
double m_seedCalo_sumEMCellEnergy
Energy sum of all em cells within dR < 0.4 (Presampler + EM1 + EM2)
std::vector< std::vector< ElementLink< CaloCellContainer > > > m_closestEtaTrkCell
Closest cell to track position from extrapolation in eta.
int m_seedCalo_nEMCell
Number of EM cells within dR < 0.4, with E > m_cellEthr.
double m_sumPtLooseTrk
Sum of p_T for loose tracks.
std::vector< std::vector< ElementLink< CaloCellContainer > > > m_closestPhiTrkVertCell
Closest cell to track position at vertex in phi.
std::vector< std::vector< double > > m_phiTrkCaloSamp
Phi of extrapolation point in EM Calo.
void setSumPtTrk(double pt)
Set sum of p_T for loose tracks.
double m_seedCalo_sumCellEnergy
Energy sum of all cells within dR < 0.4.
std::vector< std::vector< ElementLink< CaloCellContainer > > > m_closestPhiTrkCell
Closest cell to track position from extrapolation in phi.
static const float DEFAULT
Definition TauDetails.h:34
unsigned int numTrack() const
number of Tracks associated to Tau candidate, CAUTION not to be confused with numberOfTracks()!
ElementLink< CaloClusterContainer > m_cellCluster
Calo cell.
ElementLinkVector< Rec::TrackParticleContainer > m_conversionTracks
Conversion tracks.
const ElementLink< TauDetailsContainer > detailElementLink(int i) const
Get TauDetails ElementLink by index
Definition TauJet.cxx:400
std::string toString() const
Uses printOn to make a string of the TauDetails.
Definition TauJet.cxx:167
std::bitset< 8 > m_author
Allow more than one author, TauJetParameters::Author used as index.
ElementLink< JetCollection > m_jet
Jets.
TauJetParameters::Author author() const
Author of this object (DO NOT USE! only for backward compatibility)
void MergeToCommonDetails(TauDetailsContainer *tauDetailsContainer=0, TauDetailsContainer *tauExtraDetailsContainer=0)
Merge Tau[1P3P|Rec](Extra)Details to TauCommon(Extra)Details.
Definition TauJet.cxx:174
int nDetails() const
number of details objects in this TauJet
Definition TauJet.cxx:414
void removeDetails(const std::string &name, const std::string &className="")
Remove all tau details object with matching name.
Definition TauJet.cxx:363
void CopyToCommonDetails(const Tau1P3PDetails *tau1P3PDetails, TauCommonDetails *tauCommonDetails)
Converts a Tau1P3PDetails to a TauCommonDetails.
Definition TauJet.cxx:444
void CleanDetailsForAOD()
clean details for AOD Removes extra details and any invalid elementlinks from details list
Definition TauJet.cxx:419
ElementLink< CaloClusterContainer > m_cluster
Calo cluster.
void addDetails(const TauDetailsContainer *container, TauDetails *details)
Add new tau detail instance.
const T * details() const
Get the first details object matching requested type or return NULL.
bool m_hasMergedToCommonDetails
True if MergeToCommonDetails has been called.
unsigned int m_numberOfTracks
Number of tracks.
std::vector< std::pair< TauJetParameters::TauCalibType, CLHEP::HepLorentzVector > > m_tauHLVStorage
HLV storage.
ParticleImpl< ::Analysis::TauJetNavigation, ::P4ImplEEtaPhiM > TauJetImpl_t
ElementLinkVector< Rec::TrackParticleContainer > m_tracks
Tracks.
ElementLinkVector< Rec::TrackParticleContainer > m_seedTrk_tracks
Seed Trk Tracks.
ElementLinkVector< Rec::TrackParticleContainer > m_seedCalo_tracks
Seed Calo Tracks.
ElementLinkVector< TauDetailsContainer > m_tauDetails
Vector containing all details.
void printOn(stream &o) const
Printing function.
TauJet()
Default Constructor.
Definition TauJet.cxx:41
std::string detailName(int i) const
Get classname of TauDetails by index.
Definition TauJet.cxx:407
const TauDetails * detail(const std::string &className, const std::string &name="") const
first TauDetails object of type className and possibly stored with SG key name.
Definition TauJet.cxx:379
bool operator==(const TauJet &rhs) const
Equality operator.
Definition TauJet.cxx:132
const Rec::TrackParticle * track(unsigned int i) const
Tracks associated to Tau candidate.
bool hasAuthor(const TauJetParameters ::Author &author) const
check if this object has Author author (can be more than one)
Class containing discriminants produced by identification algorithms.
Definition TauPID.h:32
DEPRECATED DO NOT USE - MIGRATE TO TauCommonDetails Basic details class containing information produc...
int m_chargeLooseTracks
Charge of loose tracks.
Trk::RecVertex * m_secVertex
ElementLinkVector< Rec::TrackParticleContainer > m_looseTracks
CLHEP::HepLorentzVector m_sumEM
DEPRECATED DO NOT USE - MIGRATE TO TauCommonDetails Extended details class containing information pro...
value_type push_back(value_type pElem)
Add an element to the end of the collection.
ELVIterator< typename RefVector::iterator > iterator
I4Momentum is an abstract base class providing 4-momentum behavior.
Definition I4Momentum.h:31
virtual bool trySetObject(const INavigable *child)=0
void setObject(const_child_ptr data)
ParticleImpl & operator=(const ParticleImpl &rhs)
Trk::RecVertex inherits from Trk::Vertex.
Definition RecVertex.h:44
The namespace of all packages in PhysicsAnalysis/JetTagging.
DataModel_detail::iterator< DVL > remove(typename DataModel_detail::iterator< DVL > beg, typename DataModel_detail::iterator< DVL > end, const T &value)
Specialization of remove for DataVector/List.
DataModel_detail::iterator< DVL > remove_if(typename DataModel_detail::iterator< DVL > beg, typename DataModel_detail::iterator< DVL > end, Predicate pred)
Specialization of remove_if for DataVector/List.