00001 #ifndef Event_EvtRecDTag_H
00002 #define Event_EvtRecDTag_H
00003
00004 #include "GaudiKernel/ObjectVector.h"
00005 #include "GaudiKernel/ContainedObject.h"
00006 #include "GaudiKernel/SmartRef.h"
00007 #include "GaudiKernel/SmartRefVector.h"
00008 #include "EventModel/EventModel.h"
00009 #include "CLHEP/Matrix/Vector.h"
00010 #include "CLHEP/Matrix/SymMatrix.h"
00011 #include "EvtRecEvent/EvtRecTrack.h"
00012 #include <utility>
00013 #include <vector>
00014
00015 using CLHEP::HepVector;
00016 using CLHEP::HepSymMatrix;
00017 using namespace EventModel;
00018 extern const CLID & CLID_EvtRecDTag;
00019
00020
00021
00022
00023
00024
00025
00026
00027 class EvtRecDTag : virtual public ContainedObject {
00028 public:
00029 virtual const CLID& clID() const {return EvtRecDTag::classID();}
00030 static const CLID& classID() {return CLID_EvtRecDTag;}
00031
00032 EvtRecDTag();
00033 ~EvtRecDTag() {;}
00034
00035 EvtRecDTag(const EvtRecDTag&);
00036 EvtRecDTag & operator = (const EvtRecDTag &);
00037
00038
00039
00040
00041 enum SelType
00042 {
00043 Loose,
00044 Tight,
00045 Default
00046 };
00047
00048
00049
00050 enum DecayMode
00051 {
00052 kD0toKPi,
00053 kD0toKPiPi0,
00054 kD0toKPiPi0Pi0,
00055 kD0toKPiPiPi,
00056
00057 kD0toKPiPiPiPi0,
00058 kD0toKPiEta,
00059
00060 kD0toKsKPi = 50,
00061 kD0toKsKPiPi0,
00062
00063 kD0toKsPiPi = 100,
00064 kD0toKsPiPiPi0,
00065 kD0toKsPi0,
00066
00067 kD0toPiPiPi0,
00068 kD0toPiPi,
00069 kD0toKK,
00070 kD0toKKPi0,
00071 kD0toPi0Pi0,
00072 kD0toKsKs,
00073 kD0toKsKsPi0,
00074 kD0toKsPi0Pi0,
00075 kD0toKsKK,
00076 kD0toKsEta,
00077 kD0toPi0Pi0Pi0,
00078
00079 kD0toKsKsKs,
00080 kD0toPiPiPiPi,
00081 kD0toPiPiPi0Pi0,
00082 kD0toKKPiPi,
00083 kD0toKKPi0Pi0,
00084 kD0toKsKsPiPi,
00085 kD0toPiPiPiPiPi0,
00086 kD0toKsPiPiPiPi,
00087 kD0toKKPiPiPi0,
00088 kD0toKsPi0Eta,
00089
00090 kD0toKsEPPiPiEta,
00091 kD0toKsEPRhoGam,
00092 kD0toKsPi0Pi0Pi0,
00093
00094 kDptoKPiPi =200,
00095 kDptoKPiPiPi0,
00096 kDptoKsPi,
00097 kDptoKsPiPi0,
00098 kDptoKsPiPiPi,
00099 kDptoKKPi,
00100
00101 kDptoPiPi0,
00102 kDptoKPi0,
00103 kDptoKsK,
00104 kDptoPiPiPi,
00105 kDptoPiPi0Pi0,
00106 kDptoKsKsPi,
00107 kDptoKsKPi0,
00108 kDptoKsKsK,
00109 kDptoPiPiPiPi0,
00110 kDptoKsPiPi0Pi0,
00111 kDptoKsKplusPiPi,
00112 kDptoKsKminusPiPi,
00113 kDptoKKPiPi0,
00114 kDptoPiPiPiPiPi,
00115 kDptoKPiPiPiPi,
00116 kDptoPiEta,
00117 kDptoKsPiEta,
00118
00119 kDstoKsK = 400,
00120 kDstoKKPi,
00121 kDstoKsKPi0,
00122 kDstoKsKsPi,
00123 kDstoKKPiPi0,
00124 kDstoKsKplusPiPi,
00125 kDstoKsKminusPiPi,
00126 kDstoKKPiPiPi,
00127
00128 kDstoPiPi0 = 420,
00129 kDstoPiPiPi,
00130 kDstoPiPiPiPi0,
00131 kDstoPiPiPiPiPi,
00132 kDstoPiPiPiPiPiPi0,
00133 kDstoPiPiPiPi0Pi0,
00134
00135 kDstoPiEta = 440,
00136 kDstoPiPi0Eta,
00137 kDstoPiPiPiEta,
00138
00139 kDstoPiEtaPiPiPi0 = 450,
00140 kDstoPiPi0EtaPiPiPi0,
00141 kDstoPiPiPiEtaPiPiPi0,
00142
00143 kDstoPiEPPiPiEta = 460,
00144 kDstoPiPi0EPPiPiEta,
00145
00146 kDstoPiEPPiPiEtaPiPiPi0 = 470,
00147 kDstoPiPi0EPPiPiEtaPiPiPi0,
00148
00149 kDstoPiEPRhoGam = 480,
00150 kDstoPiPi0EPRhoGam,
00151
00152 kDstoKsPi = 500,
00153 kDstoKsPiPi0,
00154 kDstoKPiPi,
00155 kDstoKPiPiPi0,
00156 kDstoKKK,
00157
00158 kUnknown = 10000
00159
00160 };
00161
00162
00163 DecayMode decayMode() const {return m_decayMode;}
00164 SelType type() const {return m_type;}
00165 double beamE() const {return m_beamE;}
00166 double mass() const {return m_mass;}
00167 double mBC() const {return m_mBC;}
00168 double deltaE() const {return m_deltaE;}
00169 int charge() const {return m_charge;}
00170 int charm() const {return m_charm;}
00171 int numOfChildren() const{return m_numOfChildren;}
00172 HepLorentzVector p4() const {return m_p4;}
00173 vector< double > vKsMass() const {return m_ksmass;}
00174 vector< double > vFitChi2() const {return m_vfitchi2;}
00175 vector< double > vFitDecayLength() const {return m_vfitlength;}
00176 vector< double > vFitDecayLengthError() const {return m_vfiterror;}
00177
00178
00179 SmartRefVector<EvtRecTrack> tracks(){ return m_tracks;}
00180 SmartRefVector<EvtRecTrack> showers(){ return m_showers;}
00181 SmartRefVector<EvtRecTrack> otherTracks(){ return m_otherTracks;}
00182 SmartRefVector<EvtRecTrack> otherShowers(){ return m_otherShowers;}
00183 SmartRefVector<EvtRecTrack> pionId(){ return m_pionId;}
00184 SmartRefVector<EvtRecTrack> kaonId(){ return m_kaonId;}
00185
00186
00187 void setdecayMode(DecayMode decayMode) {m_decayMode=decayMode;}
00188 void settype(SelType type) {m_type=type;}
00189 void setbeamE(double beamE) {m_beamE=beamE;}
00190 void setmass(double mass) {m_mass=mass;}
00191 void setmBC(double mBC) {m_mBC=mBC;}
00192 void setdeltaE(double deltaE) {m_deltaE=deltaE;}
00193 void setcharge(int charge) {m_charge=charge;}
00194 void setcharm(int charm) {m_charm=charm;}
00195 void setnumOfChildren(int numOfChildren) {m_numOfChildren=numOfChildren;}
00196 void setp4(HepLorentzVector p4) {m_p4=p4;}
00197
00198 void addToFitInfo(double ksmass, double chi2, double length, double error) {
00199 m_ksmass.push_back(ksmass);
00200 m_vfitchi2.push_back(chi2);
00201 m_vfitlength.push_back(length);
00202 m_vfiterror.push_back(error);
00203 }
00204
00205 void addTrack(const SmartRef<EvtRecTrack> track) {
00206 m_tracks.push_back(track);}
00207 void addShower(const SmartRef<EvtRecTrack> shower) {
00208 m_showers.push_back(shower);}
00209 void addOtherTrack(const SmartRef<EvtRecTrack> track) {
00210 m_otherTracks.push_back(track);}
00211 void addOtherShower(const SmartRef<EvtRecTrack> shower){
00212 m_otherShowers.push_back(shower);}
00213 void addPionId(const SmartRef<EvtRecTrack> pionId){
00214 m_pionId.push_back(pionId);}
00215 void addKaonId(const SmartRef<EvtRecTrack> kaonId){
00216 m_kaonId.push_back(kaonId);}
00217
00218
00219 void setTracks(const SmartRefVector<EvtRecTrack> tracks) {
00220 m_tracks=tracks;}
00221 void setShowers(const SmartRefVector<EvtRecTrack> showers) {
00222 m_showers=showers;}
00223 void setOtherTracks(const SmartRefVector<EvtRecTrack> tracks) {
00224 m_otherTracks=tracks;}
00225 void setOtherShowers(const SmartRefVector<EvtRecTrack> showers){
00226 m_otherShowers=showers;}
00227 void setPionId(const SmartRefVector<EvtRecTrack> pionId){
00228 m_pionId=pionId;}
00229 void setKaonId(const SmartRefVector<EvtRecTrack> kaonId){
00230 m_kaonId=kaonId;}
00231
00232
00233 private:
00234 DecayMode m_decayMode;
00235 SelType m_type;
00236 double m_beamE;
00237 double m_mass;
00238 double m_mBC;
00239 double m_deltaE;
00240 int m_charge;
00241 int m_charm;
00242 unsigned int m_numOfChildren;
00243 HepLorentzVector m_p4;
00244 vector< double > m_ksmass;
00245 vector< double > m_vfitchi2;
00246 vector< double > m_vfitlength;
00247 vector< double > m_vfiterror;
00248 SmartRefVector<EvtRecTrack> m_tracks;
00249 SmartRefVector<EvtRecTrack> m_showers;
00250 SmartRefVector<EvtRecTrack> m_otherTracks;
00251 SmartRefVector<EvtRecTrack> m_otherShowers;
00252 SmartRefVector<EvtRecTrack> m_pionId;
00253 SmartRefVector<EvtRecTrack> m_kaonId;
00254
00255 };
00256
00257
00258 typedef ObjectVector<EvtRecDTag> EvtRecDTagCol;
00259 typedef EvtRecDTagCol::iterator EvtRecDTagIterator;
00260 #endif
00261