00001 #include <TFile.h>
00002 #include <TMath.h>
00003 #include "RecoTauTag/RecoTau/interface/AntiElectronIDMVA3.h"
00004 #include "CommonTools/Utils/interface/TMVAZipReader.h"
00005
00006 AntiElectronIDMVA3::AntiElectronIDMVA3()
00007 : isInitialized_(kFALSE),
00008 methodName_("BDTG")
00009 {
00010 for ( unsigned i = 0; i < 16; ++i ) {
00011 fTMVAReader_[i] = 0;
00012 }
00013
00014 verbosity_ = 1;
00015 }
00016
00017 AntiElectronIDMVA3::~AntiElectronIDMVA3()
00018 {
00019 for ( unsigned i = 0; i < 16; ++i ) {
00020 if ( fTMVAReader_[i] ) delete fTMVAReader_[i];
00021 }
00022 }
00023
00024 enum { k_NoEleMatchwoGwoGSF_BL,
00025 k_NoEleMatchwoGwGSF_BL,
00026 k_NoEleMatchwGwoGSF_BL,
00027 k_NoEleMatchwGwGSF_BL,
00028 k_woGwoGSF_BL,
00029 k_woGwGSF_BL,
00030 k_wGwoGSF_BL,
00031 k_wGwGSF_BL,
00032 k_NoEleMatchwoGwoGSF_EC,
00033 k_NoEleMatchwoGwGSF_EC,
00034 k_NoEleMatchwGwoGSF_EC,
00035 k_NoEleMatchwGwGSF_EC,
00036 k_woGwoGSF_EC,
00037 k_woGwGSF_EC,
00038 k_wGwoGSF_EC,
00039 k_wGwGSF_EC};
00040
00041
00042 void AntiElectronIDMVA3::Initialize_from_file(const std::string& methodName,
00043 const std::string& oneProngNoEleMatch0Pi0woGSF_BL,
00044 const std::string& oneProngNoEleMatch0Pi0wGSF_BL,
00045 const std::string& oneProngNoEleMatch1Pi0woGSF_BL,
00046 const std::string& oneProngNoEleMatch1Pi0wGSF_BL,
00047 const std::string& oneProng0Pi0woGSF_BL,
00048 const std::string& oneProng0Pi0wGSF_BL,
00049 const std::string& oneProng1Pi0woGSF_BL,
00050 const std::string& oneProng1Pi0wGSF_BL,
00051 const std::string& oneProngNoEleMatch0Pi0woGSF_EC,
00052 const std::string& oneProngNoEleMatch0Pi0wGSF_EC,
00053 const std::string& oneProngNoEleMatch1Pi0woGSF_EC,
00054 const std::string& oneProngNoEleMatch1Pi0wGSF_EC,
00055 const std::string& oneProng0Pi0woGSF_EC,
00056 const std::string& oneProng0Pi0wGSF_EC,
00057 const std::string& oneProng1Pi0woGSF_EC,
00058 const std::string& oneProng1Pi0wGSF_EC)
00059 {
00060 for ( unsigned i = 0; i < 16; ++i ) {
00061 if ( fTMVAReader_[i] ) delete fTMVAReader_[i];
00062 }
00063
00064 isInitialized_ = kTRUE;
00065 methodName_ = methodName;
00066
00067 bookMVAs();
00068
00069 reco::details::loadTMVAWeights(fTMVAReader_[k_NoEleMatchwoGwoGSF_BL], "BDTG", oneProngNoEleMatch0Pi0woGSF_BL);
00070 reco::details::loadTMVAWeights(fTMVAReader_[k_NoEleMatchwoGwGSF_BL], "BDTG", oneProngNoEleMatch0Pi0wGSF_BL);
00071 reco::details::loadTMVAWeights(fTMVAReader_[k_NoEleMatchwGwoGSF_BL], "BDTG", oneProngNoEleMatch1Pi0woGSF_BL);
00072 reco::details::loadTMVAWeights(fTMVAReader_[k_NoEleMatchwGwGSF_BL], "BDTG", oneProngNoEleMatch1Pi0wGSF_BL);
00073 reco::details::loadTMVAWeights(fTMVAReader_[k_woGwoGSF_BL], "BDTG", oneProng0Pi0woGSF_BL);
00074 reco::details::loadTMVAWeights(fTMVAReader_[k_woGwGSF_BL], "BDTG", oneProng0Pi0wGSF_BL);
00075 reco::details::loadTMVAWeights(fTMVAReader_[k_wGwoGSF_BL], "BDTG", oneProng1Pi0woGSF_BL);
00076 reco::details::loadTMVAWeights(fTMVAReader_[k_wGwGSF_BL], "BDTG", oneProng1Pi0wGSF_BL);
00077 reco::details::loadTMVAWeights(fTMVAReader_[k_NoEleMatchwoGwoGSF_EC], "BDTG", oneProngNoEleMatch0Pi0woGSF_EC);
00078 reco::details::loadTMVAWeights(fTMVAReader_[k_NoEleMatchwoGwGSF_EC], "BDTG", oneProngNoEleMatch0Pi0wGSF_EC);
00079 reco::details::loadTMVAWeights(fTMVAReader_[k_NoEleMatchwGwoGSF_EC], "BDTG", oneProngNoEleMatch1Pi0woGSF_EC);
00080 reco::details::loadTMVAWeights(fTMVAReader_[k_NoEleMatchwGwGSF_EC], "BDTG", oneProngNoEleMatch1Pi0wGSF_EC);
00081 reco::details::loadTMVAWeights(fTMVAReader_[k_woGwoGSF_EC], "BDTG", oneProng0Pi0woGSF_EC);
00082 reco::details::loadTMVAWeights(fTMVAReader_[k_woGwGSF_EC], "BDTG", oneProng0Pi0wGSF_EC);
00083 reco::details::loadTMVAWeights(fTMVAReader_[k_wGwoGSF_EC], "BDTG", oneProng1Pi0woGSF_EC);
00084 reco::details::loadTMVAWeights(fTMVAReader_[k_wGwGSF_EC], "BDTG", oneProng1Pi0wGSF_EC);
00085
00086 }
00087
00088 void AntiElectronIDMVA3::Initialize_from_string(const std::string& methodName,
00089 const std::string& oneProngNoEleMatch0Pi0woGSF_BL,
00090 const std::string& oneProngNoEleMatch0Pi0wGSF_BL,
00091 const std::string& oneProngNoEleMatch1Pi0woGSF_BL,
00092 const std::string& oneProngNoEleMatch1Pi0wGSF_BL,
00093 const std::string& oneProng0Pi0woGSF_BL,
00094 const std::string& oneProng0Pi0wGSF_BL,
00095 const std::string& oneProng1Pi0woGSF_BL,
00096 const std::string& oneProng1Pi0wGSF_BL,
00097 const std::string& oneProngNoEleMatch0Pi0woGSF_EC,
00098 const std::string& oneProngNoEleMatch0Pi0wGSF_EC,
00099 const std::string& oneProngNoEleMatch1Pi0woGSF_EC,
00100 const std::string& oneProngNoEleMatch1Pi0wGSF_EC,
00101 const std::string& oneProng0Pi0woGSF_EC,
00102 const std::string& oneProng0Pi0wGSF_EC,
00103 const std::string& oneProng1Pi0woGSF_EC,
00104 const std::string& oneProng1Pi0wGSF_EC)
00105 {
00106 for ( unsigned i = 0; i < 16; ++i ) {
00107 if ( fTMVAReader_[i] ) delete fTMVAReader_[i];
00108 }
00109
00110 isInitialized_ = kTRUE;
00111 methodName_ = methodName;
00112
00113 bookMVAs();
00114
00115 fTMVAReader_[k_NoEleMatchwoGwoGSF_BL]->BookMVA(TMVA::Types::kBDT, oneProngNoEleMatch0Pi0woGSF_BL.data());
00116 fTMVAReader_[k_NoEleMatchwoGwGSF_BL]->BookMVA(TMVA::Types::kBDT, oneProngNoEleMatch0Pi0wGSF_BL.data());
00117 fTMVAReader_[k_NoEleMatchwGwoGSF_BL]->BookMVA(TMVA::Types::kBDT, oneProngNoEleMatch1Pi0woGSF_BL.data());
00118 fTMVAReader_[k_NoEleMatchwGwGSF_BL]->BookMVA(TMVA::Types::kBDT, oneProngNoEleMatch1Pi0wGSF_BL.data());
00119 fTMVAReader_[k_woGwoGSF_BL]->BookMVA(TMVA::Types::kBDT, oneProng0Pi0woGSF_BL.data());
00120 fTMVAReader_[k_woGwGSF_BL]->BookMVA(TMVA::Types::kBDT, oneProng0Pi0wGSF_BL.data());
00121 fTMVAReader_[k_wGwoGSF_BL]->BookMVA(TMVA::Types::kBDT, oneProng1Pi0woGSF_BL.data());
00122 fTMVAReader_[k_wGwGSF_BL]->BookMVA(TMVA::Types::kBDT, oneProng1Pi0wGSF_BL.data());
00123 fTMVAReader_[k_NoEleMatchwoGwoGSF_EC]->BookMVA(TMVA::Types::kBDT, oneProngNoEleMatch0Pi0woGSF_EC.data());
00124 fTMVAReader_[k_NoEleMatchwoGwGSF_EC]->BookMVA(TMVA::Types::kBDT, oneProngNoEleMatch0Pi0wGSF_EC.data());
00125 fTMVAReader_[k_NoEleMatchwGwoGSF_EC]->BookMVA(TMVA::Types::kBDT, oneProngNoEleMatch1Pi0woGSF_EC.data());
00126 fTMVAReader_[k_NoEleMatchwGwGSF_EC]->BookMVA(TMVA::Types::kBDT, oneProngNoEleMatch1Pi0wGSF_EC.data());
00127 fTMVAReader_[k_woGwoGSF_EC]->BookMVA(TMVA::Types::kBDT, oneProng0Pi0woGSF_EC.data());
00128 fTMVAReader_[k_woGwGSF_EC]->BookMVA(TMVA::Types::kBDT, oneProng0Pi0wGSF_EC.data());
00129 fTMVAReader_[k_wGwoGSF_EC]->BookMVA(TMVA::Types::kBDT, oneProng1Pi0woGSF_EC.data());
00130 fTMVAReader_[k_wGwGSF_EC]->BookMVA(TMVA::Types::kBDT, oneProng1Pi0wGSF_EC.data());
00131
00132 }
00133
00134 void AntiElectronIDMVA3::bookMVAs()
00135 {
00136
00137 GammadEta_ = 0.;
00138 GammadPhi_ = 0.;
00139 GammadPt_ = 0.;
00140
00141 Tau_EtaAtEcalEntrance_ = 0.;
00142 Tau_Pt_ = 0.;
00143 Tau_dCrackEta_ = 0.;
00144 Tau_dCrackPhi_ = 0.;
00145 Tau_EmFraction_ = 0.;
00146 Tau_NumGammaCands_ = 0.;
00147 Tau_HadrHoP_ = 0.;
00148 Tau_HadrEoP_ = 0.;
00149 Tau_VisMass_ = 0.;
00150 Tau_HadrMva_ = 0.;
00151 Tau_GammaEtaMom_ = 0.;
00152 Tau_GammaPhiMom_ = 0.;
00153 Tau_GammaEnFrac_ = 0.;
00154 Tau_GSFChi2_ = 0.;
00155 Tau_NumHitsVariable_ = 0.;
00156 Tau_GSFTrackResol_ = 0.;
00157 Tau_GSFTracklnPt_ = 0.;
00158 Tau_GSFTrackEta_ = 0.;
00159
00160 Elec_EtotOverPin_ = 0.;
00161 Elec_EgammaOverPdif_ = 0.;
00162 Elec_Fbrem_ = 0.;
00163 Elec_Chi2GSF_ = 0.;
00164 Elec_GSFNumHits_ = 0.;
00165 Elec_GSFTrackResol_ = 0.;
00166 Elec_GSFTracklnPt_ = 0.;
00167 Elec_GSFTrackEta_ = 0.;
00168
00169
00170
00171 TMVA::Reader *readerNoEleMatchwoGwoGSF_BL = new TMVA::Reader( "!Color:Silent:Error" );
00172 readerNoEleMatchwoGwoGSF_BL->AddVariable("Tau_EtaAtEcalEntrance",&Tau_EtaAtEcalEntrance_);
00173 readerNoEleMatchwoGwoGSF_BL->AddVariable("Tau_Pt",&Tau_Pt_);
00174 readerNoEleMatchwoGwoGSF_BL->AddVariable("Tau_EmFraction",&Tau_EmFraction_);
00175 readerNoEleMatchwoGwoGSF_BL->AddVariable("Tau_HadrHoP",&Tau_HadrHoP_);
00176 readerNoEleMatchwoGwoGSF_BL->AddVariable("Tau_HadrEoP",&Tau_HadrEoP_);
00177 readerNoEleMatchwoGwoGSF_BL->AddVariable("Tau_VisMass",&Tau_VisMass_);
00178 readerNoEleMatchwoGwoGSF_BL->AddVariable("Tau_dCrackEta",&Tau_dCrackEta_);
00179 readerNoEleMatchwoGwoGSF_BL->AddVariable("Tau_dCrackPhi",&Tau_dCrackPhi_);
00180 readerNoEleMatchwoGwoGSF_BL->SetVerbose(verbosity_);
00181
00182 TMVA::Reader *readerNoEleMatchwoGwGSF_BL = new TMVA::Reader( "!Color:Silent:Error" );
00183 readerNoEleMatchwoGwGSF_BL->AddVariable("Tau_EtaAtEcalEntrance",&Tau_EtaAtEcalEntrance_);
00184 readerNoEleMatchwoGwGSF_BL->AddVariable("Tau_Pt",&Tau_Pt_);
00185 readerNoEleMatchwoGwGSF_BL->AddVariable("Tau_EmFraction",&Tau_EmFraction_);
00186 readerNoEleMatchwoGwGSF_BL->AddVariable("Tau_HadrHoP",&Tau_HadrHoP_);
00187 readerNoEleMatchwoGwGSF_BL->AddVariable("Tau_HadrEoP",&Tau_HadrEoP_);
00188 readerNoEleMatchwoGwGSF_BL->AddVariable("Tau_VisMass",&Tau_VisMass_);
00189 readerNoEleMatchwoGwGSF_BL->AddVariable("Tau_HadrMva",&Tau_HadrMva_);
00190 readerNoEleMatchwoGwGSF_BL->AddVariable("Tau_GSFChi2",&Tau_GSFChi2_);
00191 readerNoEleMatchwoGwGSF_BL->AddVariable("(Tau_GSFNumHits - Tau_KFNumHits)/(Tau_GSFNumHits + Tau_KFNumHits)",&Tau_NumHitsVariable_);
00192 readerNoEleMatchwoGwGSF_BL->AddVariable("Tau_GSFTrackResol",&Tau_GSFTrackResol_);
00193 readerNoEleMatchwoGwGSF_BL->AddVariable("Tau_GSFTracklnPt",&Tau_GSFTracklnPt_);
00194 readerNoEleMatchwoGwGSF_BL->AddVariable("Tau_GSFTrackEta",&Tau_GSFTrackEta_);
00195 readerNoEleMatchwoGwGSF_BL->AddVariable("Tau_dCrackEta",&Tau_dCrackEta_);
00196 readerNoEleMatchwoGwGSF_BL->AddVariable("Tau_dCrackPhi",&Tau_dCrackPhi_);
00197 readerNoEleMatchwoGwGSF_BL->SetVerbose(verbosity_);
00198
00199 TMVA::Reader *readerNoEleMatchwGwoGSF_BL = new TMVA::Reader( "!Color:Silent:Error" );
00200 readerNoEleMatchwGwoGSF_BL->AddVariable("Tau_EtaAtEcalEntrance",&Tau_EtaAtEcalEntrance_);
00201 readerNoEleMatchwGwoGSF_BL->AddVariable("Tau_Pt",&Tau_Pt_);
00202 readerNoEleMatchwGwoGSF_BL->AddVariable("Tau_EmFraction",&Tau_EmFraction_);
00203 readerNoEleMatchwGwoGSF_BL->AddVariable("Tau_NumGammaCands",&Tau_NumGammaCands_);
00204 readerNoEleMatchwGwoGSF_BL->AddVariable("Tau_HadrHoP",&Tau_HadrHoP_);
00205 readerNoEleMatchwGwoGSF_BL->AddVariable("Tau_HadrEoP",&Tau_HadrEoP_);
00206 readerNoEleMatchwGwoGSF_BL->AddVariable("Tau_VisMass",&Tau_VisMass_);
00207 readerNoEleMatchwGwoGSF_BL->AddVariable("Tau_GammaEtaMom",&Tau_GammaEtaMom_);
00208 readerNoEleMatchwGwoGSF_BL->AddVariable("Tau_GammaPhiMom",&Tau_GammaPhiMom_);
00209 readerNoEleMatchwGwoGSF_BL->AddVariable("Tau_GammaEnFrac",&Tau_GammaEnFrac_);
00210 readerNoEleMatchwGwoGSF_BL->AddVariable("Tau_dCrackEta",&Tau_dCrackEta_);
00211 readerNoEleMatchwGwoGSF_BL->AddVariable("Tau_dCrackPhi",&Tau_dCrackPhi_);
00212 readerNoEleMatchwGwoGSF_BL->SetVerbose(verbosity_);
00213
00214 TMVA::Reader *readerNoEleMatchwGwGSF_BL = new TMVA::Reader( "!Color:Silent:Error" );
00215 readerNoEleMatchwGwGSF_BL->AddVariable("Tau_EtaAtEcalEntrance",&Tau_EtaAtEcalEntrance_);
00216 readerNoEleMatchwGwGSF_BL->AddVariable("Tau_Pt",&Tau_Pt_);
00217 readerNoEleMatchwGwGSF_BL->AddVariable("Tau_EmFraction",&Tau_EmFraction_);
00218 readerNoEleMatchwGwGSF_BL->AddVariable("Tau_NumGammaCands",&Tau_NumGammaCands_);
00219 readerNoEleMatchwGwGSF_BL->AddVariable("Tau_HadrHoP",&Tau_HadrHoP_);
00220 readerNoEleMatchwGwGSF_BL->AddVariable("Tau_HadrEoP",&Tau_HadrEoP_);
00221 readerNoEleMatchwGwGSF_BL->AddVariable("Tau_VisMass",&Tau_VisMass_);
00222 readerNoEleMatchwGwGSF_BL->AddVariable("Tau_HadrMva",&Tau_HadrMva_);
00223 readerNoEleMatchwGwGSF_BL->AddVariable("Tau_GammaEtaMom",&Tau_GammaEtaMom_);
00224 readerNoEleMatchwGwGSF_BL->AddVariable("Tau_GammaPhiMom",&Tau_GammaPhiMom_);
00225 readerNoEleMatchwGwGSF_BL->AddVariable("Tau_GammaEnFrac",&Tau_GammaEnFrac_);
00226 readerNoEleMatchwGwGSF_BL->AddVariable("Tau_GSFChi2",&Tau_GSFChi2_);
00227 readerNoEleMatchwGwGSF_BL->AddVariable("(Tau_GSFNumHits - Tau_KFNumHits)/(Tau_GSFNumHits + Tau_KFNumHits)",&Tau_NumHitsVariable_);
00228 readerNoEleMatchwGwGSF_BL->AddVariable("Tau_GSFTrackResol",&Tau_GSFTrackResol_);
00229 readerNoEleMatchwGwGSF_BL->AddVariable("Tau_GSFTracklnPt",&Tau_GSFTracklnPt_);
00230 readerNoEleMatchwGwGSF_BL->AddVariable("Tau_GSFTrackEta",&Tau_GSFTrackEta_);
00231 readerNoEleMatchwGwGSF_BL->AddVariable("Tau_dCrackEta",&Tau_dCrackEta_);
00232 readerNoEleMatchwGwGSF_BL->AddVariable("Tau_dCrackPhi",&Tau_dCrackPhi_);
00233 readerNoEleMatchwGwGSF_BL->SetVerbose(verbosity_);
00234
00235 TMVA::Reader *readerwoGwoGSF_BL = new TMVA::Reader( "!Color:Silent:Error" );
00236 readerwoGwoGSF_BL->AddVariable("Elec_EtotOverPin",&Elec_EtotOverPin_);
00237 readerwoGwoGSF_BL->AddVariable("Elec_EgammaOverPdif",&Elec_EgammaOverPdif_);
00238 readerwoGwoGSF_BL->AddVariable("Elec_Fbrem",&Elec_Fbrem_);
00239 readerwoGwoGSF_BL->AddVariable("Elec_Chi2GSF",&Elec_Chi2GSF_);
00240 readerwoGwoGSF_BL->AddVariable("Elec_GSFNumHits",&Elec_GSFNumHits_);
00241 readerwoGwoGSF_BL->AddVariable("Elec_GSFTrackResol",&Elec_GSFTrackResol_);
00242 readerwoGwoGSF_BL->AddVariable("Elec_GSFTracklnPt",&Elec_GSFTracklnPt_);
00243 readerwoGwoGSF_BL->AddVariable("Elec_GSFTrackEta",&Elec_GSFTrackEta_);
00244 readerwoGwoGSF_BL->AddVariable("Tau_EtaAtEcalEntrance",&Tau_EtaAtEcalEntrance_);
00245 readerwoGwoGSF_BL->AddVariable("Tau_Pt",&Tau_Pt_);
00246 readerwoGwoGSF_BL->AddVariable("Tau_EmFraction",&Tau_EmFraction_);
00247 readerwoGwoGSF_BL->AddVariable("Tau_HadrHoP",&Tau_HadrHoP_);
00248 readerwoGwoGSF_BL->AddVariable("Tau_HadrEoP",&Tau_HadrEoP_);
00249 readerwoGwoGSF_BL->AddVariable("Tau_VisMass",&Tau_VisMass_);
00250 readerwoGwoGSF_BL->AddVariable("Tau_dCrackEta",&Tau_dCrackEta_);
00251 readerwoGwoGSF_BL->AddVariable("Tau_dCrackPhi",&Tau_dCrackPhi_);
00252 readerwoGwoGSF_BL->SetVerbose(verbosity_);
00253
00254 TMVA::Reader *readerwoGwGSF_BL = new TMVA::Reader( "!Color:Silent:Error" );
00255 readerwoGwGSF_BL->AddVariable("Elec_EtotOverPin",&Elec_EtotOverPin_);
00256 readerwoGwGSF_BL->AddVariable("Elec_EgammaOverPdif",&Elec_EgammaOverPdif_);
00257 readerwoGwGSF_BL->AddVariable("Elec_Fbrem",&Elec_Fbrem_);
00258 readerwoGwGSF_BL->AddVariable("Elec_Chi2GSF",&Elec_Chi2GSF_);
00259 readerwoGwGSF_BL->AddVariable("Elec_GSFNumHits",&Elec_GSFNumHits_);
00260 readerwoGwGSF_BL->AddVariable("Elec_GSFTrackResol",&Elec_GSFTrackResol_);
00261 readerwoGwGSF_BL->AddVariable("Elec_GSFTracklnPt",&Elec_GSFTracklnPt_);
00262 readerwoGwGSF_BL->AddVariable("Elec_GSFTrackEta",&Elec_GSFTrackEta_);
00263 readerwoGwGSF_BL->AddVariable("Tau_EtaAtEcalEntrance",&Tau_EtaAtEcalEntrance_);
00264 readerwoGwGSF_BL->AddVariable("Tau_Pt",&Tau_Pt_);
00265 readerwoGwGSF_BL->AddVariable("Tau_EmFraction",&Tau_EmFraction_);
00266 readerwoGwGSF_BL->AddVariable("Tau_HadrHoP",&Tau_HadrHoP_);
00267 readerwoGwGSF_BL->AddVariable("Tau_HadrEoP",&Tau_HadrEoP_);
00268 readerwoGwGSF_BL->AddVariable("Tau_VisMass",&Tau_VisMass_);
00269 readerwoGwGSF_BL->AddVariable("Tau_HadrMva",&Tau_HadrMva_);
00270 readerwoGwGSF_BL->AddVariable("Tau_GSFChi2",&Tau_GSFChi2_);
00271 readerwoGwGSF_BL->AddVariable("(Tau_GSFNumHits - Tau_KFNumHits)/(Tau_GSFNumHits + Tau_KFNumHits)",&Tau_NumHitsVariable_);
00272 readerwoGwGSF_BL->AddVariable("Tau_GSFTrackResol",&Tau_GSFTrackResol_);
00273 readerwoGwGSF_BL->AddVariable("Tau_GSFTracklnPt",&Tau_GSFTracklnPt_);
00274 readerwoGwGSF_BL->AddVariable("Tau_GSFTrackEta",&Tau_GSFTrackEta_);
00275 readerwoGwGSF_BL->AddVariable("Tau_dCrackEta",&Tau_dCrackEta_);
00276 readerwoGwGSF_BL->AddVariable("Tau_dCrackPhi",&Tau_dCrackPhi_);
00277 readerwoGwGSF_BL->SetVerbose(verbosity_);
00278
00279 TMVA::Reader *readerwGwoGSF_BL = new TMVA::Reader( "!Color:Silent:Error" );
00280 readerwGwoGSF_BL->AddVariable("Elec_EtotOverPin",&Elec_EtotOverPin_);
00281 readerwGwoGSF_BL->AddVariable("Elec_EgammaOverPdif",&Elec_EgammaOverPdif_);
00282 readerwGwoGSF_BL->AddVariable("Elec_Fbrem",&Elec_Fbrem_);
00283 readerwGwoGSF_BL->AddVariable("Elec_Chi2GSF",&Elec_Chi2GSF_);
00284 readerwGwoGSF_BL->AddVariable("Elec_GSFNumHits",&Elec_GSFNumHits_);
00285 readerwGwoGSF_BL->AddVariable("Elec_GSFTrackResol",&Elec_GSFTrackResol_);
00286 readerwGwoGSF_BL->AddVariable("Elec_GSFTracklnPt",&Elec_GSFTracklnPt_);
00287 readerwGwoGSF_BL->AddVariable("Elec_GSFTrackEta",&Elec_GSFTrackEta_);
00288 readerwGwoGSF_BL->AddVariable("Tau_EtaAtEcalEntrance",&Tau_EtaAtEcalEntrance_);
00289 readerwGwoGSF_BL->AddVariable("Tau_Pt",&Tau_Pt_);
00290 readerwGwoGSF_BL->AddVariable("Tau_EmFraction",&Tau_EmFraction_);
00291 readerwGwoGSF_BL->AddVariable("Tau_NumGammaCands",&Tau_NumGammaCands_);
00292 readerwGwoGSF_BL->AddVariable("Tau_HadrHoP",&Tau_HadrHoP_);
00293 readerwGwoGSF_BL->AddVariable("Tau_HadrEoP",&Tau_HadrEoP_);
00294 readerwGwoGSF_BL->AddVariable("Tau_VisMass",&Tau_VisMass_);
00295 readerwGwoGSF_BL->AddVariable("Tau_GammaEtaMom",&Tau_GammaEtaMom_);
00296 readerwGwoGSF_BL->AddVariable("Tau_GammaPhiMom",&Tau_GammaPhiMom_);
00297 readerwGwoGSF_BL->AddVariable("Tau_GammaEnFrac",&Tau_GammaEnFrac_);
00298 readerwGwoGSF_BL->AddVariable("Tau_dCrackEta",&Tau_dCrackEta_);
00299 readerwGwoGSF_BL->AddVariable("Tau_dCrackPhi",&Tau_dCrackPhi_);
00300 readerwGwoGSF_BL->SetVerbose(verbosity_);
00301
00302 TMVA::Reader *readerwGwGSF_BL = new TMVA::Reader( "!Color:Silent:Error" );
00303 readerwGwGSF_BL->AddVariable("Elec_EtotOverPin",&Elec_EtotOverPin_);
00304 readerwGwGSF_BL->AddVariable("Elec_EgammaOverPdif",&Elec_EgammaOverPdif_);
00305 readerwGwGSF_BL->AddVariable("Elec_Fbrem",&Elec_Fbrem_);
00306 readerwGwGSF_BL->AddVariable("Elec_Chi2GSF",&Elec_Chi2GSF_);
00307 readerwGwGSF_BL->AddVariable("Elec_GSFNumHits",&Elec_GSFNumHits_);
00308 readerwGwGSF_BL->AddVariable("Elec_GSFTrackResol",&Elec_GSFTrackResol_);
00309 readerwGwGSF_BL->AddVariable("Elec_GSFTracklnPt",&Elec_GSFTracklnPt_);
00310 readerwGwGSF_BL->AddVariable("Elec_GSFTrackEta",&Elec_GSFTrackEta_);
00311 readerwGwGSF_BL->AddVariable("Tau_EtaAtEcalEntrance",&Tau_EtaAtEcalEntrance_);
00312 readerwGwGSF_BL->AddVariable("Tau_Pt",&Tau_Pt_);
00313 readerwGwGSF_BL->AddVariable("Tau_EmFraction",&Tau_EmFraction_);
00314 readerwGwGSF_BL->AddVariable("Tau_NumGammaCands",&Tau_NumGammaCands_);
00315 readerwGwGSF_BL->AddVariable("Tau_HadrHoP",&Tau_HadrHoP_);
00316 readerwGwGSF_BL->AddVariable("Tau_HadrEoP",&Tau_HadrEoP_);
00317 readerwGwGSF_BL->AddVariable("Tau_VisMass",&Tau_VisMass_);
00318 readerwGwGSF_BL->AddVariable("Tau_HadrMva",&Tau_HadrMva_);
00319 readerwGwGSF_BL->AddVariable("Tau_GammaEtaMom",&Tau_GammaEtaMom_);
00320 readerwGwGSF_BL->AddVariable("Tau_GammaPhiMom",&Tau_GammaPhiMom_);
00321 readerwGwGSF_BL->AddVariable("Tau_GammaEnFrac",&Tau_GammaEnFrac_);
00322 readerwGwGSF_BL->AddVariable("Tau_GSFChi2",&Tau_GSFChi2_);
00323 readerwGwGSF_BL->AddVariable("(Tau_GSFNumHits - Tau_KFNumHits)/(Tau_GSFNumHits + Tau_KFNumHits)",&Tau_NumHitsVariable_);
00324 readerwGwGSF_BL->AddVariable("Tau_GSFTrackResol",&Tau_GSFTrackResol_);
00325 readerwGwGSF_BL->AddVariable("Tau_GSFTracklnPt",&Tau_GSFTracklnPt_);
00326 readerwGwGSF_BL->AddVariable("Tau_GSFTrackEta",&Tau_GSFTrackEta_);
00327 readerwGwGSF_BL->AddVariable("Tau_dCrackEta",&Tau_dCrackEta_);
00328 readerwGwGSF_BL->AddVariable("Tau_dCrackPhi",&Tau_dCrackPhi_);
00329 readerwGwGSF_BL->SetVerbose(verbosity_);
00330
00332
00333 TMVA::Reader *readerNoEleMatchwoGwoGSF_EC = new TMVA::Reader( "!Color:Silent:Error" );
00334 readerNoEleMatchwoGwoGSF_EC->AddVariable("Tau_EtaAtEcalEntrance",&Tau_EtaAtEcalEntrance_);
00335 readerNoEleMatchwoGwoGSF_EC->AddVariable("Tau_Pt",&Tau_Pt_);
00336 readerNoEleMatchwoGwoGSF_EC->AddVariable("Tau_EmFraction",&Tau_EmFraction_);
00337 readerNoEleMatchwoGwoGSF_EC->AddVariable("Tau_HadrHoP",&Tau_HadrHoP_);
00338 readerNoEleMatchwoGwoGSF_EC->AddVariable("Tau_HadrEoP",&Tau_HadrEoP_);
00339 readerNoEleMatchwoGwoGSF_EC->AddVariable("Tau_VisMass",&Tau_VisMass_);
00340 readerNoEleMatchwoGwoGSF_EC->AddVariable("Tau_dCrackEta",&Tau_dCrackEta_);
00341 readerNoEleMatchwoGwoGSF_EC->SetVerbose(verbosity_);
00342
00343 TMVA::Reader *readerNoEleMatchwoGwGSF_EC = new TMVA::Reader( "!Color:Silent:Error" );
00344 readerNoEleMatchwoGwGSF_EC->AddVariable("Tau_EtaAtEcalEntrance",&Tau_EtaAtEcalEntrance_);
00345 readerNoEleMatchwoGwGSF_EC->AddVariable("Tau_Pt",&Tau_Pt_);
00346 readerNoEleMatchwoGwGSF_EC->AddVariable("Tau_EmFraction",&Tau_EmFraction_);
00347 readerNoEleMatchwoGwGSF_EC->AddVariable("Tau_HadrHoP",&Tau_HadrHoP_);
00348 readerNoEleMatchwoGwGSF_EC->AddVariable("Tau_HadrEoP",&Tau_HadrEoP_);
00349 readerNoEleMatchwoGwGSF_EC->AddVariable("Tau_VisMass",&Tau_VisMass_);
00350 readerNoEleMatchwoGwGSF_EC->AddVariable("Tau_HadrMva",&Tau_HadrMva_);
00351 readerNoEleMatchwoGwGSF_EC->AddVariable("Tau_GSFChi2",&Tau_GSFChi2_);
00352 readerNoEleMatchwoGwGSF_EC->AddVariable("(Tau_GSFNumHits - Tau_KFNumHits)/(Tau_GSFNumHits + Tau_KFNumHits)",&Tau_NumHitsVariable_);
00353 readerNoEleMatchwoGwGSF_EC->AddVariable("Tau_GSFTrackResol",&Tau_GSFTrackResol_);
00354 readerNoEleMatchwoGwGSF_EC->AddVariable("Tau_GSFTracklnPt",&Tau_GSFTracklnPt_);
00355 readerNoEleMatchwoGwGSF_EC->AddVariable("Tau_GSFTrackEta",&Tau_GSFTrackEta_);
00356 readerNoEleMatchwoGwGSF_EC->AddVariable("Tau_dCrackEta",&Tau_dCrackEta_);
00357 readerNoEleMatchwoGwGSF_EC->SetVerbose(verbosity_);
00358
00359 TMVA::Reader *readerNoEleMatchwGwoGSF_EC = new TMVA::Reader( "!Color:Silent:Error" );
00360 readerNoEleMatchwGwoGSF_EC->AddVariable("Tau_EtaAtEcalEntrance",&Tau_EtaAtEcalEntrance_);
00361 readerNoEleMatchwGwoGSF_EC->AddVariable("Tau_Pt",&Tau_Pt_);
00362 readerNoEleMatchwGwoGSF_EC->AddVariable("Tau_EmFraction",&Tau_EmFraction_);
00363 readerNoEleMatchwGwoGSF_EC->AddVariable("Tau_NumGammaCands",&Tau_NumGammaCands_);
00364 readerNoEleMatchwGwoGSF_EC->AddVariable("Tau_HadrHoP",&Tau_HadrHoP_);
00365 readerNoEleMatchwGwoGSF_EC->AddVariable("Tau_HadrEoP",&Tau_HadrEoP_);
00366 readerNoEleMatchwGwoGSF_EC->AddVariable("Tau_VisMass",&Tau_VisMass_);
00367 readerNoEleMatchwGwoGSF_EC->AddVariable("Tau_GammaEtaMom",&Tau_GammaEtaMom_);
00368 readerNoEleMatchwGwoGSF_EC->AddVariable("Tau_GammaPhiMom",&Tau_GammaPhiMom_);
00369 readerNoEleMatchwGwoGSF_EC->AddVariable("Tau_GammaEnFrac",&Tau_GammaEnFrac_);
00370 readerNoEleMatchwGwoGSF_EC->AddVariable("Tau_dCrackEta",&Tau_dCrackEta_);
00371 readerNoEleMatchwGwoGSF_EC->SetVerbose(verbosity_);
00372
00373 TMVA::Reader *readerNoEleMatchwGwGSF_EC = new TMVA::Reader( "!Color:Silent:Error" );
00374 readerNoEleMatchwGwGSF_EC->AddVariable("Tau_EtaAtEcalEntrance",&Tau_EtaAtEcalEntrance_);
00375 readerNoEleMatchwGwGSF_EC->AddVariable("Tau_Pt",&Tau_Pt_);
00376 readerNoEleMatchwGwGSF_EC->AddVariable("Tau_EmFraction",&Tau_EmFraction_);
00377 readerNoEleMatchwGwGSF_EC->AddVariable("Tau_NumGammaCands",&Tau_NumGammaCands_);
00378 readerNoEleMatchwGwGSF_EC->AddVariable("Tau_HadrHoP",&Tau_HadrHoP_);
00379 readerNoEleMatchwGwGSF_EC->AddVariable("Tau_HadrEoP",&Tau_HadrEoP_);
00380 readerNoEleMatchwGwGSF_EC->AddVariable("Tau_VisMass",&Tau_VisMass_);
00381 readerNoEleMatchwGwGSF_EC->AddVariable("Tau_HadrMva",&Tau_HadrMva_);
00382 readerNoEleMatchwGwGSF_EC->AddVariable("Tau_GammaEtaMom",&Tau_GammaEtaMom_);
00383 readerNoEleMatchwGwGSF_EC->AddVariable("Tau_GammaPhiMom",&Tau_GammaPhiMom_);
00384 readerNoEleMatchwGwGSF_EC->AddVariable("Tau_GammaEnFrac",&Tau_GammaEnFrac_);
00385 readerNoEleMatchwGwGSF_EC->AddVariable("Tau_GSFChi2",&Tau_GSFChi2_);
00386 readerNoEleMatchwGwGSF_EC->AddVariable("(Tau_GSFNumHits - Tau_KFNumHits)/(Tau_GSFNumHits + Tau_KFNumHits)",&Tau_NumHitsVariable_);
00387 readerNoEleMatchwGwGSF_EC->AddVariable("Tau_GSFTrackResol",&Tau_GSFTrackResol_);
00388 readerNoEleMatchwGwGSF_EC->AddVariable("Tau_GSFTracklnPt",&Tau_GSFTracklnPt_);
00389 readerNoEleMatchwGwGSF_EC->AddVariable("Tau_GSFTrackEta",&Tau_GSFTrackEta_);
00390 readerNoEleMatchwGwGSF_EC->AddVariable("Tau_dCrackEta",&Tau_dCrackEta_);
00391 readerNoEleMatchwGwGSF_EC->SetVerbose(verbosity_);
00392
00393 TMVA::Reader *readerwoGwoGSF_EC = new TMVA::Reader( "!Color:Silent:Error" );
00394 readerwoGwoGSF_EC->AddVariable("Elec_EtotOverPin",&Elec_EtotOverPin_);
00395 readerwoGwoGSF_EC->AddVariable("Elec_EgammaOverPdif",&Elec_EgammaOverPdif_);
00396 readerwoGwoGSF_EC->AddVariable("Elec_Fbrem",&Elec_Fbrem_);
00397 readerwoGwoGSF_EC->AddVariable("Elec_Chi2GSF",&Elec_Chi2GSF_);
00398 readerwoGwoGSF_EC->AddVariable("Elec_GSFNumHits",&Elec_GSFNumHits_);
00399 readerwoGwoGSF_EC->AddVariable("Elec_GSFTrackResol",&Elec_GSFTrackResol_);
00400 readerwoGwoGSF_EC->AddVariable("Elec_GSFTracklnPt",&Elec_GSFTracklnPt_);
00401 readerwoGwoGSF_EC->AddVariable("Elec_GSFTrackEta",&Elec_GSFTrackEta_);
00402 readerwoGwoGSF_EC->AddVariable("Tau_EtaAtEcalEntrance",&Tau_EtaAtEcalEntrance_);
00403 readerwoGwoGSF_EC->AddVariable("Tau_Pt",&Tau_Pt_);
00404 readerwoGwoGSF_EC->AddVariable("Tau_EmFraction",&Tau_EmFraction_);
00405 readerwoGwoGSF_EC->AddVariable("Tau_HadrHoP",&Tau_HadrHoP_);
00406 readerwoGwoGSF_EC->AddVariable("Tau_HadrEoP",&Tau_HadrEoP_);
00407 readerwoGwoGSF_EC->AddVariable("Tau_VisMass",&Tau_VisMass_);
00408 readerwoGwoGSF_EC->AddVariable("Tau_dCrackEta",&Tau_dCrackEta_);
00409 readerwoGwoGSF_EC->SetVerbose(verbosity_);
00410
00411 TMVA::Reader *readerwoGwGSF_EC = new TMVA::Reader( "!Color:Silent:Error" );
00412 readerwoGwGSF_EC->AddVariable("Elec_EtotOverPin",&Elec_EtotOverPin_);
00413 readerwoGwGSF_EC->AddVariable("Elec_EgammaOverPdif",&Elec_EgammaOverPdif_);
00414 readerwoGwGSF_EC->AddVariable("Elec_Fbrem",&Elec_Fbrem_);
00415 readerwoGwGSF_EC->AddVariable("Elec_Chi2GSF",&Elec_Chi2GSF_);
00416 readerwoGwGSF_EC->AddVariable("Elec_GSFNumHits",&Elec_GSFNumHits_);
00417 readerwoGwGSF_EC->AddVariable("Elec_GSFTrackResol",&Elec_GSFTrackResol_);
00418 readerwoGwGSF_EC->AddVariable("Elec_GSFTracklnPt",&Elec_GSFTracklnPt_);
00419 readerwoGwGSF_EC->AddVariable("Elec_GSFTrackEta",&Elec_GSFTrackEta_);
00420 readerwoGwGSF_EC->AddVariable("Tau_EtaAtEcalEntrance",&Tau_EtaAtEcalEntrance_);
00421 readerwoGwGSF_EC->AddVariable("Tau_Pt",&Tau_Pt_);
00422 readerwoGwGSF_EC->AddVariable("Tau_EmFraction",&Tau_EmFraction_);
00423 readerwoGwGSF_EC->AddVariable("Tau_HadrHoP",&Tau_HadrHoP_);
00424 readerwoGwGSF_EC->AddVariable("Tau_HadrEoP",&Tau_HadrEoP_);
00425 readerwoGwGSF_EC->AddVariable("Tau_VisMass",&Tau_VisMass_);
00426 readerwoGwGSF_EC->AddVariable("Tau_HadrMva",&Tau_HadrMva_);
00427 readerwoGwGSF_EC->AddVariable("Tau_GSFChi2",&Tau_GSFChi2_);
00428 readerwoGwGSF_EC->AddVariable("(Tau_GSFNumHits - Tau_KFNumHits)/(Tau_GSFNumHits + Tau_KFNumHits)",&Tau_NumHitsVariable_);
00429 readerwoGwGSF_EC->AddVariable("Tau_GSFTrackResol",&Tau_GSFTrackResol_);
00430 readerwoGwGSF_EC->AddVariable("Tau_GSFTracklnPt",&Tau_GSFTracklnPt_);
00431 readerwoGwGSF_EC->AddVariable("Tau_GSFTrackEta",&Tau_GSFTrackEta_);
00432 readerwoGwGSF_EC->AddVariable("Tau_dCrackEta",&Tau_dCrackEta_);
00433 readerwoGwGSF_EC->SetVerbose(verbosity_);
00434
00435 TMVA::Reader *readerwGwoGSF_EC = new TMVA::Reader( "!Color:Silent:Error" );
00436 readerwGwoGSF_EC->AddVariable("Elec_EtotOverPin",&Elec_EtotOverPin_);
00437 readerwGwoGSF_EC->AddVariable("Elec_EgammaOverPdif",&Elec_EgammaOverPdif_);
00438 readerwGwoGSF_EC->AddVariable("Elec_Fbrem",&Elec_Fbrem_);
00439 readerwGwoGSF_EC->AddVariable("Elec_Chi2GSF",&Elec_Chi2GSF_);
00440 readerwGwoGSF_EC->AddVariable("Elec_GSFNumHits",&Elec_GSFNumHits_);
00441 readerwGwoGSF_EC->AddVariable("Elec_GSFTrackResol",&Elec_GSFTrackResol_);
00442 readerwGwoGSF_EC->AddVariable("Elec_GSFTracklnPt",&Elec_GSFTracklnPt_);
00443 readerwGwoGSF_EC->AddVariable("Elec_GSFTrackEta",&Elec_GSFTrackEta_);
00444 readerwGwoGSF_EC->AddVariable("Tau_EtaAtEcalEntrance",&Tau_EtaAtEcalEntrance_);
00445 readerwGwoGSF_EC->AddVariable("Tau_Pt",&Tau_Pt_);
00446 readerwGwoGSF_EC->AddVariable("Tau_EmFraction",&Tau_EmFraction_);
00447 readerwGwoGSF_EC->AddVariable("Tau_NumGammaCands",&Tau_NumGammaCands_);
00448 readerwGwoGSF_EC->AddVariable("Tau_HadrHoP",&Tau_HadrHoP_);
00449 readerwGwoGSF_EC->AddVariable("Tau_HadrEoP",&Tau_HadrEoP_);
00450 readerwGwoGSF_EC->AddVariable("Tau_VisMass",&Tau_VisMass_);
00451 readerwGwoGSF_EC->AddVariable("Tau_GammaEtaMom",&Tau_GammaEtaMom_);
00452 readerwGwoGSF_EC->AddVariable("Tau_GammaPhiMom",&Tau_GammaPhiMom_);
00453 readerwGwoGSF_EC->AddVariable("Tau_GammaEnFrac",&Tau_GammaEnFrac_);
00454 readerwGwoGSF_EC->AddVariable("Tau_dCrackEta",&Tau_dCrackEta_);
00455 readerwGwoGSF_EC->SetVerbose(verbosity_);
00456
00457 TMVA::Reader *readerwGwGSF_EC = new TMVA::Reader( "!Color:Silent:Error" );
00458 readerwGwGSF_EC->AddVariable("Elec_EtotOverPin",&Elec_EtotOverPin_);
00459 readerwGwGSF_EC->AddVariable("Elec_EgammaOverPdif",&Elec_EgammaOverPdif_);
00460 readerwGwGSF_EC->AddVariable("Elec_Fbrem",&Elec_Fbrem_);
00461 readerwGwGSF_EC->AddVariable("Elec_Chi2GSF",&Elec_Chi2GSF_);
00462 readerwGwGSF_EC->AddVariable("Elec_GSFNumHits",&Elec_GSFNumHits_);
00463 readerwGwGSF_EC->AddVariable("Elec_GSFTrackResol",&Elec_GSFTrackResol_);
00464 readerwGwGSF_EC->AddVariable("Elec_GSFTracklnPt",&Elec_GSFTracklnPt_);
00465 readerwGwGSF_EC->AddVariable("Elec_GSFTrackEta",&Elec_GSFTrackEta_);
00466 readerwGwGSF_EC->AddVariable("Tau_EtaAtEcalEntrance",&Tau_EtaAtEcalEntrance_);
00467 readerwGwGSF_EC->AddVariable("Tau_Pt",&Tau_Pt_);
00468 readerwGwGSF_EC->AddVariable("Tau_EmFraction",&Tau_EmFraction_);
00469 readerwGwGSF_EC->AddVariable("Tau_NumGammaCands",&Tau_NumGammaCands_);
00470 readerwGwGSF_EC->AddVariable("Tau_HadrHoP",&Tau_HadrHoP_);
00471 readerwGwGSF_EC->AddVariable("Tau_HadrEoP",&Tau_HadrEoP_);
00472 readerwGwGSF_EC->AddVariable("Tau_VisMass",&Tau_VisMass_);
00473 readerwGwGSF_EC->AddVariable("Tau_HadrMva",&Tau_HadrMva_);
00474 readerwGwGSF_EC->AddVariable("Tau_GammaEtaMom",&Tau_GammaEtaMom_);
00475 readerwGwGSF_EC->AddVariable("Tau_GammaPhiMom",&Tau_GammaPhiMom_);
00476 readerwGwGSF_EC->AddVariable("Tau_GammaEnFrac",&Tau_GammaEnFrac_);
00477 readerwGwGSF_EC->AddVariable("Tau_GSFChi2",&Tau_GSFChi2_);
00478 readerwGwGSF_EC->AddVariable("(Tau_GSFNumHits - Tau_KFNumHits)/(Tau_GSFNumHits + Tau_KFNumHits)",&Tau_NumHitsVariable_);
00479 readerwGwGSF_EC->AddVariable("Tau_GSFTrackResol",&Tau_GSFTrackResol_);
00480 readerwGwGSF_EC->AddVariable("Tau_GSFTracklnPt",&Tau_GSFTracklnPt_);
00481 readerwGwGSF_EC->AddVariable("Tau_GSFTrackEta",&Tau_GSFTrackEta_);
00482 readerwGwGSF_EC->AddVariable("Tau_dCrackEta",&Tau_dCrackEta_);
00483 readerwGwGSF_EC->SetVerbose(verbosity_);
00484
00485 fTMVAReader_[k_NoEleMatchwoGwoGSF_BL] = readerNoEleMatchwoGwoGSF_BL;
00486 fTMVAReader_[k_NoEleMatchwoGwGSF_BL] = readerNoEleMatchwoGwGSF_BL;
00487 fTMVAReader_[k_NoEleMatchwGwoGSF_BL] = readerNoEleMatchwGwoGSF_BL;
00488 fTMVAReader_[k_NoEleMatchwGwGSF_BL] = readerNoEleMatchwGwGSF_BL;
00489 fTMVAReader_[k_woGwoGSF_BL] = readerwoGwoGSF_BL;
00490 fTMVAReader_[k_woGwGSF_BL] = readerwoGwGSF_BL;
00491 fTMVAReader_[k_wGwoGSF_BL] = readerwGwoGSF_BL;
00492 fTMVAReader_[k_wGwGSF_BL] = readerwGwGSF_BL;
00493 fTMVAReader_[k_NoEleMatchwoGwoGSF_EC] = readerNoEleMatchwoGwoGSF_EC;
00494 fTMVAReader_[k_NoEleMatchwoGwGSF_EC] = readerNoEleMatchwoGwGSF_EC;
00495 fTMVAReader_[k_NoEleMatchwGwoGSF_EC] = readerNoEleMatchwGwoGSF_EC;
00496 fTMVAReader_[k_NoEleMatchwGwGSF_EC] = readerNoEleMatchwGwGSF_EC;
00497 fTMVAReader_[k_woGwoGSF_EC] = readerwoGwoGSF_EC;
00498 fTMVAReader_[k_woGwGSF_EC] = readerwoGwGSF_EC;
00499 fTMVAReader_[k_wGwoGSF_EC] = readerwGwoGSF_EC;
00500 fTMVAReader_[k_wGwGSF_EC] = readerwGwGSF_EC;
00501
00502 }
00503
00504 double AntiElectronIDMVA3::MVAValue(Float_t TauEtaAtEcalEntrance,
00505 Float_t TauPt,
00506 Float_t TaudCrackEta,
00507 Float_t TaudCrackPhi,
00508 Float_t TauEmFraction,
00509 Float_t TauSignalPFGammaCands,
00510 Float_t TauLeadPFChargedHadrHoP,
00511 Float_t TauLeadPFChargedHadrEoP,
00512 Float_t TauVisMass,
00513 Float_t TauHadrMva,
00514 const std::vector<Float_t>& GammasdEta,
00515 const std::vector<Float_t>& GammasdPhi,
00516 const std::vector<Float_t>& GammasPt,
00517 Float_t TauKFNumHits,
00518 Float_t TauGSFNumHits,
00519 Float_t TauGSFChi2,
00520 Float_t TauGSFTrackResol,
00521 Float_t TauGSFTracklnPt,
00522 Float_t TauGSFTrackEta,
00523 Float_t TauPhi,
00524 Float_t TauSignalPFChargedCands,
00525 Float_t TauHasGsf,
00526 Float_t ElecEta,
00527 Float_t ElecPhi,
00528 Float_t ElecPt,
00529 Float_t ElecEe,
00530 Float_t ElecEgamma,
00531 Float_t ElecPin,
00532 Float_t ElecPout,
00533 Float_t ElecFbrem,
00534 Float_t ElecChi2GSF,
00535 Float_t ElecGSFNumHits,
00536 Float_t ElecGSFTrackResol,
00537 Float_t ElecGSFTracklnPt,
00538 Float_t ElecGSFTrackEta)
00539 {
00540 double sumPt = 0.;
00541 double dEta = 0.;
00542 double dEta2 = 0.;
00543 double dPhi = 0.;
00544 double dPhi2 = 0.;
00545 double sumPt2 = 0.;
00546 for ( unsigned int i = 0 ; i < GammasPt.size() ; ++i ) {
00547 double pt_i = GammasPt[i];
00548 double phi_i = GammasdPhi[i];
00549 if ( GammasdPhi[i] > TMath::Pi() ) phi_i = GammasdPhi[i] - 2*TMath::Pi();
00550 else if ( GammasdPhi[i] < -TMath::Pi() ) phi_i = GammasdPhi[i] + 2*TMath::Pi();
00551 double eta_i = GammasdEta[i];
00552 sumPt += pt_i;
00553 sumPt2 += (pt_i*pt_i);
00554 dEta += (pt_i*eta_i);
00555 dEta2 += (pt_i*eta_i*eta_i);
00556 dPhi += (pt_i*phi_i);
00557 dPhi2 += (pt_i*phi_i*phi_i);
00558 }
00559
00560 Float_t TauGammaEnFrac = sumPt/TauPt;
00561
00562 if ( sumPt > 0. ) {
00563 dEta /= sumPt;
00564 dPhi /= sumPt;
00565 dEta2 /= sumPt;
00566 dPhi2 /= sumPt;
00567 }
00568
00569 Float_t TauGammaEtaMom = TMath::Sqrt(dEta2)*TMath::Sqrt(TauGammaEnFrac)*TauPt;
00570 Float_t TauGammaPhiMom = TMath::Sqrt(dPhi2)*TMath::Sqrt(TauGammaEnFrac)*TauPt;
00571
00572 return MVAValue(TauEtaAtEcalEntrance,
00573 TauPt,
00574 TaudCrackEta,
00575 TaudCrackPhi,
00576 TauEmFraction,
00577 TauSignalPFGammaCands,
00578 TauLeadPFChargedHadrHoP,
00579 TauLeadPFChargedHadrEoP,
00580 TauVisMass,
00581 TauHadrMva,
00582 TauGammaEtaMom,
00583 TauGammaPhiMom,
00584 TauGammaEnFrac,
00585 TauKFNumHits,
00586 TauGSFNumHits,
00587 TauGSFChi2,
00588 TauGSFTrackResol,
00589 TauGSFTracklnPt,
00590 TauGSFTrackEta,
00591 TauPhi,
00592 TauSignalPFChargedCands,
00593 TauHasGsf,
00594 ElecEta,
00595 ElecPhi,
00596 ElecPt,
00597 ElecEe,
00598 ElecEgamma,
00599 ElecPin,
00600 ElecPout,
00601 ElecFbrem,
00602 ElecChi2GSF,
00603 ElecGSFNumHits,
00604 ElecGSFTrackResol,
00605 ElecGSFTracklnPt,
00606 ElecGSFTrackEta);
00607 }
00608
00609 double AntiElectronIDMVA3::MVAValue(Float_t TauEtaAtEcalEntrance,
00610 Float_t TauPt,
00611 Float_t TaudCrackEta,
00612 Float_t TaudCrackPhi,
00613 Float_t TauEmFraction,
00614 Float_t TauSignalPFGammaCands,
00615 Float_t TauLeadPFChargedHadrHoP,
00616 Float_t TauLeadPFChargedHadrEoP,
00617 Float_t TauVisMass,
00618 Float_t TauHadrMva,
00619 Float_t TauGammaEtaMom,
00620 Float_t TauGammaPhiMom,
00621 Float_t TauGammaEnFrac,
00622 Float_t TauKFNumHits,
00623 Float_t TauGSFNumHits,
00624 Float_t TauGSFChi2,
00625 Float_t TauGSFTrackResol,
00626 Float_t TauGSFTracklnPt,
00627 Float_t TauGSFTrackEta,
00628 Float_t TauPhi,
00629 Float_t TauSignalPFChargedCands,
00630 Float_t TauHasGsf,
00631 Float_t ElecEta,
00632 Float_t ElecPhi,
00633 Float_t ElecPt,
00634 Float_t ElecEe,
00635 Float_t ElecEgamma,
00636 Float_t ElecPin,
00637 Float_t ElecPout,
00638 Float_t ElecFbrem,
00639 Float_t ElecChi2GSF,
00640 Float_t ElecGSFNumHits,
00641 Float_t ElecGSFTrackResol,
00642 Float_t ElecGSFTracklnPt,
00643 Float_t ElecGSFTrackEta)
00644 {
00645
00646 if ( !isInitialized_ ) {
00647
00648 return -99.;
00649 }
00650
00651 Tau_EtaAtEcalEntrance_ = TauEtaAtEcalEntrance;
00652 Tau_Pt_ = TauPt;
00653 Tau_dCrackEta_ = TaudCrackEta;
00654 Tau_dCrackPhi_ = TaudCrackPhi;
00655 Tau_EmFraction_ = TMath::Max(TauEmFraction,float(0.0));
00656 Tau_NumGammaCands_ = TauSignalPFGammaCands;
00657 Tau_HadrHoP_ = TauLeadPFChargedHadrHoP;
00658 Tau_HadrEoP_ = TauLeadPFChargedHadrEoP;
00659 Tau_VisMass_ = TauVisMass;
00660 Tau_HadrMva_ = TauHadrMva;
00661 Tau_GammaEtaMom_ = TauGammaEtaMom;
00662 Tau_GammaPhiMom_ = TauGammaPhiMom;
00663 Tau_GammaEnFrac_ = TauGammaEnFrac;
00664 Tau_GSFChi2_ = TauGSFChi2;
00665 Tau_NumHitsVariable_ = (TauGSFNumHits-TauKFNumHits)/(TauGSFNumHits+TauKFNumHits);
00666 Tau_GSFTrackResol_ = TauGSFTrackResol;
00667 Tau_GSFTracklnPt_ = TauGSFTracklnPt;
00668 Tau_GSFTrackEta_ = TauGSFTrackEta;
00669
00670 Elec_EtotOverPin_ = (ElecEe + ElecEgamma)/ElecPin;
00671 Elec_EgammaOverPdif_ = ElecEgamma/(ElecPin - ElecPout);
00672 Elec_Fbrem_ = ElecFbrem;
00673 Elec_Chi2GSF_ = ElecChi2GSF;
00674 Elec_GSFNumHits_ = ElecGSFNumHits;
00675 Elec_GSFTrackResol_ = ElecGSFTrackResol;
00676 Elec_GSFTracklnPt_ = ElecGSFTracklnPt;
00677 Elec_GSFTrackEta_ = ElecGSFTrackEta;
00678
00679 double mva = -99.;
00680 if ( TauSignalPFChargedCands == 3 ) mva = 1.0;
00681 else if ( deltaR(TauEtaAtEcalEntrance, TauPhi, ElecEta, ElecPhi) > 0.3 && TauSignalPFGammaCands == 0 && TauHasGsf < 0.5) {
00682 if ( TMath::Abs(TauEtaAtEcalEntrance) < 1.5 ) mva = fTMVAReader_[k_NoEleMatchwoGwoGSF_BL]->EvaluateMVA(methodName_);
00683 else mva = fTMVAReader_[k_NoEleMatchwoGwoGSF_EC]->EvaluateMVA(methodName_);
00684 }
00685 else if ( deltaR(TauEtaAtEcalEntrance, TauPhi, ElecEta, ElecPhi) > 0.3 && TauSignalPFGammaCands == 0 && TauHasGsf > 0.5) {
00686 if ( TMath::Abs(TauEtaAtEcalEntrance) < 1.5 ) mva = fTMVAReader_[k_NoEleMatchwoGwGSF_BL]->EvaluateMVA(methodName_);
00687 else mva = fTMVAReader_[k_NoEleMatchwoGwGSF_EC]->EvaluateMVA(methodName_);
00688 }
00689 else if ( deltaR(TauEtaAtEcalEntrance, TauPhi, ElecEta, ElecPhi) > 0.3 && TauSignalPFGammaCands > 0 && TauHasGsf < 0.5) {
00690 if ( TMath::Abs(TauEtaAtEcalEntrance) < 1.5 ) mva = fTMVAReader_[k_NoEleMatchwGwoGSF_BL]->EvaluateMVA(methodName_);
00691 else mva = fTMVAReader_[k_NoEleMatchwGwoGSF_EC]->EvaluateMVA(methodName_);
00692 }
00693 else if ( deltaR(TauEtaAtEcalEntrance, TauPhi, ElecEta, ElecPhi) > 0.3 && TauSignalPFGammaCands > 0 && TauHasGsf > 0.5) {
00694 if ( TMath::Abs(TauEtaAtEcalEntrance) < 1.5 ) mva = fTMVAReader_[k_NoEleMatchwGwGSF_BL]->EvaluateMVA(methodName_);
00695 else mva = fTMVAReader_[k_NoEleMatchwGwGSF_EC]->EvaluateMVA(methodName_);
00696 }
00697 else if ( TauSignalPFGammaCands == 0 && TauHasGsf < 0.5) {
00698 if ( TMath::Abs(TauEtaAtEcalEntrance) < 1.5 ) mva = fTMVAReader_[k_woGwoGSF_BL]->EvaluateMVA(methodName_);
00699 else mva = fTMVAReader_[k_woGwoGSF_EC]->EvaluateMVA(methodName_);
00700 }
00701 else if ( TauSignalPFGammaCands == 0 && TauHasGsf > 0.5) {
00702 if ( TMath::Abs(TauEtaAtEcalEntrance) < 1.5 ) mva = fTMVAReader_[k_woGwGSF_BL]->EvaluateMVA(methodName_);
00703 else mva = fTMVAReader_[k_woGwGSF_EC]->EvaluateMVA(methodName_);
00704 }
00705 else if ( TauSignalPFGammaCands > 0 && TauHasGsf < 0.5) {
00706 if ( TMath::Abs(TauEtaAtEcalEntrance) < 1.5 ) mva = fTMVAReader_[k_wGwoGSF_BL]->EvaluateMVA(methodName_);
00707 else mva = fTMVAReader_[k_wGwoGSF_EC]->EvaluateMVA(methodName_);
00708 }
00709 else if ( TauSignalPFGammaCands > 0 && TauHasGsf > 0.5) {
00710 if ( TMath::Abs(TauEtaAtEcalEntrance) < 1.5 ) mva = fTMVAReader_[k_wGwGSF_BL]->EvaluateMVA(methodName_);
00711 else mva = fTMVAReader_[k_wGwGSF_EC]->EvaluateMVA(methodName_);
00712 }
00713 return mva;
00714 }
00715
00716
00717 double AntiElectronIDMVA3::MVAValue(const reco::PFTau& thePFTau,
00718 const reco::GsfElectron& theGsfEle)
00719
00720 {
00721 Float_t TauEtaAtEcalEntrance = -99.;
00722 float sumEtaTimesEnergy = 0;
00723 float sumEnergy = 0;
00724 for(unsigned int j = 0 ; j < (thePFTau.signalPFCands()).size() ; j++){
00725 reco::PFCandidateRef pfcandidate = (thePFTau.signalPFCands()).at(j);
00726 sumEtaTimesEnergy += pfcandidate->positionAtECALEntrance().eta()*pfcandidate->energy();
00727 sumEnergy += pfcandidate->energy();
00728 }
00729 if(sumEnergy>0)TauEtaAtEcalEntrance = sumEtaTimesEnergy/sumEnergy;
00730
00731 Float_t TauPt = thePFTau.pt();
00732 Float_t TauEmFraction = TMath::Max(thePFTau.emFraction(), (Float_t)0.);
00733 Float_t TauSignalPFGammaCands = thePFTau.signalPFGammaCands().size();
00734 Float_t TauLeadPFChargedHadrHoP = 0.;
00735 Float_t TauLeadPFChargedHadrEoP = 0.;
00736 if ( thePFTau.leadPFChargedHadrCand()->p() > 0. ) {
00737 TauLeadPFChargedHadrHoP = thePFTau.leadPFChargedHadrCand()->hcalEnergy()/thePFTau.leadPFChargedHadrCand()->p();
00738 TauLeadPFChargedHadrEoP = thePFTau.leadPFChargedHadrCand()->ecalEnergy()/thePFTau.leadPFChargedHadrCand()->p();
00739 }
00740 Float_t TauVisMass = thePFTau.mass();
00741 Float_t TauHadrMva = TMath::Max(thePFTau.electronPreIDOutput(),float(-1.0));
00742 std::vector<Float_t> GammasdEta;
00743 std::vector<Float_t> GammasdPhi;
00744 std::vector<Float_t> GammasPt;
00745 for ( unsigned i = 0 ; i < thePFTau.signalPFGammaCands().size(); ++i ) {
00746 reco::PFCandidateRef gamma = thePFTau.signalPFGammaCands().at(i);
00747 if ( thePFTau.leadPFChargedHadrCand().isNonnull() ) {
00748 GammasdEta.push_back(gamma->eta() - thePFTau.leadPFChargedHadrCand()->eta());
00749 GammasdPhi.push_back(gamma->phi() - thePFTau.leadPFChargedHadrCand()->phi());
00750 } else {
00751 GammasdEta.push_back(gamma->eta() - thePFTau.eta());
00752 GammasdPhi.push_back(gamma->phi() - thePFTau.phi());
00753 }
00754 GammasPt.push_back(gamma->pt());
00755 }
00756 Float_t TauKFNumHits = -99.;
00757 if((thePFTau.leadPFChargedHadrCand()->trackRef()).isNonnull()){
00758 TauKFNumHits = thePFTau.leadPFChargedHadrCand()->trackRef()->numberOfValidHits();
00759 }
00760 Float_t TauGSFNumHits = -99.;
00761 Float_t TauGSFChi2 = -99.;
00762 Float_t TauGSFTrackResol = -99.;
00763 Float_t TauGSFTracklnPt = -99.;
00764 Float_t TauGSFTrackEta = -99.;
00765 if((thePFTau.leadPFChargedHadrCand()->gsfTrackRef()).isNonnull()){
00766 TauGSFChi2 = thePFTau.leadPFChargedHadrCand()->gsfTrackRef()->normalizedChi2();
00767 TauGSFNumHits = thePFTau.leadPFChargedHadrCand()->gsfTrackRef()->numberOfValidHits();
00768 if ( thePFTau.leadPFChargedHadrCand()->gsfTrackRef()->pt() > 0. ) {
00769 TauGSFTrackResol = thePFTau.leadPFChargedHadrCand()->gsfTrackRef()->ptError()/thePFTau.leadPFChargedHadrCand()->gsfTrackRef()->pt();
00770 TauGSFTracklnPt = log(thePFTau.leadPFChargedHadrCand()->gsfTrackRef()->pt())*TMath::Ln10();
00771 }
00772 TauGSFTrackEta = thePFTau.leadPFChargedHadrCand()->gsfTrackRef()->eta();
00773 }
00774 Float_t TauPhi = thePFTau.phi();
00775 float sumPhiTimesEnergy = 0;
00776 float sumEnergyPhi = 0;
00777 for(unsigned int j = 0 ; j < (thePFTau.signalPFCands()).size() ; j++){
00778 reco::PFCandidateRef pfcandidate = (thePFTau.signalPFCands()).at(j);
00779 sumPhiTimesEnergy += pfcandidate->positionAtECALEntrance().phi()*pfcandidate->energy();
00780 sumEnergyPhi += pfcandidate->energy();
00781 }
00782 if(sumEnergy>0)TauPhi = sumPhiTimesEnergy/sumEnergyPhi;
00783 Float_t TaudCrackPhi = dCrackPhi(TauPhi,TauEtaAtEcalEntrance) ;
00784 Float_t TaudCrackEta = dCrackEta(TauEtaAtEcalEntrance) ;
00785 Float_t TauSignalPFChargedCands = thePFTau.signalPFChargedHadrCands().size();
00786 Float_t TauHasGsf = thePFTau.leadPFChargedHadrCand()->gsfTrackRef().isNonnull();
00787
00788 Float_t ElecEta = theGsfEle.eta();
00789 Float_t ElecPhi = theGsfEle.phi();
00790 Float_t ElecPt = theGsfEle.pt();
00791
00792 Float_t ElecEe = 0.;
00793 Float_t ElecEgamma = 0.;
00794 reco::SuperClusterRef pfSuperCluster = theGsfEle.pflowSuperCluster();
00795 if ( pfSuperCluster.isNonnull() && pfSuperCluster.isAvailable() ) {
00796 for ( reco::CaloCluster_iterator pfCluster = pfSuperCluster->clustersBegin();
00797 pfCluster != pfSuperCluster->clustersEnd(); ++pfCluster ) {
00798 double pfClusterEn = (*pfCluster)->energy();
00799 if ( pfCluster == pfSuperCluster->clustersBegin() ) ElecEe += pfClusterEn;
00800 else ElecEgamma += pfClusterEn;
00801 }
00802 }
00803 Float_t ElecPin = TMath::Sqrt(theGsfEle.trackMomentumAtVtx().Mag2());
00804 Float_t ElecPout = TMath::Sqrt(theGsfEle.trackMomentumOut().Mag2());
00805 Float_t ElecFbrem = theGsfEle.fbrem();
00806
00807 Float_t ElecChi2GSF = -99.;
00808 Float_t ElecGSFNumHits = -99.;
00809 Float_t ElecGSFTrackResol = -99.;
00810 Float_t ElecGSFTracklnPt = -99.;
00811 Float_t ElecGSFTrackEta = -99.;
00812 if ( theGsfEle.gsfTrack().isNonnull() ) {
00813 ElecChi2GSF = (theGsfEle).gsfTrack()->normalizedChi2();
00814 ElecGSFNumHits = (theGsfEle).gsfTrack()->numberOfValidHits();
00815 if ( theGsfEle.gsfTrack()->pt() > 0. ) {
00816 ElecGSFTrackResol = theGsfEle.gsfTrack()->ptError()/theGsfEle.gsfTrack()->pt();
00817 ElecGSFTracklnPt = log(theGsfEle.gsfTrack()->pt())*TMath::Ln10();
00818 }
00819 ElecGSFTrackEta = theGsfEle.gsfTrack()->eta();
00820 }
00821
00822 return MVAValue(TauEtaAtEcalEntrance,
00823 TauPt,
00824 TaudCrackEta,
00825 TaudCrackPhi,
00826 TauEmFraction,
00827 TauSignalPFGammaCands,
00828 TauLeadPFChargedHadrHoP,
00829 TauLeadPFChargedHadrEoP,
00830 TauVisMass,
00831 TauHadrMva,
00832 GammasdEta,
00833 GammasdPhi,
00834 GammasPt,
00835 TauKFNumHits,
00836 TauGSFNumHits,
00837 TauGSFChi2,
00838 TauGSFTrackResol,
00839 TauGSFTracklnPt,
00840 TauGSFTrackEta,
00841 TauPhi,
00842 TauSignalPFChargedCands,
00843 TauHasGsf,
00844 ElecEta,
00845 ElecPhi,
00846 ElecPt,
00847 ElecEe,
00848 ElecEgamma,
00849 ElecPin,
00850 ElecPout,
00851 ElecFbrem,
00852 ElecChi2GSF,
00853 ElecGSFNumHits,
00854 ElecGSFTrackResol,
00855 ElecGSFTracklnPt,
00856 ElecGSFTrackEta);
00857 }
00858
00859 double AntiElectronIDMVA3::MVAValue(const reco::PFTau& thePFTau)
00860 {
00861 Float_t TauEtaAtEcalEntrance = -99.;
00862 float sumEtaTimesEnergy = 0;
00863 float sumEnergy = 0;
00864 for(unsigned int j = 0 ; j < (thePFTau.signalPFCands()).size() ; j++){
00865 reco::PFCandidateRef pfcandidate = (thePFTau.signalPFCands()).at(j);
00866 sumEtaTimesEnergy += pfcandidate->positionAtECALEntrance().eta()*pfcandidate->energy();
00867 sumEnergy += pfcandidate->energy();
00868 }
00869 if(sumEnergy>0)TauEtaAtEcalEntrance = sumEtaTimesEnergy/sumEnergy;
00870
00871 Float_t TauPt = thePFTau.pt();
00872 Float_t TauEmFraction = TMath::Max(thePFTau.emFraction(), (Float_t)0.);
00873 Float_t TauSignalPFGammaCands = thePFTau.signalPFGammaCands().size();
00874 Float_t TauLeadPFChargedHadrHoP = 0.;
00875 Float_t TauLeadPFChargedHadrEoP = 0.;
00876 if ( thePFTau.leadPFChargedHadrCand()->p() > 0. ) {
00877 TauLeadPFChargedHadrHoP = thePFTau.leadPFChargedHadrCand()->hcalEnergy()/thePFTau.leadPFChargedHadrCand()->p();
00878 TauLeadPFChargedHadrEoP = thePFTau.leadPFChargedHadrCand()->ecalEnergy()/thePFTau.leadPFChargedHadrCand()->p();
00879 }
00880 Float_t TauVisMass = thePFTau.mass();
00881 Float_t TauHadrMva = TMath::Max(thePFTau.electronPreIDOutput(),float(-1.0));
00882 std::vector<Float_t> GammasdEta;
00883 std::vector<Float_t> GammasdPhi;
00884 std::vector<Float_t> GammasPt;
00885 for ( unsigned i = 0 ; i < thePFTau.signalPFGammaCands().size(); ++i ) {
00886 reco::PFCandidateRef gamma = thePFTau.signalPFGammaCands().at(i);
00887 if ( thePFTau.leadPFChargedHadrCand().isNonnull() ) {
00888 GammasdEta.push_back(gamma->eta() - thePFTau.leadPFChargedHadrCand()->eta());
00889 GammasdPhi.push_back(gamma->phi() - thePFTau.leadPFChargedHadrCand()->phi());
00890 } else {
00891 GammasdEta.push_back(gamma->eta() - thePFTau.eta());
00892 GammasdPhi.push_back(gamma->phi() - thePFTau.phi());
00893 }
00894 GammasPt.push_back(gamma->pt());
00895 }
00896 Float_t TauKFNumHits = -99.;
00897 if((thePFTau.leadPFChargedHadrCand()->trackRef()).isNonnull()){
00898 TauKFNumHits = thePFTau.leadPFChargedHadrCand()->trackRef()->numberOfValidHits();
00899 }
00900 Float_t TauGSFNumHits = -99.;
00901 Float_t TauGSFChi2 = -99.;
00902 Float_t TauGSFTrackResol = -99.;
00903 Float_t TauGSFTracklnPt = -99.;
00904 Float_t TauGSFTrackEta = -99.;
00905 if((thePFTau.leadPFChargedHadrCand()->gsfTrackRef()).isNonnull()){
00906 TauGSFChi2 = thePFTau.leadPFChargedHadrCand()->gsfTrackRef()->normalizedChi2();
00907 TauGSFNumHits = thePFTau.leadPFChargedHadrCand()->gsfTrackRef()->numberOfValidHits();
00908 if ( thePFTau.leadPFChargedHadrCand()->gsfTrackRef()->pt() > 0. ) {
00909 TauGSFTrackResol = thePFTau.leadPFChargedHadrCand()->gsfTrackRef()->ptError()/thePFTau.leadPFChargedHadrCand()->gsfTrackRef()->pt();
00910 TauGSFTracklnPt = log(thePFTau.leadPFChargedHadrCand()->gsfTrackRef()->pt())*TMath::Ln10();
00911 }
00912 TauGSFTrackEta = thePFTau.leadPFChargedHadrCand()->gsfTrackRef()->eta();
00913 }
00914 Float_t TauPhi = thePFTau.phi();
00915 float sumPhiTimesEnergy = 0;
00916 float sumEnergyPhi = 0;
00917 for(unsigned int j = 0 ; j < (thePFTau.signalPFCands()).size() ; j++){
00918 reco::PFCandidateRef pfcandidate = (thePFTau.signalPFCands()).at(j);
00919 sumPhiTimesEnergy += pfcandidate->positionAtECALEntrance().phi()*pfcandidate->energy();
00920 sumEnergyPhi += pfcandidate->energy();
00921 }
00922 if(sumEnergy>0)TauPhi = sumPhiTimesEnergy/sumEnergyPhi;
00923 Float_t TaudCrackPhi = dCrackPhi(TauPhi,TauEtaAtEcalEntrance) ;
00924 Float_t TaudCrackEta = dCrackEta(TauEtaAtEcalEntrance) ;
00925 Float_t TauSignalPFChargedCands = thePFTau.signalPFChargedHadrCands().size();
00926 Float_t TauHasGsf = thePFTau.leadPFChargedHadrCand()->gsfTrackRef().isNonnull();
00927
00928 Float_t dummyElecEta = 9.9;
00929
00930 return MVAValue(TauEtaAtEcalEntrance,
00931 TauPt,
00932 TaudCrackEta,
00933 TaudCrackPhi,
00934 TauEmFraction,
00935 TauSignalPFGammaCands,
00936 TauLeadPFChargedHadrHoP,
00937 TauLeadPFChargedHadrEoP,
00938 TauVisMass,
00939 TauHadrMva,
00940 GammasdEta,
00941 GammasdPhi,
00942 GammasPt,
00943 TauKFNumHits,
00944 TauGSFNumHits,
00945 TauGSFChi2,
00946 TauGSFTrackResol,
00947 TauGSFTracklnPt,
00948 TauGSFTrackEta,
00949 TauPhi,
00950 TauSignalPFChargedCands,
00951 TauHasGsf,
00952 dummyElecEta,
00953 0.,
00954 0.,
00955 0.,
00956 0.,
00957 0.,
00958 0.,
00959 0.,
00960 0.,
00961 0.,
00962 0.,
00963 0.,
00964 0.);
00965 }
00966
00967
00968 double
00969 AntiElectronIDMVA3::minimum(double a,double b){
00970 if(TMath::Abs(b)<TMath::Abs(a)) return b;
00971 else return a;
00972 }
00973
00974
00975 double
00976 AntiElectronIDMVA3:: dCrackPhi(double phi, double eta){
00977
00978 double pi= TMath::Pi();
00979
00980
00981 static std::vector<double> cPhi;
00982 if(cPhi.size()==0)
00983 {
00984 cPhi.resize(18,0);
00985 cPhi[0]=2.97025;
00986 for(unsigned i=1;i<=17;++i) cPhi[i]=cPhi[0]-2*i*pi/18;
00987 }
00988
00989
00990 double delta_cPhi=0.00638;
00991
00992 double m;
00993
00994 if (eta>=- 1.47464 && eta<= 1.47464){
00995
00996
00997 if(eta<0) phi +=delta_cPhi;
00998
00999 if (phi>=-pi && phi<=pi){
01000
01001
01002 if (phi<cPhi[17] || phi>=cPhi[0]){
01003 if (phi<0) phi+= 2*pi;
01004 m = minimum(phi -cPhi[0],phi-cPhi[17]-2*pi);
01005 }
01006
01007
01008 else{
01009 bool OK = false;
01010 unsigned i=16;
01011 while(!OK){
01012 if (phi<cPhi[i]){
01013 m=minimum(phi-cPhi[i+1],phi-cPhi[i]);
01014 OK=true;
01015 }
01016 else i-=1;
01017 }
01018 }
01019 }
01020 else{
01021 m=0.;
01022
01023 }
01024 }
01025 else{
01026 return -99.;
01027
01028 }
01029
01030 return TMath::Abs(m);
01031 }
01032
01033
01034 double
01035 AntiElectronIDMVA3:: dCrackEta(double eta){
01036
01037
01038 double cracks[5] = {0, 4.44747e-01, 7.92824e-01, 1.14090e+00, 1.47464e+00};
01039
01040 double m=99.;
01041
01042 for(int i=0;i<5;i++){
01043 double d = minimum(eta-cracks[i], eta+cracks[i]);
01044 if (TMath::Abs(d)<TMath::Abs(m)){
01045 m=d;
01046 }
01047 }
01048
01049 return TMath::Abs(m);
01050 }