00001 // ================================================ 00002 // AtlfastB class description 00003 // ================================================ 00004 // 00005 // THIS TEXT TO BE REPLACED BY ATLAS STANDARD FORMAT 00006 // 00007 // 00008 // This version.... 00009 // 00010 // 00011 // Namespace Atlfast:: 00012 // 00013 // class: AtlfastB 00014 // 00015 //It is based upon atlfastb.f by E.Richter-Was 00016 // 00017 // Author : Mireia Dosil 00018 // 00019 // 00020 // Description: 00021 // 00022 // Algorithm for jet tagging and jet tagging efficiencies computation 00023 // Translated into c++ athena from the fortran code atlfastb.f 00024 // 00025 // 00026 // ................................................................ 00027 // 00028 00029 #ifndef ATLFAST_B 00030 #define ATLFAST__B 00031 00032 // STL 00033 #ifndef STD_VECTOR_H 00034 #include <vector> 00035 #define STD_VECTOR_H 00036 #endif 00037 00038 #ifndef STD_STRING_H 00039 #include <string> 00040 #define STD_STRING_H 00041 #endif 00042 00043 // Gaudi 00044 #ifndef GAUDIKERNEL_ALGORITHM_H 00045 #include "GaudiKernel/Algorithm.h" 00046 #define GAUDIKERNEL_ALGORITHM_H 00047 #endif 00048 //*************************************************************** 00049 // AtlfastB class declaration 00050 // 00051 // A "Gaudi algorithm" is something which gets scheduled and controlled 00052 // by the framework. In its simplest definition it is something which 00053 // - gets clled for each event 00054 // - can get anything it wants out of the Transient Event Store" 00055 // - can put anything it makes into the store. 00056 00057 // 00058 //**************************************************************** 00059 class MsgStream; 00060 class ISvcLocator; 00061 00062 00063 00064 class RandFlat; 00065 class HepRandomEngine; 00066 00067 namespace Atlfast { 00074 class TesIO; 00075 class Jet; 00076 00077 using std::string; 00078 class AtlfastB : public Algorithm 00079 { 00080 00081 private: 00082 00083 00084 //-------------------------------- 00085 // Parameters of this algorithm 00086 // (descriptions above) 00087 //-------------------------------- 00088 00089 00090 // Parameters for the different atlfastB methods 00091 // parametrization prepared by E. Ros, updated November'99, low luminosity 00092 // apply randomized b-tagging with efficiencies specified 00093 // by one of given sets, pT dependent correction factors included 00094 // m_atlfBNSet=1 --> m_epsib=0.5 00095 // m_atlfBNSet=2 --> m_epsib=0.6 00096 // m_atlfBNSet=3 --> m_epsib=0.7 00097 // 00098 // canonical for low luminosity performance,no pT dependence 00099 // m_atlfBNSet=5 --> m_epsib=0.60 epsi_c=0.10, R=100 00100 // 00101 // Inner Detector TDR, April'97, low luminosity, pT dependent correction 00102 // factors included, parametrization prepared by E. Ros 00103 // m_atlfBNSet=11 --> m_epsib=0.33 00104 // m_atlfBNSet=12 --> m_epsib=0.43 00105 // m_atlfBNSet=13 --> m_epsib=0.53 00106 // m_atlfBNSet=14 --> m_epsib=0.624 00107 // 00108 00109 00110 int m_atlfBNSet; 00111 00112 //Jet tagging efficiencies 00113 double m_epsib; 00114 double m_epsic; 00115 double m_epsij; 00116 double m_epsitau; 00117 00118 //input files for jet correction factors 00119 00120 string m_corrjfile; 00121 string m_corrcfile; 00122 00123 //jet correction factors 00124 double m_corrj[5][15]; 00125 double m_corrc[5][15]; 00126 00127 // 00128 int m_indtauveto; 00129 00130 // for an analysis where you want to reject taus use atlfVeto 00131 // apply veto for tau-jet 00132 // (m_indtauveto=1): tau-background fixed to 5%, atlfVeto gives the corresponding jet-efficiency 00133 // (m_indtauveto=2): jet-efficiency fixed at 90%, atlfVeto gives the corresponding tau-background 00134 00135 00136 //switch for the different methods 00137 bool m_AtlfBJetSwitch; 00138 bool m_AtlfCalSwitch; 00139 bool m_AtlfTauSwitch; 00140 bool m_AtlfTauVetoSwitch; 00141 bool m_AtlfTrigMuoSwitch; 00142 00143 //other variables 00144 00145 bool m_notInit; 00146 TesIO* m_tesIO; 00147 00148 HepRandomEngine* m_pRandomEngine; 00149 RandFlat* m_pRandFlatGenerator; 00150 00151 std::vector<Jet*> m_Jets; 00152 std::vector<Jet*>::const_iterator m_it; 00153 00154 00155 00156 00157 //-------------------------------------------------- 00158 // Paths in the Transient Event store to get/put things 00159 // These are currently set in member variables so that 00160 // they can be overwritten by the job options service 00161 //-------------------------------------------------- 00162 00163 std::string m_inputLocation ; 00164 std::string m_outputLocation ; 00165 00166 public: 00167 00168 //------------------------- 00169 // Constructors/Destructors 00170 // 00171 // Gaudi requires that the constructor takes certain arguments 00172 // (and passes them directly to the constructor of the base class) 00173 //------------------------- 00174 00175 AtlfastB( const std::string& name, ISvcLocator* pSvcLocator ) ; 00176 virtual ~AtlfastB(); 00177 00178 00179 00180 00181 //------------------------------- 00182 // helper 00183 //------------------------------- 00184 00185 00186 00187 StatusCode atlfBje(int nset); 00188 StatusCode atlfCal(); 00189 StatusCode atlfTau(double epsitau); 00190 StatusCode tautag(double pt, double eta, double efftau, double &rjet, int &iflag); 00191 StatusCode atlfTauVeto(int ind); 00192 StatusCode tauveto(double pt, int ind, double &efftau, double &effjet); 00193 StatusCode atlfTrigMuo(); 00194 00195 00196 double fitcoreb(double pt); 00197 double fitcoreu(double pt); 00198 00199 //------------------------------------------------------ 00200 // Methods used by Gaudi to run the algorithm 00201 //------------------------------------------------------ 00202 00203 StatusCode initialize() ; 00204 StatusCode execute() ; 00205 StatusCode finalize() ; 00206 00207 }; 00208 00209 00210 } //end of namespace bracket 00211 00212 #endif