00001 #ifndef TAUREC_TAUPI0CLUSTERCREATOR_H
00002 #define TAUREC_TAUPI0CLUSTERCREATOR_H
00003
00004 #include <string>
00005 #include <vector>
00006 #include "tauRecTools/TauRecToolBase.h"
00007 #include "xAODPFlow/PFOAuxContainer.h"
00008
00009 using std::vector;
00010
00019 class TauPi0ClusterCreator : virtual public TauRecToolBase {
00020 public:
00021 TauPi0ClusterCreator(const std::string& name) ;
00022 ASG_TOOL_CLASS2(TauPi0ClusterCreator, TauRecToolBase, ITauToolBase);
00023 virtual ~TauPi0ClusterCreator();
00024
00025 virtual StatusCode initialize();
00026 virtual StatusCode finalize();
00027 virtual StatusCode eventInitialize();
00028 virtual StatusCode execute(xAOD::TauJet& pTau);
00029 virtual StatusCode eventFinalize();
00030
00031 virtual void print() const { }
00032
00033
00034 private:
00035
00036
00038 float getEM1CoreFrac( const xAOD::CaloCluster* );
00039
00041 vector<int> getNPosECells( const xAOD::CaloCluster* );
00042
00043 std::map<unsigned, xAOD::CaloCluster*> getClusterToShotMap(
00044 const std::vector<const xAOD::PFO*> shotVector,
00045 const xAOD::CaloClusterContainer& pPi0ClusterContainer,
00046 const xAOD::TauJet &pTau);
00047
00048 std::vector<unsigned> getShotsMatchedToCluster(
00049 const std::vector<const xAOD::PFO*> shotVector,
00050 std::map<unsigned, xAOD::CaloCluster*> clusterToShotMap,
00051 xAOD::CaloCluster* pPi0Cluster);
00052
00053 int getNPhotons( const std::vector<const xAOD::PFO*> ,
00054 std::vector<unsigned> );
00055
00057 vector<float> get1stEtaMomWRTCluster( const xAOD::CaloCluster* );
00058
00060 vector<float> get2ndEtaMomWRTCluster(const xAOD::CaloCluster* );
00061
00063 bool setHadronicClusterPFOs(xAOD::TauJet& pTau);
00064
00066
00067 std::string m_inputPi0ClusterContainerName;
00068
00070
00071 std::string m_outputPi0ClusterContainerName;
00072
00074 xAOD::PFOContainer* m_neutralPFOContainer;
00075 std::string m_neutralPFOContainerName;
00076 xAOD::PFOAuxContainer* m_neutralPFOAuxStore;
00077
00079 xAOD::PFOContainer* m_hadronicClusterPFOContainer;
00080 std::string m_hadronicClusterPFOContainerName;
00081 xAOD::PFOAuxContainer* m_hadronicClusterPFOAuxStore;
00082
00083
00085 double m_clusterEtCut;
00086
00088 bool m_AODmode;
00089
00091 xAOD::CaloClusterContainer* m_pOutputPi0CaloClusterContainer;
00092
00093 };
00094
00095 #endif
00096