StRoot  1
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Groups Pages
StjFormDijet.cxx
1 // $Id: StjFormDijet.cxx,v 1.3 2009/03/27 19:14:27 tai Exp $
2 // Copyright (C) 2008 Tai Sakuma <sakuma@bnl.gov>
3 #include "StjFormDijet.h"
4 
5 #include <TLorentzVector.h>
6 
7 #include <algorithm>
8 #include <iostream>
9 #include <cmath>
10 
11 ClassImp(StjFormDijet)
12 
13 using namespace std;
14 
15 StjDijetList StjFormDijet::operator()(StjJetList jetList)
16 {
17  StjDijetList ret;
18  if(jetList.size() < 2) return ret;
19  sort(jetList.begin(), jetList.end(), pt_more());
20  StjDijet dijet;
21  if(jetList[0].eta >= jetList[1].eta)
22  {
23  dijet.jet3 = jetList[0];
24  dijet.jet4 = jetList[1];
25  }
26  else
27  {
28  dijet.jet3 = jetList[1];
29  dijet.jet4 = jetList[0];
30  }
31  dijet.runNumber = dijet.jet3.runNumber;
32  dijet.eventId = dijet.jet3.eventId;
33  dijet.dijetId = 1;
34  dijet.vertexZ = dijet.jet3.vertexZ;
35  TLorentzVector jet3;
36  TLorentzVector jet4;
37  jet3.SetPtEtaPhiM(dijet.jet3.pt, dijet.jet3.eta, dijet.jet3.phi, dijet.jet3.m);
38  jet4.SetPtEtaPhiM(dijet.jet4.pt, dijet.jet4.eta, dijet.jet4.phi, dijet.jet4.m);
39  dijet.dphi = fabs(jet3.DeltaPhi(jet4));
40  TLorentzVector di = jet3 + jet4;
41  dijet.m = di.M();
42  dijet.eta = 0.5*(dijet.jet3.eta + dijet.jet4.eta);
43  dijet.costh = tanh(0.5*(dijet.jet3.eta - dijet.jet4.eta));
44  dijet.deta = dijet.jet3.eta - dijet.jet4.eta;
45 
46  if(jet3.Et() >= jet4.Et())
47  {
48  dijet.eth = jet3.Et();
49  dijet.etl = jet4.Et();
50  }
51  else
52  {
53  dijet.eth = jet4.Et();
54  dijet.etl = jet3.Et();
55  }
56 
57  dijet.pt3 = dijet.jet3.pt;
58  dijet.pt4 = dijet.jet4.pt;
59  dijet.eta3 = dijet.jet3.eta;
60  dijet.eta4 = dijet.jet4.eta;
61  dijet.phi3 = dijet.jet3.phi;
62  dijet.phi4 = dijet.jet4.phi;
63  dijet.m3 = dijet.jet3.m;
64  dijet.m4 = dijet.jet4.m;
65 
66  dijet.neuRt3 = dijet.jet3.neuRt;
67  dijet.neuRt4 = dijet.jet4.neuRt;;
68  dijet.jetSameSide = dijet.jet3;
69  dijet.jetAwaySide = dijet.jet4;
70  dijet.neuRtSameSide = dijet.jet3.neuRt;
71  dijet.neuRtAwaySide = dijet.jet4.neuRt;;
72  ret.push_back(dijet);
73  return ret;
74 }
75