ViewVC Help
View File | Revision Log | Show Annotations | Root Listing
root/cvsroot/UserCode/LJMet/MultivariateAnalysis/interface/LJetsTopoVars.h
Revision: 1.4
Committed: Tue Mar 30 01:32:31 2010 UTC (15 years, 1 month ago) by msegala
Content type: text/plain
Branch: MAIN
CVS Tags: V00-03-01, ZMorph_BASE_20100408, gak040610_morphing, HEAD
Branch point for: ZMorph-V00-03-01
Changes since 1.3: +7 -2 lines
Log Message:
msegala32910

File Contents

# User Rev Content
1 kukartse 1.1 /***
2    
3     Adopted from the D0 framework,
4     used to use event.get("caf_util::MET", met), etc, so needs something like METSelector to run upstream
5    
6     ***/
7    
8     #ifndef LJETSTOPOVARS
9     #define LJETSTOPOVARS
10    
11     #include <string>
12     #include <vector>
13     #include "FWCore/Framework/interface/Event.h"
14     #include "LJMet/MultivariateAnalysis/interface/TMBLorentzVector.h"
15     //#include "cafe/Event.hpp"
16     #include "TVectorD.h"
17    
18    
19     class LJetsTopoVars
20     {
21     public:
22     LJetsTopoVars(std::string jets, std::string met, std::string lepton, bool isMuon)
23     :m_jetBranch(jets),
24     m_metBranch(met),
25     m_leptonBranch(lepton),
26     m_isMuon(isMuon),
27    
28    
29     //_electron(NULL),
30     //_muon( NULL),
31    
32     _ht( std::vector<double>(22, 0.) ),
33     _htOK( false),
34     _evtTopo( std::vector<double>( 3, 0.) ),
35     _evtTopoOK( false),
36     _kt( std::vector<double>( 3, 0.) ),
37     _ktOK( false),
38     _mt( std::vector<double>( 2, 0.) ),
39     _mtOK( false)
40     {};
41    
42 kukartse 1.2 // returns # of removed jets due to insufficient isolation from lepton
43     //void setEvent(const edm::Event& event);
44 msegala 1.3 //int setEvent(const edm::Event& event, double min_dr_jet_lepton=-0.01);
45    
46    
47     //###################################################################################################
48     //##
49     //## Initiate LJetsTopoVars using one lepton, one MET and 4 leading jets momentum. This initiation is
50     //## used when one of the leptons is converted to a neutrino.
51     //##
52     //###################################################################################################
53    
54 msegala 1.4 int setEventMetFixed(TLorentzVector&,TLorentzVector&, TLorentzVector&, TLorentzVector&, TLorentzVector&, TLorentzVector&,double min_dr_jet_lepton=-0.01); //4 jets
55     int setEventMetFixed(TLorentzVector&, TLorentzVector&, TLorentzVector&, TLorentzVector&, TLorentzVector&,double min_dr_jet_lepton=-0.01); //3 jets
56     int setEventMetFixed(TLorentzVector&, TLorentzVector&, TLorentzVector&, TLorentzVector&,double min_dr_jet_lepton=-0.01); //2 jets
57     int setEventMetFixed(TLorentzVector&, TLorentzVector&, TLorentzVector&,double min_dr_jet_lepton=-0.01); //1 jet
58     int setEventMetFixed(TLorentzVector&, TLorentzVector&,double min_dr_jet_lepton=-0.01); //0 jet
59     int setEvent(const edm::Event& event, double, double min_dr_jet_lepton=-0.01); //This is for corrected MET
60 msegala 1.3
61 msegala 1.4
62 msegala 1.3
63    
64 kukartse 1.1
65     double aplanarity() const;
66     double centrality() const;
67     double sphericity() const;
68     double ht() const;
69     double htpluslepton() const;
70     double methtpluslepton() const;
71     double h() const;
72     double ktMinPrime() const;
73     double dphiLepMet() const;
74     double minDijetMass() const;
75     double maxJetEta() const;
76     double Et3() const;
77     double minDijetDeltaR() const;
78     double LeptonJet_DeltaR(); //btw lepton and leading 2 jet, minimum
79     double Jet1Jet2_DeltaR();
80     double Jet1Jet2_DeltaPhi();
81     double Jet1Jet2_M();
82     double Jet1Jet2_Pt();
83     double Jet1Jet2W_M();
84     double Jet1Jet2W_Pt();
85    
86     double Hz(); //scalar sum of longitudinal energies of first four jets, the muon, and the neutrino
87     double HT2(); //scalar sum of transverse energies of the 2nd, 3rd, and 4th jets
88     double HT2prime(); //HT2/Hz
89     double W_MT(); //W transverse mass
90     double W_M(); //W mass
91     double W_Pt(); //W
92     double DphiJMET(); //Delta phi btw leading jet and MET
93    
94     //muon only (throws exception if not)
95     double Muon_DeltaR(); //btw muon and jet, minimum
96     double Muon_etHaloScaled(); //TMBMuon::etHalo()/pT
97     double Muon_etTrkConeScaled(); //TMBMuon::etTrkCone()/pT
98    
99     //electron only (throws exception if not)
100     double Electron_iso(); //TMBEMCluster::iso()
101     double Electron_lhood(); //TMBEMCluster::Lhood8(); is this right?
102    
103     // Ht
104     double getHt() {if(!_htOK) calcHt(); return _ht[ 0];}
105     double getHtp() {if(!_htOK) calcHt(); return _ht[ 1];}
106     double getHtpp() {if(!_htOK) calcHt(); return _ht[ 2];}
107     double getHt2() {if(!_htOK) calcHt(); return _ht[ 3];}
108     double getHt2p() {if(!_htOK) calcHt(); return _ht[ 4];}
109     double getHt2pp() {if(!_htOK) calcHt(); return _ht[ 5];}
110     double getHt3() {if(!_htOK) calcHt(); return _ht[ 6];}
111     double getHt3p() {if(!_htOK) calcHt(); return _ht[ 7];}
112     double getHt3pp() {if(!_htOK) calcHt(); return _ht[ 8];}
113     double getCen() {if(!_htOK) calcHt(); return _ht[ 9];}
114     double getNJW() {if(!_htOK) calcHt(); return _ht[10];}
115     double getJetEtaMax() {if(!_htOK) calcHt(); return _ht[11];}
116     double getMdijetMin() {if(!_htOK) calcHt(); return _ht[12];}
117     double getMtjets() {if(!_htOK) calcHt(); return _ht[13];}
118     double getSqrtsT() {if(!_htOK) calcHt(); return _ht[14];}
119     double getMtAurelio() {if(!_htOK) calcHt(); return _ht[15];}
120     double getPzOverHT() {if(!_htOK) calcHt(); return _ht[16];}
121     double getMevent() {if(!_htOK) calcHt(); return _ht[17];}
122     double getM123inv() {if(!_htOK) calcHt(); return _ht[18];}
123     double getEta2Sum() {if(!_htOK) calcHt(); return _ht[19];}
124     double getMwRec() {if(!_htOK) calcHt(); return _ht[20];}
125     double getH() {if(!_htOK) calcHt(); return _ht[21];}
126    
127     // event topo
128     double getSph() {if(!_evtTopoOK) calcEvtTopo(); return _evtTopo[0];}
129     double getApl() {if(!_evtTopoOK) calcEvtTopo(); return _evtTopo[1];}
130     double getAplMu() {if(!_evtTopoOK) calcEvtTopo(); return _evtTopo[2];}
131    
132     // Kt
133     double getKtminp() {if(!_ktOK) calcKt(); return _kt[0];}
134     double getKtminpReduced() {if(!_ktOK) calcKt(); return _kt[1];}
135     double getDrMinJetJet() {if(!_ktOK) calcKt(); return _kt[2];}
136    
137     // mT
138     double getDphiMuMet() {if(!_mtOK) calcMt(); return _mt[0];}
139     double getMt() {if(!_mtOK) calcMt(); return _mt[1];}
140    
141     // Momentum tensor eigenvalues
142     TVectorD getEigen() {if(!_evtTopoOK) calcEvtTopo(); return eigenval;}
143    
144     // Neutrino
145     TMBLorentzVector GetNeutrino() {return _neutrino;}
146    
147     private:
148     std::string m_jetBranch, m_metBranch, m_leptonBranch;
149     std::vector<TMBLorentzVector> m_jets;
150     TMBLorentzVector m_met;
151     TMBLorentzVector m_lepton;
152    
153     TVectorD eigenval;
154    
155     bool m_isMuon;
156    
157     /***** removed temporarily
158     const TMBEMCluster* _electron;
159     const TMBMuon* _muon;
160     *****/
161    
162     //std::vector<TheJetClass*> _jetRAW;
163     //std::vector<TLorentzVector> _jet;
164     //TLorentzVector _lepton;
165     //TLorentzVector _neutrino;
166     TMBLorentzVector _neutrino;
167    
168     void calcHt();
169     std::vector<double> _ht;
170     bool _htOK;
171    
172     void calcEvtTopo();
173     std::vector<double> _evtTopo;
174     bool _evtTopoOK;
175    
176     void calcKt();
177     std::vector<double> _kt;
178     bool _ktOK;
179    
180     void calcMt();
181     std::vector<double> _mt;
182     bool _mtOK;
183     };
184    
185     #endif //LJETSTOPOVARS