00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020 #ifndef ATLFAST_JET_H
00021 #define ATLFAST_JET_H
00022
00023
00024 #include "CLHEP/Vector/LorentzVector.h"
00025
00026
00027
00028
00029
00030
00031 #ifndef ATLFAST_IAODNAVIGATION_H
00032 #include "AtlfastEvent/IAODNavigation.h"
00033 #endif
00034
00035
00036 #ifndef ATLFAST_CLUSTER_H
00037 #include "AtlfastEvent/ICluster.h"
00038 #endif
00039
00040 #ifndef ATLFAST_IAOOVISITOR_H
00041 #include "AtlfastEvent/IAOOvisitor.h"
00042 #endif
00043
00044
00045
00046
00047
00048
00049
00050 #ifndef ATLFAST_AODNAVIGATIONIMP_H
00051 #include "AtlfastEvent/AODNavigationImp.h"
00052 #endif
00053
00054 #include <string>
00055 #include <vector>
00056 #include <map>
00057
00058 namespace Atlfast {
00059
00060 class ReconstructedParticle;
00068
00069 class Jet :
00070 virtual public IAODNavigation,
00071 protected AODNavigationImp{
00072
00073 private:
00074
00076 HepLorentzVector m_momentum ;
00077
00078 int m_pdg_id;
00079 bool m_tagged;
00080
00081 double m_dRbquark;
00082 double m_dRcquark;
00083 double m_dRhadtau;
00084
00085 std::map<std::string,double> m_isBTagged;
00086 std::map<std::string,double> m_bCorrFactors;
00087
00088 std::map<std::string,double> m_lCorrFactors;
00089
00090 std::map<std::string,double> m_isTauTagged;
00091 std::map<std::string,double> m_tauCorrFactors;
00092
00093 std::vector<const ReconstructedParticle*> m_muons;
00094 std::vector<const ICluster*> m_clusters;
00095
00096 public:
00097
00098
00099
00100 Jet():AODNavigationImp() {}
00101
00102 explicit Jet( const ICluster& cluster);
00103 Jet( const HepLorentzVector& vec, ICluster& cluster );
00104 Jet(const Jet&);
00105 Jet& operator=(const Jet&);
00106
00107 void setMomentum(const HepLorentzVector& vec);
00108 void addMuon(const ReconstructedParticle*);
00109
00110 virtual HepLorentzVector momentum() const;
00111 virtual double eta() const;
00112 virtual double phi() const;
00113 virtual double pT() const;
00114 virtual double eT() const;
00115 virtual double mT() const;
00116 virtual IKinematic* clone() const;
00117
00118 virtual double px() const;
00119 virtual double py() const;
00120 virtual double pz() const;
00121
00122 double e() const;
00123
00124
00125 void setPdg_id(int);
00126 int pdg_id() const;
00127
00128
00129 void setBTagged(std::string tagname);
00130 bool isBTagged() const;
00131 bool isBTagged(std::string tagname) const;
00132 void setBTagCorrFactor(std::string tagname, double);
00133 double bTagCorrFactor() const;
00134 double bTagCorrFactor(std::string tagname) const;
00135
00136
00137 void setLightTagCorrFactor(std::string tagname, double);
00138 double lTagCorrFactor() const;
00139 double lTagCorrFactor(std::string tagname) const;
00140
00141
00142 void setTauTagged(std::string tagname);
00143 bool isTauTagged() const;
00144 bool isTauTagged(std::string tagname) const;
00145 void setTauTagCorrFactor(std::string tagname, double);
00146 double tauTagCorrFactor() const;
00147 double tauTagCorrFactor(std::string tagname) const;
00148
00149
00150 void setdRbquark(double);
00151 double getdRbquark() const;
00152 void setdRcquark(double);
00153 double getdRcquark() const;
00154 void setdRhadtau(double);
00155 double getdRhadtau() const;
00156
00157
00158 virtual void accept(IAOOvisitor* iaPtr) const {iaPtr->process(this);}
00159 virtual void print(const std::string& coor, std::string t="" ) const;
00160
00161 virtual void fillToken( INavigationToken & ) const;
00162 virtual void fillToken( INavigationToken &, const boost::any&) const{};
00163 };
00164 }
00165
00166
00167 #endif
00168
00169
00170
00171
00172
00173
00174
00175
00176
00177
00178
00179