ATLAS Offline Software
Loading...
Searching...
No Matches
Reconstruction/tauEvent/tauEvent/TauJet.h
Go to the documentation of this file.
1/*
2 Copyright (C) 2002-2024 CERN for the benefit of the ATLAS collaboration
3*/
4
21
22#ifndef TAU_ANALYSIS_H
23#define TAU_ANALYSIS_H
24
25#include <bitset>
26
27#include "CLHEP/Vector/LorentzVector.h"
29#include "AthLinks/ElementLinkVector.h"
32#include "CaloEvent/CaloClusterContainer.h"
34
36#include "tauEvent/TauPID.h"
44
45//forward declaration to store link to PanTauSeed
46//this connects the TauJet to PanTauSeed and vice versa
47namespace PanTau {
48 class PanTauSeed;
49}
50
51namespace Analysis
52{
54
57 class TauJet: public ParticleImpl<
58 ::Analysis::TauJetNavigation, // not really a terminal node: done here
59 ::P4ImplEEtaPhiM
60 >
61 {
63 // Public typedefs:
65 public:
66 //-----------------------------------------------------------------
69 // for readability and lazy people
77
78 //-----------------------------------------------------------------
81
83 TauJet();
84
86 TauJet( TauJetParameters :: Author author );
87
90 TauJet( const TauJet &rhs );
91
93 virtual ~TauJet();
94
98 friend std::ostream& operator<< (
99 std::ostream& o, const TauJet& tau);
100
104 friend std::ostream& operator<< (
105 std::ostream& o, const TauJet* tau);
106
110 friend MsgStream& operator<< (
111 MsgStream& o, const TauJet& tau);
112
116 friend MsgStream& operator<< (
117 MsgStream& o, const TauJet* tau);
118
121 TauJet &operator = ( const TauJet &rhs );
122
126 bool operator==( const TauJet& rhs ) const ;
127
131 bool operator!=( const TauJet& rhs ) const;
132
134
135 //-----------------------------------------------------------------
137
138
142 virtual void fillToken(
143 INavigationToken &thisToken ) const;
144
148 virtual void fillToken(
149 INavigationToken &thisToken,
150 const std::any& ) const;
151
159 double parameter( TauJetParameters :: Detail detail ) const;
160
162
164
166 const CaloCluster *cluster() const;
167
171
175
179 const CaloClusterContainer *cont,
180 const CaloCluster *clust );
181
186
189 const CaloCluster *cellCluster() const;
190
194
198
201 const CaloClusterContainer *cont,
202 const CaloCluster *clust );
203
207
209
211
213 const Jet *jet() const;
214
218
222
224 void setJet(
225 const JetCollection *cont,
226 const Jet *clust );
227
230
232
234
236 const Rec :: TrackParticle *track( unsigned int i ) const;
237
240 unsigned int numTrack() const;
241
246
251
256 const Rec::TrackParticle *track );
257
260
262
264
268 const Rec :: TrackParticle *conversionTrack(
269 unsigned int i ) const;
270
272 unsigned int numConversionTrack() const;
273
278
283
288 const Rec::TrackParticleContainer *cont,
289 const Rec::TrackParticle *track );
290
293
294
296
298
300 const Rec :: TrackParticle *seedCalo_track( unsigned int i ) const;
301
303 unsigned int seedCalo_numTrack() const;
304
309
314
319 const Rec::TrackParticle *track );
320
323
324
326
328
330 const Rec :: TrackParticle *seedTrk_track( unsigned int i ) const;
331
333 unsigned int seedTrk_numTrack() const;
334
339
344
349 const Rec::TrackParticle *track );
350
353
354
358 int nProng() const;
359
362 bool isConversionTrack( unsigned int i ) const;
363
365
367
370 const TauPID *tauID() const;
371
375
379
381
383
390
394 void removeDetails(
395 const std::string &name,
396 const std::string& className = "" );
397
400 void removeDetails(
401 int i );
402
412 template <typename T>
413 const T *details(
414 const std::string &name ) const;
415
418 template <typename T>
419 const T *details() const;
420
426 const TauDetails* detail (const std::string& className,
427 const std::string& name = "") const;
428
431 const TauDetails* detail (
432 int i) const;
433
437 int i) const;
438
441 std::string detailName (
442 int i) const;
443
445 int nDetails() const;
446
449 void CleanDetailsForAOD();
450
453
455
457
459 TauJetParameters :: Author author() const;
460
464 const TauJetParameters :: Author &author ) const;
465
469 const TauJetParameters :: Author &author );
470
474 const TauJetParameters :: Author &author );
475
477
483
484
487 unsigned int numberOfTracks() const;
488
492 unsigned int numberOfTracks );
493
495
497
500 void setROIWord( unsigned int RoiWord );
501
504 unsigned int ROIWord() const;
505
507
509
512 void setE( double ene );
513
516 void setEta( double eta );
517
520 void setPhi( double phi );
521
524 void setM( double m );
525
527
529
538 TauDetailsContainer* tauDetailsContainer = 0 ,
539 TauDetailsContainer* tauExtraDetailsContainer = 0);
540
542
543 // void MergeToCommonDetails(); // used for transient only
544 // void MergeToCommonDetails( TauDetailsContainer* tauDetailsContainer); // used for AODs or data without extra details
545
549
553 bool state);
554
556
559 std::string toString() const;
560
562
564 void storeHLV( TauJetParameters :: TauCalibType type, CLHEP :: HepLorentzVector hlv );
565 CLHEP::HepLorentzVector getHLV( TauJetParameters :: TauCalibType type ) const;
566 void clearHLV();
567
569 const std::vector<PanTau::PanTauSeed*>& getListOfPanTauSeeds() const;
570
573
574 protected:
577 template <class stream>
578 void printOn(stream& o) const;
579
580 private:
581 // ------------------------------------------------------------
583
584
589 const Tau1P3PDetails *tau1P3PDetails,
590 TauCommonDetails *tauCommonDetails);
591
596 const TauRecDetails *tauRecDetails,
597 TauCommonDetails *tauCommonDetails);
598
603 const Tau1P3PExtraDetails *tau1P3PExtraDetails,
604 TauCommonExtraDetails *tauCommonExtraDetails);
605
610 const TauRecExtraDetails *tauRecExtraDetails,
611 TauCommonExtraDetails *tauCommonExtraDetails);
612
614
617
620
623
626
629
632
635
638
640 std::bitset<8> m_author;
641
643 unsigned int m_numberOfTracks;
644
645 //Tau particle ID info
647
649 unsigned int m_roiWord;
650
653
655 std::vector<std::pair< TauJetParameters::TauCalibType, CLHEP::HepLorentzVector > > m_tauHLVStorage;
656
658 std::vector<PanTau::PanTauSeed*> m_listOfPanTauSeeds;
659
660 }; //Class TauJet
661
662 template <class stream>
663 void TauJet::printOn(stream& o) const
664 {
665 o << "TauJet {"
666 << "tracks: {";
668 = m_tracks.begin(); itrk!=m_tracks.end(); ++itrk)
669 o << *(*itrk) << " ";
670 o << "};\n"
671 << "conversionTracks: {";
673 = m_conversionTracks.begin();
674 itrk!=m_conversionTracks.end(); ++itrk)
675 o << *(*itrk) << " ";
676 o << "};\n"
677 << "tauDetails: {";
679 = m_tauDetails.begin(); idetail!=m_tauDetails.end(); ++idetail)
680 if ((*idetail).isValid())
681 o << *(*idetail) << " ";
682 o << "};\n"
683 //not m_cluster
684 //not m_cellCluster
685 //not m_jet
686 << "author: " << m_author << ";\n"
687 << "numberOfTracks: " << m_numberOfTracks <<";\n"
688 //not m_tauID
689 << "roiWord: " << m_roiWord << ";\n"
690 << "hasMergedToCommonDetails: " << m_hasMergedToCommonDetails << ";\n"
691 << "};";
692 }
693
694 inline std::ostream& operator<<(
695 std::ostream& o, const TauJet& tau)
696 {
697 tau.printOn(o);
698 return o;
699 }
700
701 inline std::ostream& operator<<(
702 std::ostream& o, const TauJet* tau)
703 {
704 tau->printOn(o);
705 return o;
706 }
707
708 inline MsgStream& operator<<(
709 MsgStream& o, const TauJet& tau)
710 {
711 tau.printOn(o);
712 return o;
713 }
714
715 inline MsgStream& operator<<(
716 MsgStream& o, const TauJet* tau)
717 {
718 tau->printOn(o);
719 return o;
720 }
721
722} //Namespace analysis
723
724#include "TauJet.icc"
725
726#endif // TAU_ANALYSIS_H
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.
Definition of parameters for TauJet object.
DEPRECATED DO NOT USE.
DEPRECATED DO NOTT USE.
#define x
DEPRECATED DO NOT USE - MIGRATE TO TauCommonDetails Basic details class containing information produc...
DEPRECATED DO NOT USE - MIGRATE TO TauCommonDetails Extended details class containing information pro...
Basic detail class containing information for track and calo seeded tau reconstruction algorithms.
Extra detail class containing information for track and calo seeded tau reconstruction algorithms.
const std::vector< PanTau::PanTauSeed * > & getListOfPanTauSeeds() const
Get the list of links to PanTauSeed objects that were created for this tauJet.
void setCellClusterLink(const ElementLink< CaloClusterContainer > &x)
set ElementLink of the CaloCluster seed of TauJet
void setE(double ene)
set energy data member
const ElementLink< CaloClusterContainer > cellClusterLink() const
ElementLink to cell CaloCluster, might be invalid the ID variables are calculated from this cluster i...
const CaloCluster * cluster() const
seed CaloCluster, DEPRECATED as of release 13
void addPanTauSeed(PanTau::PanTauSeed *pantauSeed)
add a new PanTauSeed to this tau
ElementLinkVector< Rec::TrackParticleContainer > & trackLinkVector()
Get track link vector.
void setROIWord(unsigned int RoiWord)
Set ROI Word (trigger purposes)
unsigned int numTrack() const
number of Tracks associated to Tau candidate, CAUTION not to be confused with numberOfTracks()!
ElementLink< CaloClusterContainer > m_cellCluster
Calo cell.
const ElementLinkVector< Rec::TrackParticleContainer > & trackLinkVector() const
Get track link vector.
void setNumberOfTracks(unsigned int numberOfTracks)
Set number of tracks.
ElementLink< JetCollection > & jetLink()
ElementLink to seed Jet, might be invalid if not seeded from a Jet
ElementLink< CaloClusterContainer > & clusterLink()
ElementLink to seed CaloCluster (const) DEPRECATED as of release 13
const CaloCluster * cellCluster() const
cell CaloCluster, might be NULL the ID variables are calculated from this cluster if its not empty
void addTrack(const Rec::TrackParticleContainer *cont, const Rec::TrackParticle *track)
Add a track to the TauJet.
double parameter(TauJetParameters ::Detail detail) const
dummy Parameter accessors, for analysis code backward compatibility
Definition TauJet.cxx:351
ElementLinkVector< Rec::TrackParticleContainer > m_conversionTracks
Conversion tracks.
const ElementLink< CaloClusterContainer > clusterLink() const
ElementLink to seed CaloCluster, DEPRECATED as of release 13
const ElementLink< JetCollection > jetLink() const
ElementLink to seed Jet, might be invalid if not seeded from a Jet
const ElementLink< TauDetailsContainer > detailElementLink(int i) const
Get TauDetails ElementLink by index
Definition TauJet.cxx:400
void setJet(const JetCollection *cont, const Jet *clust)
set the Jet as the seed to the TauJet
void clearConversionTracks()
Remove all associated track from TauJet.
void clearAuthor(const TauJetParameters ::Author &author)
clear the author flag to value false
void addSeedTrk_track(const Rec::TrackParticleContainer *cont, const Rec::TrackParticle *track)
Add a seed trk track to the TauJet.
const ElementLinkVector< Rec::TrackParticleContainer > & seedCalo_trackLinkVector() const
Get seed calo track link vector.
bool operator!=(const TauJet &rhs) const
Inequality operator.
bool isConversionTrack(unsigned int i) const
Check if track is a conversion track.
unsigned int ROIWord() const
Retrieve ROI Word (trigger purposes)
void setM(double m)
set mass data member
void addConversionTrack(const Rec::TrackParticleContainer *cont, const Rec::TrackParticle *track)
Add a conversion track.
std::string toString() const
Uses printOn to make a string of the TauDetails.
Definition TauJet.cxx:167
void setEta(double eta)
set eta data member
virtual ~TauJet()
Virtual Destructor.
Definition TauJet.cxx:162
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 setTauID(TauPID *tauID)
Set TauPID object that contains discriminant values.
const Rec::TrackParticle * seedTrk_track(unsigned int i) const
Seed Track Tracks associated to Tau candidate.
void setCluster(const CaloClusterContainer *cont, const CaloCluster *clust)
set the CaloCluster as the seed of TauJet, DEPRECATED as of release 13
void setClusterLink(const ElementLink< CaloClusterContainer > &x)
set ElementLink of the CaloCluster seed of TauJet DEPRECATED as of release 13
void MergeToCommonDetails(TauDetailsContainer *tauDetailsContainer=0, TauDetailsContainer *tauExtraDetailsContainer=0)
Merge Tau[1P3P|Rec](Extra)Details to TauCommon(Extra)Details.
Definition TauJet.cxx:174
TauJetImpl_t::navigable_type navigable_type
int nDetails() const
number of details objects in this TauJet
Definition TauJet.cxx:414
friend std::ostream & operator<<(std::ostream &o, const TauJet &tau)
Printing operator.
void storeHLV(TauJetParameters ::TauCalibType type, CLHEP ::HepLorentzVector hlv)
void removeDetails(const std::string &name, const std::string &className="")
Remove all tau details object with matching name.
Definition TauJet.cxx:363
void setHasMergedToCommonDetails(bool state)
Set state Merge to common details state.
TauPID * tauID()
Get TauPID object containing discriminant values.
const ElementLinkVector< Rec::TrackParticleContainer > & conversionTrackLinkVector() const
Get conversion track element link vector (const)
void CopyToCommonDetails(const Tau1P3PDetails *tau1P3PDetails, TauCommonDetails *tauCommonDetails)
Converts a Tau1P3PDetails to a TauCommonDetails.
Definition TauJet.cxx:444
ElementLinkVector< Rec::TrackParticleContainer > & seedCalo_trackLinkVector()
Get seed calo track link vector.
virtual void fillToken(INavigationToken &thisToken) const
INavigable interface, fill constituents (Jet,CaloCluster,CaloCell)
Definition TauJet.cxx:237
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.
std::vector< PanTau::PanTauSeed * > m_listOfPanTauSeeds
List of associated pantau seeds.
const ElementLinkVector< Rec::TrackParticleContainer > & seedTrk_trackLinkVector() const
Get seed trk track link vector.
void setJetLink(const ElementLink< JetCollection > &x)
set the ElementLink to the seed Jet
bool hasMergedToCommonDetails() const
Overloading MergeToCommonDetails function.
void addDetails(const TauDetailsContainer *container, TauDetails *details)
Add new tau detail instance.
unsigned int numberOfTracks() const
Get number of tracks.
const Jet * jet() const
seed Jet, might be NULL if not seeded from a Jet
CLHEP::HepLorentzVector getHLV(TauJetParameters ::TauCalibType type) const
void clearTracks()
Remove all associated track from TauJet.
int nProng() const
Number of prongs.
const T * details() const
Get the first details object matching requested type or return NULL.
TauJetImpl_t::particle_type particle_type
bool m_hasMergedToCommonDetails
True if MergeToCommonDetails has been called.
void clearSeedCalo_tracks()
Remove all seed calo associated tracks from TauJet.
unsigned int m_numberOfTracks
Number of tracks.
std::vector< std::pair< TauJetParameters::TauCalibType, CLHEP::HepLorentzVector > > m_tauHLVStorage
HLV storage.
const TauPID * tauID() const
Get TauPID object containing discriminant values.
ElementLinkVector< Rec::TrackParticleContainer > & seedTrk_trackLinkVector()
Get seed trk track link vector.
void setCellCluster(const CaloClusterContainer *cont, const CaloCluster *clust)
set the CaloCluster as the seed of TauJet
const Rec::TrackParticle * conversionTrack(unsigned int i) const
Get a conversion track.
ElementLink< CaloClusterContainer > & cellClusterLink()
ElementLink to cell CaloCluster, might be invalid the ID variables are calculated from this cluster i...
ParticleImpl< ::Analysis::TauJetNavigation, ::P4ImplEEtaPhiM > TauJetImpl_t
const ElementLinkVector< TauDetailsContainer > & tauDetailLinkVector() const
unsigned int numConversionTrack() const
Number of conversion tracks.
ElementLinkVector< Rec::TrackParticleContainer > m_tracks
Tracks.
unsigned int seedTrk_numTrack() const
number of seed trk Tracks associated to Tau candidate,
ElementLinkVector< Rec::TrackParticleContainer > m_seedTrk_tracks
Seed Trk Tracks.
const Rec::TrackParticle * seedCalo_track(unsigned int i) const
Seed Calo Tracks associated to Tau candidate.
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 & operator=(const TauJet &rhs)
assignment operator
Definition TauJet.cxx:102
ElementLinkVector< TauDetailsContainer > & tauDetailLinkVector()
TauJet()
Default Constructor.
Definition TauJet.cxx:41
void clearSeedTrk_tracks()
Remove all seed trk associated tracks from TauJet.
std::string detailName(int i) const
Get classname of TauDetails by index.
Definition TauJet.cxx:407
TauJetImpl_t::momentum_type momentum_type
const T * details(const std::string &name) const
Get first details object stored in SG collection with matching name.
void addSeedCalo_track(const Rec::TrackParticleContainer *cont, const Rec::TrackParticle *track)
Add a seed calo track to the TauJet.
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.
ElementLinkVector< Rec::TrackParticleContainer > & conversionTrackLinkVector()
Get conversion track element link vector.
unsigned int seedCalo_numTrack() const
number of seed calo Tracks associated to Tau candidate,
bool hasAuthor(const TauJetParameters ::Author &author) const
check if this object has Author author (can be more than one)
void setPhi(double phi)
set phi data member
void setAuthor(const TauJetParameters ::Author &author)
set the author flag to true
Class containing discriminants produced by identification algorithms.
Definition TauPID.h:32
DEPRECATED DO NOT USE - MIGRATE TO TauCommonDetails Basic details class containing information produc...
DEPRECATED DO NOT USE - MIGRATE TO TauCommonDetails Extended details class containing information pro...
Principal data class for CaloCell clusters.
ElementLinkVector implementation for standalone ROOT.
ELVIterator< typename RefVector::const_iterator > const_iterator
Dummy type needed fro specialized implementation.
P4ImplEEtaPhiM is a base class for classes with 4-momentum behavior, for which E, eta,...
The namespace of all packages in PhysicsAnalysis/JetTagging.
MsgStream & operator<<(MsgStream &out, const IPInfoBase &)
output.
NavigableTerminalNode TauJetNavigation