#ifndef _TLIKELIHOODLBE_HH_ #define _TLIKELIHOODLBE_HH_ //------------------------------------------------------------------------ // Description: Class TLikelihoodLBE // ------------ // // class for calculating likelihood for central electrons (LBE) // // R.Lysak (lysak@fnal.gov, IEP SAS) // // Modified for topntuple usage (W. Yao) 9/30/2010 //----------------------------------------------------------------------- #include "TObject.h" #include "TFile.h" #include "TH1.h" #include "TH1D.h" #include "HighLevelObjects/HighLevelObjects.hh" #include "TClonesArray.h" using namespace std; class TDbnLepton; class TLikelihoodLBE : public TObject { public: enum LepIDvariable { kEt, kEta, kHadEm, kEOverP, kLshr, kCalIso, kTrkIso, kTrackPt, kTrackZ0, kDelZ, kQDelX, kXCes, kZCes, kZ0, kChi2Cot, kNCotAxSeg, kNCotStSeg, kNCotHitsAx, kNCotHitsSt, kNCotHitsTot, kNSvxHits, kNumVariables }; TLikelihoodLBE(); TLikelihoodLBE(char* inFileSignal, char* inFileBckg); TLikelihoodLBE(TH1D** templates_signal, TH1D** templates_bckg); ~TLikelihoodLBE(); //methods doing the real work int ReadVariables(const electron * ele, const offltrack* eletrk); int CalculateLikelihood(const electron * ele, const offltrack* eletrk); double Psignal(LepIDvariable var,double value); double Psignal(LepIDvariable var); double Pbckg(LepIDvariable var,double value); double Pbckg(LepIDvariable var); double HistValue(TH1D* hist, double value); double GetLikelihood() { return _likelihood; }; int SetDebugMode(int val=1) { _debug = val; return 0;}; int SetVariableUsage( TLikelihoodLBE::LepIDvariable var, bool useVar) { _usingVariable[var] = useVar ; return 0;}; int SetAllVariablesUsage(bool useVar); private: TFile* _inFileSignal; TFile* _inFileBckg; //switches which determines where the templates were read from bool _inputIsFile; bool _inputIsHist; //likelihood value obtained according lepton ID variables templates double _likelihood; //array of variables considered in likelihood double variable [kNumVariables]; //switch which turn off/on usage of a given variable in likelihood calculation bool _usingVariable [kNumVariables]; //signal templates (real electrons) for electron ID variables TH1D* _hVarSignal [kNumVariables]; //background templates (fakes) for electron ID variables TH1D* _hVarBckg [kNumVariables]; //not using for now //char* variableName[kNumVariables]; //int variableInt [kNumVariables]; //bool isInt [kNumVariables]; //int NBins [kNumVariables]; //double kVarMin [kNumVariables]; //double kVarMax [kNumVariables]; int _debug; // ClassDef(TLikelihoodLBE,1); }; #endif // _TLIKELIHOODLBE_HH_