00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024 #ifndef ATLFAST_B
00025 #define ATLFAST_B
00026
00027
00028 #ifndef STD_VECTOR_H
00029 #include <vector>
00030 #define STD_VECTOR_H
00031 #endif
00032
00033 #ifndef STD_STRING_H
00034 #include <string>
00035 #define STD_STRING_H
00036 #endif
00037
00038
00039 #ifndef GAUDIKERNEL_ALGORITHM_H
00040 #include "GaudiKernel/Algorithm.h"
00041 #define GAUDIKERNEL_ALGORITHM_H
00042 #endif
00043
00044 #include "CLHEP/Random/RandomEngine.h"
00045 #include "CLHEP/Random/RandFlat.h"
00046
00047 #include "AtlfastEvent/Interpolator.h"
00048 #include "AtlfastEvent/CollectionDefs.h"
00049
00050 class MsgStream;
00051 class ISvcLocator;
00052
00053 namespace Atlfast {
00054
00055
00056 class TesIO;
00057 class Jet;
00058
00059 using std::string;
00060
00070 class AtlfastB : public Algorithm
00071 {
00072
00073 private:
00074
00103 int m_atlfBNSet;
00104
00105 double m_epsib;
00106 double m_epsic;
00107 double m_epsij;
00108 double m_epsitau;
00109
00110 double m_epsitau1P;
00111 double m_epsitau3P;
00112
00113 string m_Tau1P3Pcorrfile;
00114
00115 double m_corr1P3P[20];
00116 double m_corr_prob1P[6][20];
00117 double m_corr_prob3P[6][20];
00118
00119
00120
00121 string m_corrjfile;
00122 string m_corrcfile;
00123
00124 bool m_useTDRBParam;
00125 bool m_interpolateBTagging;
00126
00127 double m_epsilonBjet;
00128
00134 double m_correctionFactor;
00135
00136 Interpolator* m_beff_interpolator;
00137 Interpolator* m_brejpu_interpolator;
00138 Interpolator* m_brejnpu_interpolator;
00139 Interpolator* m_brejtau_interpolator;
00140 Interpolator* m_brejc_interpolator;
00141
00142
00143 double m_corrj[5][15];
00144 double m_corrc[5][15];
00145
00146 int m_indtauveto;
00147
00148
00149
00150
00151 bool m_AtlfBJetSwitch;
00152 bool m_AtlfCalSwitch;
00153 bool m_AtlfTauSwitch;
00154 bool m_AtlfTauVetoSwitch;
00155 bool m_AtlfTrigMuoSwitch;
00156 bool m_AtlfTau1P3PSwitch;
00157
00158 bool m_corrtaumom;
00159
00160
00161 TesIO* m_tesIO;
00162
00163 HepRandomEngine* m_pRandomEngine;
00164 RandFlat* m_pRandFlatGenerator;
00165
00166 const JetCollection* m_Jets;
00167 JetCollection::const_iterator m_it;
00168
00169 Interpolator* m_taueff_interpolator;
00170 Interpolator* m_taurej_interpolator;
00171
00172
00173 std::string m_inputLocation;
00174
00175 std::string m_mcLocation;
00176
00177
00178
00179 public:
00180
00182 AtlfastB( const std::string& name, ISvcLocator* pSvcLocator ) ;
00183
00184 virtual ~AtlfastB();
00185
00186
00187 StatusCode atlfBje_TDR();
00188 StatusCode atlfBje();
00189 StatusCode atlfCal();
00190 StatusCode atlfTau(double epsitau);
00191 StatusCode atlfTau1P3P();
00192 StatusCode atlfTauVeto(int ind);
00193 StatusCode atlfTrigMuo();
00194
00199 StatusCode tautag(double pt, double eta, double efftau, double &rjet, int &iflag);
00200
00201
00208 StatusCode tauveto(double pt, int ind, double &efftau, double &effjet);
00209
00211 void makeInterpolator(Interpolator* &intptr, string intname, bool contbounds);
00212
00213
00214 double fitcoreb(double pt);
00215 double fitcoreu(double pt);
00216
00217
00219 StatusCode initialize();
00221 StatusCode execute();
00223 StatusCode finalize();
00224
00225 };
00226
00227
00228 }
00229
00230 #endif