ViewVC Help
View File | Revision Log | Show Annotations | Root Listing
root/cvsroot/UserCode/VHbb/interface/VHbbNameSpace.h
(Generate patch)

Comparing UserCode/VHbb/interface/VHbbNameSpace.h (file contents):
Revision 1.1 by bortigno, Fri Dec 14 15:59:45 2012 UTC vs.
Revision 1.5 by nmohr, Thu Jan 17 16:32:37 2013 UTC

# Line 1 | Line 1
1 <
1 > #include "TLorentzVector.h"
2 > #include "TVector3.h"
3   #include "TMath.h"
4  
5   namespace VHbb {
# Line 15 | Line 16 | namespace VHbb {
16      {
17        double deta = eta1 - eta2;
18        double dphi = deltaPhi(phi1, phi2);
19 <      return std::sqrt(deta*deta + dphi*dphi);
19 >      return TMath::Sqrt(deta*deta + dphi*dphi);
20 >    }
21 >
22 >
23 >  double Hmass( double V_eta,double V_phi,double V_pt,
24 >                double hJet1_eta,double hJet1_phi,double hJet1_pt,
25 >                double hJet2_eta,double hJet2_phi,double hJet2_pt ){
26 >    
27 >    TVector3 V(1,1,1);
28 >    V.SetPtEtaPhi(V_pt,V_eta,V_phi);
29 >    
30 >    TVector3 H1(1,1,1);
31 >    H1.SetPtEtaPhi(hJet1_pt,hJet1_eta,hJet1_phi);
32 >    H1.SetMag(1/sin(H1.Theta()));
33 >    
34 >    TVector3 H2(1,1,1);
35 >    H2.SetPtEtaPhi(hJet2_pt,hJet2_eta,hJet2_phi);
36 >    H2.SetMag(1/sin(H2.Theta()));
37 >    
38 >    TVector3 n1(H1);
39 >    TVector3 n2(H2);
40 >    
41 >    double det= n1.Px() * n2.Py() - n2.Px() * n1.Py();
42 >    
43 >    H1.SetMag( (  - n2.Py() * V.Px() + n2.Px() * V.Py() )  / (sin(n1.Theta()) *det ) );
44 >    H2.SetMag( ( + n1.Py() * V.Px() - n1.Px() * V.Py() )  / (sin(n2.Theta())  *det ) );
45 >    
46 >    double mass=TMath::Sqrt( TMath::Power( (H1.Mag()+H2.Mag()),2 ) - TMath::Power(( ( H1+H2 ).Mag()),2) );
47 >    
48 >    return mass;
49 >    
50 >  }
51 >  
52 >  double Hmass_comb(double hJet1_eta,double hJet1_phi,double hJet1_pt, double hJet1_mass,
53 >                    double hJet2_eta,double hJet2_phi,double hJet2_pt, double hJet2_mass){
54 >
55 >    TLorentzVector H1, H2;
56 >    H1.SetPtEtaPhiM(hJet1_pt,hJet1_eta,hJet1_phi, hJet1_mass);;
57 >    H2.SetPtEtaPhiM(hJet2_pt,hJet2_eta,hJet2_phi, hJet2_mass);
58 >
59 >    return (H1 + H2).M();
60 >
61 >  }
62 >
63 >  double Hmass_3j(double h_eta,double h_phi,double h_pt, double h_mass,
64 >                  double aJet_eta,double aJet_phi,double aJet_pt, double aJet_mass){
65 >
66 >    TLorentzVector H, H3;
67 >    H.SetPtEtaPhiM( h_pt,h_eta,h_phi, h_mass);;
68 >    H3.SetPtEtaPhiM(aJet_pt,aJet_eta,aJet_phi, aJet_mass);
69 >
70 >    return (H + H3).M();
71 >
72 >
73 >  }
74 >  
75 >  double ANGLELZ(double pt, double eta, double phi, double mass, double pt2, double eta2, double phi2, double mass2){
76 >  TLorentzVector m1, m2, msum;
77 >  m1.SetPtEtaPhiM(pt, eta, phi, mass);
78 >  m2.SetPtEtaPhiM(pt2, eta2, phi2, mass2);
79 >  msum = m1 + m2;
80 >
81 >  TVector3 bZ =  msum.BoostVector();
82 >
83 >  m1.Boost(-bZ);  
84 >  m2.Boost(-bZ);  
85 >
86 >  TVector3 b1;
87 >
88 >
89 >  if((int) (pt) % 2 == 0)
90 >    b1 =  m1.BoostVector();
91 >  else
92 >    b1 =  m2.BoostVector();
93 >
94 > double cosTheta = b1.Dot(msum.BoostVector()) / (b1.Mag()*msum.BoostVector().Mag());
95 > return(cosTheta);
96 >  }
97 >
98 >
99 >   double ANGLEHB(double pt, double eta, double phi, double e, double pt2, double eta2, double phi2, double e2){
100 > TLorentzVector m1, m2, msum;
101 > m1.SetPtEtaPhiE(pt, eta, phi, e);
102 > m2.SetPtEtaPhiE(pt2, eta2, phi2, e2);
103 > msum = m1 + m2;
104 >
105 > TVector3 bZ =  msum.BoostVector();
106 >
107 > m1.Boost(-bZ);
108 > m2.Boost(-bZ);  
109 >
110 > TVector3 b1;
111 >
112 >  if((int) (pt) % 2 == 0)
113 >    b1 =  m1.BoostVector();
114 >  else
115 >    b1 =  m2.BoostVector();
116 >
117 > double cosTheta = b1.Dot(msum.BoostVector()) / (b1.Mag()*msum.BoostVector().Mag());
118 > return(cosTheta);
119 >   }
120 >
121 >   double metCorSysShift(double met, double metphi, int Nvtx, int EVENT_run)
122 > {
123 >    double metx = met * cos(metphi);
124 >    double mety = met * sin(metphi);
125 >    double px = 0.0, py = 0.0;
126 >    if (EVENT_run!=1) {
127 >        //pfMEtSysShiftCorrParameters_2012runAplusBvsNvtx_data
128 >        px = +1.68804e-01 + 3.37139e-01*Nvtx;
129 >        py = -1.72555e-01 - 1.79594e-01*Nvtx;
130 >    } else {
131 >        //pfMEtSysShiftCorrParameters_2012runAplusBvsNvtx_mc
132 >        px = +2.22335e-02 - 6.59183e-02*Nvtx;
133 >        py = +1.52720e-01 - 1.28052e-01*Nvtx;
134      }
135 +    metx -= px;
136 +    mety -= py;
137 +    return std::sqrt(metx*metx + mety*mety);
138 + }
139 +
140 +    double metphiCorSysShift(double met, double metphi, int Nvtx, int EVENT_run)
141 + {
142 +    double metx = met * cos(metphi);
143 +    double mety = met * sin(metphi);
144 +    double px = 0.0, py = 0.0;
145 +    if (EVENT_run!=1) {
146 +
147 +        //pfMEtSysShiftCorrParameters_2012runAplusBvsNvtx_data
148 +        px = +1.68804e-01 + 3.37139e-01*Nvtx;
149 +        py = -1.72555e-01 - 1.79594e-01*Nvtx;
150 +    } else {
151 +        //pfMEtSysShiftCorrParameters_2012runAplusBvsNvtx_mc
152 +        px = +2.22335e-02 - 6.59183e-02*Nvtx;
153 +        py = +1.52720e-01 - 1.28052e-01*Nvtx;
154 +    }
155 +    metx -= px;
156 +    mety -= py;
157 +    if (metx == 0.0 && mety == 0.0)
158 +        return 0.0;
159 +
160 +    double phi1 = std::atan2(mety,metx);
161 +    double phi2 = std::atan2(mety,metx)-2.0*M_PI;
162 +    if (std::abs(phi1-metphi) < std::abs(phi2-metphi)+0.5*M_PI)
163 +        return phi1;
164 +    else
165 +        return phi2;
166 + }
167 +
168 + double resolutionBias(double eta)
169 + {
170 + // return 0;//Nominal!
171 + if(eta< 1.1) return 0.05;
172 + if(eta< 2.5) return 0.10;
173 + if(eta< 5) return 0.30;
174 + return 0;
175 + }
176 +
177 + double evalJERBias( double ptreco, double ptgen, double eta1){
178 +  double eta = fabs(eta1);
179 +  double cor =1;  
180 +  if ((fabs(ptreco - ptgen)/ ptreco)<0.5) { //Limit the effect to the core
181 +     cor = (ptreco +resolutionBias(eta) *(ptreco-ptgen))/ptreco;  
182 +  }
183 +  return ptreco*cor;
184 + }
185 +
186 + double evalEt( double pt, double eta, double phi, double e){
187 +  TLorentzVector j;
188 +  j.SetPtEtaPhiE(pt,eta,phi, e );
189 +  return j.Et();
190 +
191 + }
192 +
193 + double evalMt( double pt, double eta, double phi, double e){
194 +  TLorentzVector j;
195 +  j.SetPtEtaPhiE(pt,eta,phi, e );
196 +  return j.Mt();
197 +
198 + }
199 +
200   }
201  

Diff Legend

Removed lines
+ Added lines
< Changed lines
> Changed lines