ViewVC Help
View File | Revision Log | Show Annotations | Root Listing
root/cvsroot/UserCode/VHbbAnalysis/VHbbDataFormats/interface/VHbbCandidate.h
Revision: 1.11.2.1
Committed: Fri Jul 27 15:40:08 2012 UTC (12 years, 9 months ago) by wilken
Content type: text/plain
Branch: V21emuCandidate
Changes since 1.11: +47 -2 lines
Log Message:
adding emu candidate

File Contents

# User Rev Content
1 tboccali 1.1 #ifndef VHbbCandidate__H
2     #define VHbbCandidate__H
3    
4     #include <TLorentzVector.h>
5     #include <TVector2.h>
6     #include <vector>
7    
8     #include "VHbbAnalysis/VHbbDataFormats/interface/VHbbEvent.h"
9    
10     class VHbbCandidate {
11     public:
12 arizzi 1.7 //Zmumu = 0
13     //Zee = 1
14     //Wmun = 2
15     //Wen = 3
16     //Znn = 4
17    
18 wilken 1.11.2.1 enum CandidateType{Zmumu, Zee, Wmun, Wen, Znn, Zemu, UNKNOWN};
19 tboccali 1.1
20     VHbbCandidate(){candidateType=UNKNOWN;}
21    
22     class VectorCandidate {
23     public:
24 arizzi 1.10 VectorCandidate() : firstLepton(99999),secondLepton(99999) {}
25 arizzi 1.8 double Mt(CandidateType candidateType) const {
26 arizzi 1.6 if(candidateType==Wen)
27     {
28     float ptl=electrons[0].p4.Pt();
29     float met=mets[0].p4.Pt();
30     float et=ptl+met;
31     return sqrt(et*et - p4.Pt()*p4.Pt() );
32     }
33     if(candidateType==Wmun)
34     {
35     float ptl=muons[0].p4.Pt();
36     float met=mets[0].p4.Pt();
37     float et=ptl+met;
38     return sqrt(et*et - p4.Pt()*p4.Pt() );
39     }
40 wilken 1.11.2.1 if(candidateType==Zemu)
41     {
42     float ptl=muons[0].p4.Pt();
43     float met=mets[0].p4.Pt();
44     float et=ptl+met;
45     return sqrt(et*et - p4.Pt()*p4.Pt() );
46     }
47    
48 arizzi 1.6 return 0;
49     }
50 wilken 1.11.2.1 double Mte(CandidateType candidateType) const {
51     if(candidateType==Zemu)
52     {
53     TVector3 Vecte = electrons[0].p4.Vect();
54     TVector3 VectMET = mets[0].p4.Vect();
55     float dotprod = Vecte.Dot(VectMET);
56     float cosphi = dotprod/(Vecte.Mag()*VectMET.Mag());
57     float ptl=electrons[0].p4.Pt();
58     float met=mets[0].p4.Pt();
59     float et=2*ptl*met;
60     return sqrt(et*(1 - cosphi));
61     }
62     return 0;
63     }
64     double Mtmu(CandidateType candidateType) const {
65     if(candidateType==Zemu)
66     {
67     TVector3 Vectmu = muons[0].p4.Vect();
68     TVector3 VectMET = mets[0].p4.Vect();
69     float dotprod = Vectmu.Dot(VectMET);
70     float cosphi = dotprod/(Vectmu.Mag()*VectMET.Mag());
71     float ptl=muons[0].p4.Pt();
72     float met=mets[0].p4.Pt();
73     float et=2*ptl*met;
74     return sqrt(et*(1 - cosphi));
75     }
76     return 0;
77     }
78    
79    
80 tboccali 1.4 TLorentzVector p4;
81 tboccali 1.1 std::vector<VHbbEvent::MuonInfo> muons;
82     std::vector<VHbbEvent::ElectronInfo> electrons;
83     std::vector<VHbbEvent::TauInfo> taus;
84     std::vector<VHbbEvent::METInfo> mets;
85    
86 tboccali 1.9 unsigned int firstLepton,secondLepton;
87    
88 tboccali 1.1 };
89    
90     class HiggsCandidate {
91     public:
92 tboccali 1.4 TLorentzVector p4;
93 tboccali 1.1 std::vector<VHbbEvent::SimpleJet> jets;
94     float deltaTheta;
95 tboccali 1.2 std::vector <float> helicities;
96 tboccali 1.3 public:
97 tboccali 1.1 VHbbEvent::SimpleJet& firstJet(){return jets[0];}
98     VHbbEvent::SimpleJet& secondJet(){return jets[1];}
99     };
100    
101 dlopes 1.11 class FatHiggsCandidate {
102     public:
103     TLorentzVector p4;
104     std::vector<VHbbEvent::SimpleJet> jets;
105     bool FatHiggsFlag;
106     int subjetsSize;
107     float deltaTheta;
108     std::vector <float> helicities;
109     public:
110     VHbbEvent::SimpleJet& firstJet(){return jets[0];}
111     VHbbEvent::SimpleJet& secondJet(){return jets[1];}
112     };
113 tboccali 1.1
114     void setCandidateType (CandidateType c){candidateType = c;}
115 arizzi 1.8
116    
117     double deltaPhi() const {
118     return V.p4.DeltaPhi(H.p4);
119     }
120    
121     double Mt() const {
122     return V.Mt(candidateType);
123     }
124 wilken 1.11.2.1 double Mte() const {
125     return V.Mte(candidateType);
126     }
127     double Mtmu() const {
128     return V.Mtmu(candidateType);
129     }
130    
131 tboccali 1.1
132 arizzi 1.8 int additionalLeptons() const {
133     int expectedLeptons = 0;
134     if( candidateType == Wmun || candidateType == Wen) expectedLeptons =1;
135 wilken 1.11.2.1 if( candidateType == Zmumu || candidateType == Zee || candidateType == Zemu) expectedLeptons =2;
136 arizzi 1.8
137     return ( V.muons.size() + V.electrons.size() - expectedLeptons);
138    
139     }
140    
141 tboccali 1.1 public:
142 tboccali 1.4 TLorentzVector p4(){return V.p4+H.p4;}
143 tboccali 1.1 CandidateType candidateType;
144     HiggsCandidate H;
145 dlopes 1.11 FatHiggsCandidate FatH;
146 tboccali 1.1 VectorCandidate V;
147     std::vector<VHbbEvent::SimpleJet> additionalJets;
148     };
149    
150    
151     #endif