ViewVC Help
View File | Revision Log | Show Annotations | Root Listing
root/cvsroot/UserCode/UHHAnalysis/SFrameTools/src/Utils.cxx
(Generate patch)

Comparing UserCode/UHHAnalysis/SFrameTools/src/Utils.cxx (file contents):
Revision 1.3 by peiffer, Wed Jun 13 14:37:59 2012 UTC vs.
Revision 1.5 by peiffer, Mon Jul 9 08:37:32 2012 UTC

# Line 33 | Line 33 | bool TopTag(TopJet topjet,  double &mjet
33      if( (subjets[1].v4()+subjets[2].v4()).isTimelike()  )
34        m12 = (subjets[1].v4()+subjets[2].v4()).M();
35      
36 <    //minimum pairwise mass > 50 GeV/c^2
36 >    //minimum pairwise mass
37      mmin = std::min(m01,std::min(m02,m12));
38    }
39  
# Line 61 | Line 61 | Jet* nextJet(const Particle *p, std::vec
61    return nextjet;
62   }
63  
64 + bool WTag(TopJet prunedjet,  double& mjet, int &nsubjets, double& massdrop){
65 +
66 +  nsubjets=prunedjet.numberOfDaughters();
67 +
68 +  mjet = 0;
69 +  if(prunedjet.v4().isTimelike())
70 +    mjet = prunedjet.v4().M();
71 +
72 +  //calculate mass drop for first sub-jet ordered in pt
73 +  massdrop = 0;
74 +  if(nsubjets>=1 && mjet>0){
75 +
76 +    std::vector< Particle > subjets = prunedjet.subjets();
77 +    sort(subjets.begin(), subjets.end(), HigherPt());
78 +
79 +    double m1 = 0;
80 +    if(subjets[0].v4().isTimelike())
81 +      m1 = subjets[0].v4().M();
82 +
83 +    massdrop = m1/mjet;
84 +  }
85 +  
86 +  //at least 2 sub-jets
87 +  if(nsubjets<2) return false;
88 +  //60 GeV < pruned jet mass < 100 GeV
89 +  if(mjet <= 60 || mjet >= 100) return false;
90 +  //mass drop < 0.4
91 +  if(massdrop>=0.4) return false;
92 +
93 +  return true;
94 +
95 + }
96 +
97   double pTrel(const Particle *p, std::vector<Jet> *jets){
98  
99    double ptrel=0;
# Line 85 | Line 118 | double deltaRmin(const Particle *p, std:
118    return nextJet(p,jets)->deltaR(*p);
119   }
120  
121 + TVector3 toVector(LorentzVector v4){
122 +
123 +  TVector3 v3(0,0,0);
124 +  v3.SetX(v4.X());
125 +  v3.SetY(v4.Y());
126 +  v3.SetZ(v4.Z());
127 +  return v3;
128 + }
129 +
130 + TVector3 toVector(LorentzVectorXYZE v4){
131 +
132 +  TVector3 v3(0,0,0);
133 +  v3.SetX(v4.X());
134 +  v3.SetY(v4.Y());
135 +  v3.SetZ(v4.Z());
136 +  return v3;
137 + }
138 +
139 + LorentzVectorXYZE toXYZ(LorentzVector v4){
140 +
141 +  LorentzVectorXYZE v4_new(0,0,0,0);
142 +  v4_new.SetPx(v4.Px());
143 +  v4_new.SetPy(v4.Py());
144 +  v4_new.SetPz(v4.Pz());
145 +  v4_new.SetE(v4.E());
146 +  return v4_new;
147 + }
148 +
149 + LorentzVector toPtEtaPhi(LorentzVectorXYZE v4){
150 +
151 +  LorentzVector v4_new(0,0,0,0);
152 +  v4_new.SetPt(v4.Pt());
153 +  v4_new.SetEta(v4.Eta());
154 +  v4_new.SetPhi(v4.Phi());
155 +  v4_new.SetE(v4.E());
156 +  return v4_new;
157 + }
158 +
159 + double deltaR(LorentzVector v1, LorentzVector v2){
160 +
161 +  Particle p1;
162 +  p1.set_v4(v1);
163 +  Particle p2;
164 +  p2.set_v4(v2);
165 +  return p1.deltaR(p2);
166 + }
167  
168   double double_infinity(){
169    return std::numeric_limits<double>::infinity() ;
# Line 93 | Line 172 | double double_infinity(){
172   int int_infinity(){
173    return std::numeric_limits<int>::max() ;
174   }
175 +
176 + int myPow(int x, unsigned int p) {
177 +  int i = 1;
178 +  for (unsigned int j = 1; j <= p; j++)  i *= x;
179 +  return i;
180 + }

Diff Legend

Removed lines
+ Added lines
< Changed lines
> Changed lines