00001 #ifndef QUICK_ANA__OUTPUT_TOOL_H
00002 #define QUICK_ANA__OUTPUT_TOOL_H
00003
00004 #include <QuickAna/Global.h>
00005
00006 #include <AsgTools/AsgTool.h>
00007 #include <QuickAna/IOutputTool.h>
00008 #include <QuickAna/xAODInclude.h>
00009 #include <QuickAna/xAODEventSelect.h>
00010 #include <xAODCore/ShallowAuxContainer.h>
00011 #include <xAODCore/ShallowAuxInfo.h>
00012 #include <xAODMissingET/MissingETAuxContainer.h>
00013
00014 namespace ana
00015 {
00016
00032 class OutputCopyTool : public IOutputToolOld, public asg::AsgTool
00033 {
00034
00035 ASG_TOOL_CLASS(OutputCopyTool, IOutputToolOld)
00036
00037 public:
00038
00040 OutputCopyTool(const std::string& name, const std::string& contName="");
00041
00043 virtual StatusCode initialize() override;
00044
00047 virtual StatusCode write(xAOD::TEvent* outputStore,
00048 const std::string& suffixNotUsed = "") override;
00049
00050 protected:
00051
00053 std::string m_contName;
00054
00055 };
00056
00057
00058
00073 template<class ContainerType, class AuxType = xAOD::ShallowAuxContainer>
00074 class OutputTool : public IOutputToolOld,
00075 public asg::AsgTool
00076 {
00077
00078
00079 ASG_TOOL_CLASS(OutputTool, IOutputToolOld)
00080
00081 public:
00082
00084 OutputTool(const std::string& name, const std::string& contBaseName="");
00085
00087 virtual StatusCode initialize() override;
00088
00092 virtual StatusCode write(xAOD::TEvent* outputStore,
00093 const std::string& suffix = "") override;
00094
00095 protected:
00096
00098 std::string m_contBaseName;
00099
00100 };
00101
00102
00103
00106 typedef OutputTool<xAOD::EventInfo, xAOD::ShallowAuxInfo> EventInfoOutputTool;
00107 typedef OutputTool<EventSelectType, xAOD::ShallowAuxInfo> EventSelectOutputTool;
00108 typedef OutputTool<xAOD::ElectronContainer> ElectronOutputTool;
00109 typedef OutputTool<xAOD::MuonContainer> MuonOutputTool;
00110 typedef OutputTool<xAOD::TauJetContainer> TauOutputTool;
00111 typedef OutputTool<xAOD::JetContainer> JetOutputTool;
00112 typedef OutputTool<xAOD::PhotonContainer> PhotonOutputTool;
00113 typedef OutputTool<xAOD::MissingETContainer, xAOD::MissingETAuxContainer>
00114 MetOutputTool;
00116
00117 }
00118
00119 #include <QuickAna/OutputTool.icc>
00120
00121 #endif