Fork me on GitHub

source: svn/trunk/classes/DelphesClasses.cc@ 1367

Last change on this file since 1367 was 1367, checked in by Michele Selvaggi, 10 years ago

track counting btagging

File size: 6.6 KB
Line 
1
2/**
3 *
4 * Definition of classes to be stored in the root tree.
5 * Function CompareXYZ sorts objects by the variable XYZ that MUST be
6 * present in the data members of the root tree class of the branch.
7 *
8 * $Date: 2008-06-04 13:57:24 $
9 * $Revision: 1.1 $
10 *
11 *
12 * \author P. Demin - UCL, Louvain-la-Neuve
13 *
14 */
15
16#include "classes/DelphesClasses.h"
17
18#include "classes/DelphesFactory.h"
19#include "classes/SortableObject.h"
20
21CompBase *GenParticle::fgCompare = 0;
22CompBase *Photon::fgCompare = CompPT<Photon>::Instance();
23CompBase *Electron::fgCompare = CompPT<Electron>::Instance();
24CompBase *Muon::fgCompare = CompPT<Muon>::Instance();
25CompBase *Jet::fgCompare = CompPT<Jet>::Instance();
26CompBase *Track::fgCompare = CompPT<Track>::Instance();
27CompBase *Tower::fgCompare = CompE<Tower>::Instance();
28CompBase *HectorHit::fgCompare = CompE<HectorHit>::Instance();
29CompBase *Candidate::fgCompare = CompMomentumPt<Candidate>::Instance();
30
31//------------------------------------------------------------------------------
32
33TLorentzVector GenParticle::P4()
34{
35 TLorentzVector vec;
36 vec.SetPxPyPzE(Px, Py, Pz, E);
37 return vec;
38}
39
40//------------------------------------------------------------------------------
41
42TLorentzVector MissingET::P4()
43{
44 TLorentzVector vec;
45 vec.SetPtEtaPhiM(MET, Eta, Phi, 0.0);
46 return vec;
47}
48
49//------------------------------------------------------------------------------
50
51TLorentzVector Photon::P4()
52{
53 TLorentzVector vec;
54 vec.SetPtEtaPhiM(PT, Eta, Phi, 0.0);
55 return vec;
56}
57
58//------------------------------------------------------------------------------
59
60TLorentzVector Electron::P4()
61{
62 TLorentzVector vec;
63 vec.SetPtEtaPhiM(PT, Eta, Phi, 0.0);
64 return vec;
65}
66
67//------------------------------------------------------------------------------
68
69TLorentzVector Muon::P4()
70{
71 TLorentzVector vec;
72 vec.SetPtEtaPhiM(PT, Eta, Phi, 0.0);
73 return vec;
74}
75
76//------------------------------------------------------------------------------
77
78TLorentzVector Jet::P4()
79{
80 TLorentzVector vec;
81 vec.SetPtEtaPhiM(PT, Eta, Phi, Mass);
82 return vec;
83}
84
85//------------------------------------------------------------------------------
86
87TLorentzVector Track::P4()
88{
89 TLorentzVector vec;
90 vec.SetPtEtaPhiM(PT, Eta, Phi, 0.0);
91 return vec;
92}
93
94//------------------------------------------------------------------------------
95
96TLorentzVector Tower::P4()
97{
98 TLorentzVector vec;
99 vec.SetPtEtaPhiM(ET, Eta, Phi, 0.0);
100 return vec;
101}
102
103//------------------------------------------------------------------------------
104
105Candidate::Candidate() :
106 PID(0), Status(0), M1(-1), M2(-1), D1(-1), D2(-1),
107 Charge(0), Mass(0.0),
108 IsPU(0), IsConstituent(0),
109 BTag(0), TauTag(0), Eem(0.0), Ehad(0.0),
110 DeltaEta(0.0), DeltaPhi(0.0),
111 Momentum(0.0, 0.0, 0.0, 0.0),
112 Position(0.0, 0.0, 0.0, 0.0),
113 Dxy(0),SDxy(0),Xd(0),Yd(0),Zd(0),
114 Area(0.0, 0.0, 0.0, 0.0),
115 NCharged(0),
116 NNeutrals(0),
117 Beta(0),
118 BetaStar(0),
119 MeanSqDeltaR(0),
120 PTD(0),
121 fFactory(0),
122 fArray(0)
123{
124 Edges[0] = 0.0;
125 Edges[1] = 0.0;
126 Edges[2] = 0.0;
127 Edges[3] = 0.0;
128 FracPt[0] = 0.0;
129 FracPt[1] = 0.0;
130 FracPt[2] = 0.0;
131 FracPt[3] = 0.0;
132 FracPt[4] = 0.0;
133}
134
135//------------------------------------------------------------------------------
136
137void Candidate::AddCandidate(Candidate *object)
138{
139 if(!fArray) fArray = fFactory->NewArray();
140 fArray->Add(object);
141}
142
143//------------------------------------------------------------------------------
144
145TObjArray *Candidate::GetCandidates()
146{
147 if(!fArray) fArray = fFactory->NewArray();
148 return fArray;
149}
150
151//------------------------------------------------------------------------------
152
153Bool_t Candidate::Overlaps(const Candidate *object) const
154{
155 const Candidate *candidate;
156
157 if(object->GetUniqueID() == GetUniqueID()) return kTRUE;
158
159 if(fArray)
160 {
161 TIter it(fArray);
162 while((candidate = static_cast<Candidate *>(it.Next())))
163 {
164 if(candidate->Overlaps(object)) return kTRUE;
165 }
166 }
167
168 if(object->fArray)
169 {
170 TIter it(object->fArray);
171 while((candidate = static_cast<Candidate *>(it.Next())))
172 {
173 if(candidate->Overlaps(this)) return kTRUE;
174 }
175 }
176
177 return kFALSE;
178}
179
180
181//------------------------------------------------------------------------------
182
183TObject *Candidate::Clone(const char *newname) const
184{
185 Candidate *object = fFactory->NewCandidate();
186 Copy(*object);
187 return object;
188}
189
190//------------------------------------------------------------------------------
191
192void Candidate::Copy(TObject &obj) const
193{
194 Candidate &object = static_cast<Candidate &>(obj);
195 Candidate *candidate;
196
197 object.PID = PID;
198 object.Status = Status;
199 object.M1 = M1;
200 object.M2 = M2;
201 object.D1 = D1;
202 object.D2 = D2;
203 object.Charge = Charge;
204 object.Mass = Mass;
205 object.IsPU = IsPU;
206 object.IsConstituent = IsConstituent;
207 object.BTag = BTag;
208 object.TauTag = TauTag;
209 object.Eem = Eem;
210 object.Ehad = Ehad;
211 object.Edges[0] = Edges[0];
212 object.Edges[1] = Edges[1];
213 object.Edges[2] = Edges[2];
214 object.Edges[3] = Edges[3];
215 object.DeltaEta = DeltaEta;
216 object.DeltaPhi = DeltaPhi;
217 object.Momentum = Momentum;
218 object.Position = Position;
219 object.Dxy = Dxy;
220 object.SDxy = SDxy;
221 object.Xd = Xd;
222 object.Yd = Yd;
223 object.Zd = Zd;
224 object.Area = Area;
225
226 object.NCharged = NCharged;
227 object.NNeutrals = NNeutrals;
228 object.Beta = Beta;
229 object.BetaStar = BetaStar;
230 object.MeanSqDeltaR = MeanSqDeltaR;
231 object.PTD = PTD;
232 object.FracPt[0] = FracPt[0];
233 object.FracPt[1] = FracPt[1];
234 object.FracPt[2] = FracPt[2];
235 object.FracPt[3] = FracPt[3];
236 object.FracPt[4] = FracPt[4];
237
238 object.fFactory = fFactory;
239 object.fArray = 0;
240
241 if(fArray && fArray->GetEntriesFast() > 0)
242 {
243 TIter itArray(fArray);
244 TObjArray *array = object.GetCandidates();
245 while((candidate = static_cast<Candidate *>(itArray.Next())))
246 {
247 array->Add(candidate);
248 }
249 }
250}
251
252//------------------------------------------------------------------------------
253
254void Candidate::Clear(Option_t* option)
255{
256 SetUniqueID(0);
257 ResetBit(kIsReferenced);
258 PID = 0;
259 Status = 0;
260 M1 = -1; M2 = -1; D1 = -1; D2 = -1;
261 Charge = 0;
262 Mass = 0.0;
263 IsPU = 0;
264 IsConstituent = 0;
265 BTag = 0;
266 TauTag = 0;
267 Eem = 0.0;
268 Ehad = 0.0;
269 Edges[0] = 0.0;
270 Edges[1] = 0.0;
271 Edges[2] = 0.0;
272 Edges[3] = 0.0;
273 DeltaEta = 0.0;
274 DeltaPhi = 0.0;
275 Momentum.SetXYZT(0.0, 0.0, 0.0, 0.0);
276 Position.SetXYZT(0.0, 0.0, 0.0, 0.0);
277 Area.SetXYZT(0.0, 0.0, 0.0, 0.0);
278 Dxy = 0.0;
279 SDxy = 0.0;
280 Xd = 0.0;
281 Yd = 0.0;
282 Zd = 0.0;
283 NCharged = 0;
284 NNeutrals = 0;
285 Beta = 0.0;
286 BetaStar = 0.0;
287 MeanSqDeltaR = 0.0;
288 PTD = 0.0;
289 FracPt[0] = 0.0;
290 FracPt[1] = 0.0;
291 FracPt[2] = 0.0;
292 FracPt[3] = 0.0;
293 FracPt[4] = 0.0;
294
295 fArray = 0;
296}
Note: See TracBrowser for help on using the repository browser.