00001
00002
00003 #ifndef XAODDITAU_VERSIONS_DITAUJET_V1_H
00004 #define XAODDITAU_VERSIONS_DITAUJET_V1_H
00005
00006
00007
00008 #include "AthLinks/ElementLink.h"
00009
00010
00011
00012 #include "xAODBase/IParticle.h"
00013 #include "xAODBase/IParticleContainer.h"
00014 #include "xAODTau/DiTauDefs.h"
00015 #include "xAODTracking/TrackParticleContainer.h"
00016 #include "xAODTracking/VertexContainer.h"
00017 #include "xAODJet/JetContainer.h"
00018 #include "xAODPFlow/PFOContainer.h"
00019
00020
00021 namespace xAOD {
00022
00023
00024
00025 class DiTauJet_v1 : public IParticle {
00026
00027 public:
00029 DiTauJet_v1();
00030
00031
00032 virtual double pt() const;
00033 virtual double eta() const;
00034 virtual double phi() const;
00035 virtual double e() const;
00036
00037 virtual double m() const;
00038 virtual double rapidity() const;
00039
00041 virtual const FourMom_t& p4() const;
00042
00044 void setP4(double pt, double eta, double phi, double m);
00045
00047 virtual Type::ObjectType type() const;
00048
00049
00050 typedef ElementLink< xAOD::JetContainer > JetLink_t;
00051
00052 const JetLink_t& jetLink() const;
00053
00054 void setJetLink( const JetLink_t& jetLink );
00055
00056 void setJet( const xAOD::JetContainer *cont, const xAOD::Jet *jet );
00057
00058 const Jet* jet() const;
00059
00060
00061 float subjetPt(unsigned int numSubjet) const;
00062 float subjetEta(unsigned int numSubjet) const;
00063 float subjetPhi(unsigned int numSubjet) const;
00064 float subjetE(unsigned int numSubjet) const;
00065
00066 void setSubjetPtEtaPhiE(unsigned int numSubjet,
00067 float pt, float eta, float phi, float e);
00068
00069
00070
00071 float fCore(unsigned int numSubjet) const;
00072 void setfCore(unsigned int numSubjet, float fCore);
00073
00074
00075
00076 typedef ElementLink< xAOD::VertexContainer > VertexLink_t;
00077
00078 const VertexLink_t& vertexLink() const;
00079
00080 void setVertexLink( const VertexLink_t& vertexLink );
00081
00082 void setVertex( const xAOD::VertexContainer *cont, const xAOD::Vertex *vertex );
00083
00084 const Vertex* vertex() const;
00085
00086
00087
00088
00089
00090
00091
00092
00093
00094
00095
00096
00097
00098
00099
00100
00101
00102
00103
00104 typedef std::vector< ElementLink< xAOD::TrackParticleContainer > > TrackParticleLinks_t;
00105
00106
00107 const TrackParticleLinks_t& trackLinks() const;
00108 void setTrackLinks( const TrackParticleLinks_t& trackParticles );
00109
00110 const TrackParticle* track( size_t i ) const;
00111
00112 size_t nTracks() const;
00113
00114 void addTrack( const xAOD::TrackParticleContainer*, const xAOD::TrackParticle*);
00115
00116 void clearTrackLinks();
00117
00118
00119 const TrackParticleLinks_t& otherTrackLinks() const;
00120 void setOtherTrackLinks( const TrackParticleLinks_t& trackParticles );
00121 const TrackParticle* otherTrack( size_t i ) const;
00122 size_t nOtherTracks() const;
00123 void addOtherTrack( const xAOD::TrackParticleContainer*, const xAOD::TrackParticle*);
00124 void clearOtherTrackLinks();
00125
00126
00127 const TrackParticleLinks_t& isoTrackLinks() const;
00128 void setIsoTrackLinks( const TrackParticleLinks_t& trackParticles );
00129 const TrackParticle* isoTrack( size_t i ) const;
00130 size_t nIsoTracks() const;
00131 void addIsoTrack( const xAOD::TrackParticleContainer*, const xAOD::TrackParticle*);
00132 void clearIsoTrackLinks();
00133
00134
00136 bool detail( DiTauJetParameters::Detail detail, int& value ) const;
00137 bool detail( DiTauJetParameters::Detail detail, float& value ) const;
00138 void setDetail( DiTauJetParameters::Detail detail, int value );
00139 void setDetail( DiTauJetParameters::Detail detail, float value );
00140
00141
00142 private:
00143
00145 mutable FourMom_t m_p4;
00147 mutable bool m_p4Cached;
00148
00149 };
00150
00151 }
00152
00153
00154
00155
00156
00157
00158
00159
00160 #include "AthContainers/DataVector.h"
00161 DATAVECTOR_BASE( xAOD::DiTauJet_v1, xAOD::IParticle );
00162
00163 #endif // XAODDITAU_VERSIONS_DITAUJET_V1_H
00164