00001 #ifndef TAUREC_EVENT_DATA_H
00002 #define TAUREC_EVENT_DATA_H
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014 #include <string>
00015 #include <map>
00016 #include <boost/any.hpp>
00017
00018 #include "xAODTau/TauJetContainer.h"
00019 #include "xAODTau/TauJetAuxContainer.h"
00020 #include "AsgTools/StatusCode.h"
00021
00030 class TauEventData
00031 {
00032 public:
00033
00036
00037 template <typename P>
00038 void setObject( std :: string key, P ptr );
00039
00040
00042
00043 bool hasObject( std :: string key ) const;
00044
00045
00048
00049 template <typename P>
00050 StatusCode getObject( std :: string key, P &ptr );
00051
00052 xAOD::TauJetContainer* xAODTauContainer=0;
00053 xAOD::TauJetAuxContainer *tauAuxContainer=0;
00054
00055
00056 const xAOD::JetContainer *seedContainer=0;
00057 unsigned int detailsNum=0;
00058
00059 std :: map<std :: string, boost :: any> m_ptrMap;
00060
00061 void clear();
00062
00063 inline void setInTrigger(bool v=true);
00064 inline bool inTrigger() const;
00065
00066 private:
00067
00068 bool m_inTrigger = false;
00069
00070 };
00071
00072
00073
00074
00075 template <typename P>
00076 inline void TauEventData :: setObject( std :: string key, P ptr )
00077 {
00078 m_ptrMap[key] = ptr;
00079 }
00080
00081
00082
00083
00084 template <typename P>
00085 inline StatusCode TauEventData :: getObject( std :: string key, P &ptr )
00086 {
00087 std :: map< std :: string, boost :: any> :: iterator p_it;
00088 p_it = m_ptrMap.find( key );
00089 if( p_it == m_ptrMap.end() )
00090 return StatusCode :: FAILURE;
00091
00092 ptr = boost :: any_cast<P>( (*p_it).second );
00093 return StatusCode :: SUCCESS;
00094 }
00095
00096
00097
00098
00099 inline bool TauEventData :: hasObject( std :: string key ) const
00100 {
00101 return m_ptrMap.find( key ) != m_ptrMap.end();
00102 }
00103
00104
00105
00106
00107
00108 inline void TauEventData :: clear(){
00109 xAODTauContainer=0;
00110 tauAuxContainer=0;
00111 seedContainer=0;
00112 detailsNum=0;
00113 m_ptrMap.clear();
00114 }
00115
00116 inline void TauEventData :: setInTrigger(bool v) {
00117 m_inTrigger=v;
00118 }
00119
00120 inline bool TauEventData :: inTrigger() const{
00121 return m_inTrigger;
00122 }
00123
00124 #endif // TAU_CANDIDATE_DATA