00001 #ifndef ATLFAST_TAUTAGGER_H 00002 #define ATLFAST_TAUTAGGER_H 00003 00004 #include <string> 00005 #include <vector> 00006 00007 #include "GaudiKernel/Algorithm.h" 00008 00009 #include "AtlfastEvent/Tau.h" 00010 #include "AtlfastEvent/TauContainer.h" 00011 #include "AtlfastEvent/Interpolator.h" 00012 00013 #include "AtlfastUtils/TesIO.h" 00014 00015 #include "CLHEP/Random/RandFlat.h" 00016 00017 namespace Atlfast 00018 { 00019 00020 class TauTagger : public Algorithm { 00021 00022 public: 00023 00031 TauTagger(const std::string& name, ISvcLocator* pSvcLocator); 00032 ~TauTagger(); 00038 StatusCode initialize(); 00039 00045 StatusCode execute(); 00046 00052 StatusCode finalize(); 00053 00054 inline RandFlat* randFlat( ) { return m_randFlat;} 00055 00056 double GetIDEff(TauContainer::const_iterator); 00057 void makeInterpolator(Interpolator* &intptr, std::string intname, bool contbounds); 00058 00059 private: 00060 00061 HepRandomEngine* m_randEngine; 00062 RandFlat* m_randFlat; 00063 00064 TesIO* m_tesIO; 00065 00066 std::vector< std::vector<double> > m_IDEff_sig; 00067 std::vector< std::vector<double> > m_IDEff_bg; 00068 00070 std::string m_tau1P_EffFile; 00071 std::string m_tau1P_RejFile; 00072 std::string m_tau2P_EffFile; 00073 std::string m_tau2P_RejFile; 00074 std::string m_tau3P_EffFile; 00075 std::string m_tau3P_RejFile; 00076 00077 00078 bool m_interpolateTauIdent; 00079 00080 std::string m_tauLocation; 00081 00082 // Interpolator for calculating appropriate efficiency 00083 Interpolator* m_tau1P_eff_interpolator; 00084 Interpolator* m_tau1P_rej_interpolator; 00085 Interpolator* m_tau2P_eff_interpolator; 00086 Interpolator* m_tau2P_rej_interpolator; 00087 Interpolator* m_tau3P_eff_interpolator; 00088 Interpolator* m_tau3P_rej_interpolator; 00089 00090 }; 00091 } 00092 00093 #endif // ATLFAST_TAUTAGGER_H