ViewVC Help
View File | Revision Log | Show Annotations | Root Listing
root/cvsroot/UserCode/VHbbAnalysis/VHbbDataFormats/interface/VHbbCandidate.h
Revision: 1.12.4.1
Committed: Mon Feb 11 19:32:33 2013 UTC (12 years, 2 months ago) by wilken
Content type: text/plain
Branch: V42TauCandidate
Changes since 1.12: +42 -5 lines
Log Message:
TauCandidates

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.12.4.1 enum CandidateType{Zmumu, Zee, Wmun, Wen, Znn, Zemu, Ztaumu, Ztaue, Wtaun, Ztautau, Zbb, 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 wilken 1.12.4.1 if(candidateType==Wen||candidateType==Ztaue)
27 arizzi 1.6 {
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 wilken 1.12.4.1 if(candidateType==Wmun||candidateType==Zemu||candidateType==Ztaumu)
34 arizzi 1.6 {
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     return 0;
41     }
42 wilken 1.12.4.1 double Mte(CandidateType candidateType) const {
43     if(candidateType==Zemu||candidateType==Ztaue)
44     {
45     TVector3 Vecte = electrons[0].p4.Vect();
46     TVector3 VectMET = mets[0].p4.Vect();
47     float dotprod = Vecte.Dot(VectMET);
48     float cosphi = dotprod/(Vecte.Mag()*VectMET.Mag());
49     float ptl=electrons[0].p4.Pt();
50     float met=mets[0].p4.Pt();
51     float et=2*ptl*met;
52     return sqrt(et*(1 - cosphi));
53     }
54     return 0;
55     }
56     double Mtmu(CandidateType candidateType) const {
57     if(candidateType==Zemu||candidateType==Ztaumu)
58     {
59     TVector3 Vectmu = muons[0].p4.Vect();
60     TVector3 VectMET = mets[0].p4.Vect();
61     float dotprod = Vectmu.Dot(VectMET);
62     float cosphi = dotprod/(Vectmu.Mag()*VectMET.Mag());
63     float ptl=muons[0].p4.Pt();
64     float met=mets[0].p4.Pt();
65     float et=2*ptl*met;
66     return sqrt(et*(1 - cosphi));
67     }
68     return 0;
69     }
70    
71    
72 tboccali 1.4 TLorentzVector p4;
73 tboccali 1.1 std::vector<VHbbEvent::MuonInfo> muons;
74     std::vector<VHbbEvent::ElectronInfo> electrons;
75     std::vector<VHbbEvent::TauInfo> taus;
76     std::vector<VHbbEvent::METInfo> mets;
77    
78 tboccali 1.9 unsigned int firstLepton,secondLepton;
79    
80 tboccali 1.1 };
81    
82     class HiggsCandidate {
83     public:
84 tboccali 1.4 TLorentzVector p4;
85 tboccali 1.1 std::vector<VHbbEvent::SimpleJet> jets;
86 arizzi 1.12 bool HiggsFlag;
87 tboccali 1.1 float deltaTheta;
88 tboccali 1.2 std::vector <float> helicities;
89 tboccali 1.3 public:
90 tboccali 1.1 VHbbEvent::SimpleJet& firstJet(){return jets[0];}
91     VHbbEvent::SimpleJet& secondJet(){return jets[1];}
92     };
93    
94 dlopes 1.11 class FatHiggsCandidate {
95     public:
96     TLorentzVector p4;
97     std::vector<VHbbEvent::SimpleJet> jets;
98     bool FatHiggsFlag;
99     int subjetsSize;
100     float deltaTheta;
101     std::vector <float> helicities;
102     public:
103     VHbbEvent::SimpleJet& firstJet(){return jets[0];}
104     VHbbEvent::SimpleJet& secondJet(){return jets[1];}
105     };
106 tboccali 1.1
107     void setCandidateType (CandidateType c){candidateType = c;}
108 arizzi 1.8
109    
110     double deltaPhi() const {
111     return V.p4.DeltaPhi(H.p4);
112     }
113    
114     double Mt() const {
115     return V.Mt(candidateType);
116     }
117 wilken 1.12.4.1 double Mte() const {
118     return V.Mte(candidateType);
119     }
120     double Mtmu() const {
121     return V.Mtmu(candidateType);
122     }
123    
124 tboccali 1.1
125 arizzi 1.8 int additionalLeptons() const {
126     int expectedLeptons = 0;
127 wilken 1.12.4.1 if( candidateType == Wmun || candidateType == Wen || candidateType == Ztaumu || candidateType == Ztaue) expectedLeptons =1;
128     if( candidateType == Zmumu || candidateType == Zee || candidateType == Zemu) expectedLeptons =2;
129 arizzi 1.8
130     return ( V.muons.size() + V.electrons.size() - expectedLeptons);
131    
132     }
133    
134 tboccali 1.1 public:
135 tboccali 1.4 TLorentzVector p4(){return V.p4+H.p4;}
136 tboccali 1.1 CandidateType candidateType;
137     HiggsCandidate H;
138 dlopes 1.11 FatHiggsCandidate FatH;
139 tboccali 1.1 VectorCandidate V;
140     std::vector<VHbbEvent::SimpleJet> additionalJets;
141 arizzi 1.12 std::vector<VHbbEvent::SimpleJet> additionalJetsFat;
142 tboccali 1.1 };
143    
144    
145     #endif