00001
00002
00003 #ifndef XAODTRIGBPHYS_VERSIONS_TRIGBPHYS_V1_H
00004 #define XAODTRIGBPHYS_VERSIONS_TRIGBPHYS_V1_H
00005
00006
00007 extern "C" {
00008 # include <stdint.h>
00009 }
00010 #include <vector>
00011 #include <string>
00012
00013
00014 #include "AthContainers/AuxElement.h"
00015 #include "xAODTracking/TrackParticle.h"
00016 #include "xAODTracking/TrackParticleContainer.h"
00017
00018
00019 #include "AthLinks/ElementLink.h"
00020 #include "AthContainers/DataVector.h"
00021
00022 namespace xAOD {
00023
00024
00025 class TrigBphys_v1;
00026 typedef DataVector< xAOD::TrigBphys_v1 > TrigBphysContainer_v1;
00027
00039 class TrigBphys_v1 : public SG::AuxElement {
00040
00041 public:
00043 enum pType {
00044 PHIKK = 0,
00045 DSPHIPI = 1,
00046 BMUMU = 2,
00047 BMUMUX = 3,
00048 JPSIEE = 4,
00049 JPSIMUMU = 5,
00050 MULTIMU = 6,
00051 BKMUMU = 7,
00052 BDKSTMUMU = 8,
00053 BSPHIMUMU = 9,
00054 LBLMUMU = 10,
00055 BCDSMUMU = 11,
00056
00057 LAMBDAPIP = 12,
00058 BCDPMUMU = 13,
00059 BCDSTMUMU = 14,
00060 OMEGALAMK = 15,
00061 XILAMPI = 16,
00062 DSTDZPI = 17,
00063 DZMUKX = 18,
00064 DZKPI = 19,
00065 DPKPIPI = 20,
00066
00067 UNKNOWNPTYPE = 9999
00068 };
00069
00071 enum levelType{
00072 UNKOWNLEVEL = 0,
00073 L2 = 2,
00074 EF = 3,
00075 HLT = 4,
00076 LASTLEVEL
00077 };
00078
00080 TrigBphys_v1();
00081
00082
00083 void clone(const TrigBphys_v1 &rhs);
00084
00085
00086 void initialise();
00087
00088
00089 void initialise(uint32_t roi, float eta, float phi, float pt,
00090 pType particleType,
00091 float mass, levelType level);
00092 void initialise(uint32_t roi, float eta, float phi, pType particleType,
00093 float mass, levelType level);
00096 void initialise(uint32_t roi, float eta, float phi, float pt,
00097 pType particleType,
00098 float mass, const ElementLink<xAOD::TrigBphysContainer_v1>& sDecay,
00099 levelType level);
00100 void initialise(uint32_t roi, float eta, float phi, pType particleType,
00101 float mass, const ElementLink<xAOD::TrigBphysContainer_v1>& sDecay,
00102 levelType level);
00103
00104 bool operator==(const TrigBphys_v1& rhs) const;
00105 bool operator!=(const TrigBphys_v1& rhs) const {return !((*this)==rhs);}
00106
00108 uint32_t roiId() const;
00110 pType particleType() const;
00112 levelType level() const;
00114 float eta() const;
00116 float phi() const;
00118 float pt() const;
00120 float mass() const;
00122 float fitmass() const;
00124 float fitchi2() const;
00126 int fitndof() const;
00128 float fitx() const;
00130 float fity() const;
00132 float fitz() const;
00133
00135 float lxy () const;
00137 float lxyError() const;
00139 float tau () const;
00141 float tauError() const;
00143 float fitmassError() const;
00144
00146 const TrigBphys_v1* secondaryDecay() const;
00148 const ElementLink< TrigBphysContainer_v1 >& secondaryDecayLink() const;
00149
00151 const std::vector< ElementLink< xAOD::TrackParticleContainer > >&
00152 trackParticleLinks() const;
00154 void setTrackParticleLinks(
00155 const std::vector< ElementLink< TrackParticleContainer > >& links );
00157 size_t nTrackParticles() const;
00159 const xAOD::TrackParticle* trackParticle( size_t i ) const;
00160
00162 void setEta (float);
00164 void setPhi (float);
00166 void setMass(float);
00168 void setPt(float);
00169
00171 void setRoiId(uint32_t id);
00173 void setParticleType(pType type);
00175 void setLevel(levelType type);
00177 void setFitmass(float FitMass);
00179 void setFitchi2(float FitChi2);
00181 void setFitndof(int FitNdof);
00183 void setFitx(float FitX);
00185 void setFity(float FitY);
00187 void setFitz(float FitZ);
00189 void addTrackParticleLink(const ElementLink<xAOD::TrackParticleContainer>& track);
00191 void setSecondaryDecayLink(const ElementLink<xAOD::TrigBphysContainer_v1> & link);
00192
00194 void setLxy (float v);
00196 void setLxyError(float v);
00198 void setTau (float v);
00200 void setTauError(float v);
00202 void setFitmassError(float v);
00203
00204
00206 const std::vector< uint32_t > & vecRoiIds() const;
00208 void setVecRoiIds(const std::vector< uint32_t >& roiIds );
00210 size_t nVecRoiIds() const;
00212 uint32_t vecRoiId( size_t i ) const;
00213 void addVecRoiId(uint32_t roiId);
00214
00215
00216
00218 const TrigBphys_v1* lowerChain() const;
00220 const ElementLink< TrigBphysContainer_v1 >& lowerChainLink() const;
00222 void setLowerChainLink(const ElementLink<xAOD::TrigBphysContainer_v1> & link);
00223
00225 const std::vector< ElementLink< xAOD::IParticleContainer > >&
00226 particleLinks() const;
00228 void setParticleLinks(const std::vector< ElementLink< IParticleContainer > >& links );
00230 size_t nParticles() const;
00232 const xAOD::IParticle* particle( size_t i ) const;
00233 void addParticleLink(const ElementLink<xAOD::IParticleContainer>& particle);
00234
00235 private:
00236
00237 TrigBphys_v1(const TrigBphys_v1 & rhs);
00238
00239 };
00240
00241 }
00242
00243 #endif // XAODTRIGBPHYS_VERSIONS_TRIGBPHYS_V1_H