00001 #ifndef MANTREESFRAMEBASE_MEVENTTOOL_H__ 00002 #define MANTREESFRAMEBASE_MEVENTTOOL_H__ 00003 00004 #include "core/include/SError.h" 00005 #include "plug-ins/include/SToolBase.h" 00006 00008 #include <vector> 00009 #include <map> 00010 #include <string> 00011 #include <set> 00012 00014 #include "manTree/manTree/MInDetTrack.h" 00015 #include "manTree/manTree/MElectron.h" 00016 #include "manTree/manTree/MJet.h" 00017 #include "manTree/manTree/MMuon.h" 00018 #include "manTree/manTree/MVertex.h" 00019 #include "manTree/manTree/MMissingEt.h" 00020 #include "manTree/manTree/MEventInfo.h" 00021 #include "manTree/manTree/MTriggerChain.h" 00022 #include "manTree/manTree/MTriggerChainConf.h" 00023 #include "manTree/manTree/MTriggerChainResult.h" 00024 #include "manTree/manTree/MTruthParticle.h" 00025 #include "manTree/manTree/MInDetTrack.h" 00026 #include "manTree/manTree/MPDFInfo.h" 00027 00036 class MEventTool : public SToolBase { 00037 00038 public: 00039 00041 MEventTool( SCycleBase* parent ); 00042 00044 virtual ~MEventTool(); 00045 00047 void connectManTree(const SInputData& data) throw(SError); 00048 00050 00052 std::vector<manchester::MElectron>* getElectrons() const; 00054 std::vector<manchester::MMuon>* getMuons() const; 00056 std::vector<manchester::MMuon>* getStacoMuons() const; 00058 std::vector<manchester::MJet>* getJets() const; 00060 std::vector<manchester::MJet>* getAODJets() const; 00062 std::vector<manchester::MVertex>* getVertices() const; 00064 std::vector<manchester::MInDetTrack>* getIDTracks() const; 00066 std::vector<manchester::MTriggerChain>* getTriggerChains() const; 00068 std::vector<manchester::MTriggerChainResult>* getTriggerChainResults() const; 00070 const manchester::MTriggerChainConf* getTriggerChainConf() const; 00071 00073 const manchester::MMissingEt* getMET() const; 00075 manchester::MMissingEt* getMET_notconst(); 00076 00078 const manchester::MMissingEt* getAltMET(const std::string name) const; 00079 00081 const manchester::MEventInfo* getEventInfo() const; 00082 00084 std::vector<manchester::MJet>* getMCParticleJets() const; 00086 std::vector<manchester::MTruthParticle>* getMCTruthParticles() const; 00088 const manchester::MPDFInfo* getPDFInfo() const; 00089 00091 void setUserElectrons(unsigned int cut, std::vector<const manchester::MElectron*> selem); 00092 00094 const std::vector<const manchester::MElectron*>* getUserElectrons(unsigned int cut) const; 00095 00097 void setUserMuons(unsigned int cut, std::vector<const manchester::MMuon*> selmuon); 00098 00100 const std::vector<const manchester::MMuon*>* getUserMuons(unsigned int cut) const; 00101 00103 void setUserJets(unsigned int cut, std::vector<const manchester::MJet*> seljet); 00104 00106 const std::vector<const manchester::MJet*>* getUserJets(unsigned int cut) const; 00107 00109 void disableBranch(const std::string branchName) throw(SError); 00110 00111 protected: 00112 00114 void fillDefaultBranchSet(); 00115 00117 std::string m_inTreeName; 00118 00120 std::string m_metName2010; 00121 std::string m_metName2011; 00124 std::vector<manchester::MElectron>* m_em; 00126 std::vector<manchester::MJet>* m_jet; 00128 std::vector<manchester::MJet>* m_mcpart_jet; 00130 std::vector<manchester::MJet>* m_originalaod_jet; 00132 std::vector<manchester::MMuon>* m_muon; 00134 std::vector<manchester::MMuon>* m_stacomuon; 00135 00137 std::vector<manchester::MVertex>* m_vertex; 00139 std::vector<manchester::MTriggerChain>* m_trigChains; 00141 std::vector<manchester::MTriggerChainResult>* m_trigResults; 00143 const manchester::MTriggerChainConf* m_trigconf; 00145 std::vector<manchester::MTruthParticle>* m_truthpart; 00147 manchester::MMissingEt* m_met; 00149 std::map<std::string, manchester::MMissingEt*> m_met_map; 00151 manchester::MEventInfo* m_evinfo; 00153 std::vector<manchester::MInDetTrack>* m_idTrk; 00155 manchester::MPDFInfo* m_pdfinfo; 00156 00157 00159 std::map<unsigned int, std::vector<const manchester::MElectron*> > m_user_em; 00160 std::map<unsigned int, std::vector<const manchester::MMuon*> > m_user_muon; 00161 std::map<unsigned int, std::vector<const manchester::MJet*> > m_user_jet; 00162 00164 std::set<std::string> m_branchNames; 00165 00167 std::set<std::string> m_branchesToDisable; 00168 00170 ClassDef(MEventTool, 0); 00171 00172 };//class MEventTool 00173 00175 bool isHigherPt(const TLorentzVector* vec1, const TLorentzVector* vec2); 00176 00177 #endif //MANTREESFRAMEBASE_MEVENTTOOL_H__