Fork me on GitHub

source: git/classes/DelphesClasses.cc@ 2d494a6

ImprovedOutputFile Timing dual_readout llp
Last change on this file since 2d494a6 was b62c2da, checked in by Michele Selvaggi <michele.selvaggi@…>, 10 years ago

added isolation variables to Candidate and Electrons, Muons, Photons classes

  • Property mode set to 100644
File size: 8.1 KB
Line 
1/*
2 * Delphes: a framework for fast simulation of a generic collider experiment
3 * Copyright (C) 2012-2014 Universite catholique de Louvain (UCL), Belgium
4 *
5 * This program is free software: you can redistribute it and/or modify
6 * it under the terms of the GNU General Public License as published by
7 * the Free Software Foundation, either version 3 of the License, or
8 * (at your option) any later version.
9 *
10 * This program is distributed in the hope that it will be useful,
11 * but WITHOUT ANY WARRANTY; without even the implied warranty of
12 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13 * GNU General Public License for more details.
14 *
15 * You should have received a copy of the GNU General Public License
16 * along with this program. If not, see <http://www.gnu.org/licenses/>.
17 */
18
19
20/**
21 *
22 * Definition of classes to be stored in the root tree.
23 * Function CompareXYZ sorts objects by the variable XYZ that MUST be
24 * present in the data members of the root tree class of the branch.
25 *
26 * \author P. Demin - UCL, Louvain-la-Neuve
27 *
28 */
29
30#include "classes/DelphesClasses.h"
31
32#include "classes/DelphesFactory.h"
33#include "classes/SortableObject.h"
34
35CompBase *GenParticle::fgCompare = 0;
36CompBase *Photon::fgCompare = CompPT<Photon>::Instance();
37CompBase *Electron::fgCompare = CompPT<Electron>::Instance();
38CompBase *Muon::fgCompare = CompPT<Muon>::Instance();
39CompBase *Jet::fgCompare = CompPT<Jet>::Instance();
40CompBase *Track::fgCompare = CompPT<Track>::Instance();
41CompBase *Tower::fgCompare = CompE<Tower>::Instance();
42CompBase *HectorHit::fgCompare = CompE<HectorHit>::Instance();
43CompBase *Candidate::fgCompare = CompMomentumPt<Candidate>::Instance();
44
45//------------------------------------------------------------------------------
46
47TLorentzVector GenParticle::P4()
48{
49 TLorentzVector vec;
50 vec.SetPxPyPzE(Px, Py, Pz, E);
51 return vec;
52}
53
54//------------------------------------------------------------------------------
55
56TLorentzVector MissingET::P4()
57{
58 TLorentzVector vec;
59 vec.SetPtEtaPhiM(MET, Eta, Phi, 0.0);
60 return vec;
61}
62
63//------------------------------------------------------------------------------
64
65TLorentzVector Photon::P4()
66{
67 TLorentzVector vec;
68 vec.SetPtEtaPhiM(PT, Eta, Phi, 0.0);
69 return vec;
70}
71
72//------------------------------------------------------------------------------
73
74TLorentzVector Electron::P4()
75{
76 TLorentzVector vec;
77 vec.SetPtEtaPhiM(PT, Eta, Phi, 0.0);
78 return vec;
79}
80
81//------------------------------------------------------------------------------
82
83TLorentzVector Muon::P4()
84{
85 TLorentzVector vec;
86 vec.SetPtEtaPhiM(PT, Eta, Phi, 0.0);
87 return vec;
88}
89
90//------------------------------------------------------------------------------
91
92TLorentzVector Jet::P4()
93{
94 TLorentzVector vec;
95 vec.SetPtEtaPhiM(PT, Eta, Phi, Mass);
96 return vec;
97}
98
99//------------------------------------------------------------------------------
100
101TLorentzVector Track::P4()
102{
103 TLorentzVector vec;
104 vec.SetPtEtaPhiM(PT, Eta, Phi, 0.0);
105 return vec;
106}
107
108//------------------------------------------------------------------------------
109
110TLorentzVector Tower::P4()
111{
112 TLorentzVector vec;
113 vec.SetPtEtaPhiM(ET, Eta, Phi, 0.0);
114 return vec;
115}
116
117//------------------------------------------------------------------------------
118
119Candidate::Candidate() :
120 PID(0), Status(0), M1(-1), M2(-1), D1(-1), D2(-1),
121 Charge(0), Mass(0.0),
122 IsPU(0), IsRecoPU(0), IsConstituent(0),
123 BTag(0), TauTag(0), Eem(0.0), Ehad(0.0),
124 DeltaEta(0.0), DeltaPhi(0.0),
125 Momentum(0.0, 0.0, 0.0, 0.0),
126 Position(0.0, 0.0, 0.0, 0.0),
127 Area(0.0, 0.0, 0.0, 0.0),
128 Dxy(0), SDxy(0), Xd(0), Yd(0), Zd(0),
129 NCharged(0),
130 NNeutrals(0),
131 Beta(0),
132 BetaStar(0),
133 MeanSqDeltaR(0),
134 PTD(0),
135 IsolationVar(-999),
136 IsolationVarRhoCorr(-999),
137 SumPtCharged(-999),
138 SumPtNeutral(-999),
139 SumPtChargedPU(-999),
140 SumPt(-999),
141 fFactory(0),
142 fArray(0)
143{
144 Edges[0] = 0.0;
145 Edges[1] = 0.0;
146 Edges[2] = 0.0;
147 Edges[3] = 0.0;
148 FracPt[0] = 0.0;
149 FracPt[1] = 0.0;
150 FracPt[2] = 0.0;
151 FracPt[3] = 0.0;
152 FracPt[4] = 0.0;
153 Tau[0] = 0.0;
154 Tau[1] = 0.0;
155 Tau[2] = 0.0;
156 Tau[3] = 0.0;
157 Tau[4] = 0.0;
158}
159
160//------------------------------------------------------------------------------
161
162void Candidate::AddCandidate(Candidate *object)
163{
164 if(!fArray) fArray = fFactory->NewArray();
165 fArray->Add(object);
166}
167
168//------------------------------------------------------------------------------
169
170TObjArray *Candidate::GetCandidates()
171{
172 if(!fArray) fArray = fFactory->NewArray();
173 return fArray;
174}
175
176//------------------------------------------------------------------------------
177
178Bool_t Candidate::Overlaps(const Candidate *object) const
179{
180 const Candidate *candidate;
181
182 if(object->GetUniqueID() == GetUniqueID()) return kTRUE;
183
184 if(fArray)
185 {
186 TIter it(fArray);
187 while((candidate = static_cast<Candidate *>(it.Next())))
188 {
189 if(candidate->Overlaps(object)) return kTRUE;
190 }
191 }
192
193 if(object->fArray)
194 {
195 TIter it(object->fArray);
196 while((candidate = static_cast<Candidate *>(it.Next())))
197 {
198 if(candidate->Overlaps(this)) return kTRUE;
199 }
200 }
201
202 return kFALSE;
203}
204
205
206//------------------------------------------------------------------------------
207
208TObject *Candidate::Clone(const char *newname) const
209{
210 Candidate *object = fFactory->NewCandidate();
211 Copy(*object);
212 return object;
213}
214
215//------------------------------------------------------------------------------
216
217void Candidate::Copy(TObject &obj) const
218{
219 Candidate &object = static_cast<Candidate &>(obj);
220 Candidate *candidate;
221
222 object.PID = PID;
223 object.Status = Status;
224 object.M1 = M1;
225 object.M2 = M2;
226 object.D1 = D1;
227 object.D2 = D2;
228 object.Charge = Charge;
229 object.Mass = Mass;
230 object.IsPU = IsPU;
231 object.IsConstituent = IsConstituent;
232 object.BTag = BTag;
233 object.TauTag = TauTag;
234 object.Eem = Eem;
235 object.Ehad = Ehad;
236 object.Edges[0] = Edges[0];
237 object.Edges[1] = Edges[1];
238 object.Edges[2] = Edges[2];
239 object.Edges[3] = Edges[3];
240 object.DeltaEta = DeltaEta;
241 object.DeltaPhi = DeltaPhi;
242 object.Momentum = Momentum;
243 object.Position = Position;
244 object.Area = Area;
245 object.Dxy = Dxy;
246 object.SDxy = SDxy;
247 object.Xd = Xd;
248 object.Yd = Yd;
249 object.Zd = Zd;
250
251 object.NCharged = NCharged;
252 object.NNeutrals = NNeutrals;
253 object.Beta = Beta;
254 object.BetaStar = BetaStar;
255 object.MeanSqDeltaR = MeanSqDeltaR;
256 object.PTD = PTD;
257
258 object.IsolationVar = IsolationVar;
259 object.IsolationVarRhoCorr = IsolationVarRhoCorr;
260 object.SumPtCharged = SumPtCharged;
261 object.SumPtNeutral = SumPtNeutral;
262 object.SumPtChargedPU = SumPtChargedPU;
263 object.SumPt = SumPt;
264
265 object.FracPt[0] = FracPt[0];
266 object.FracPt[1] = FracPt[1];
267 object.FracPt[2] = FracPt[2];
268 object.FracPt[3] = FracPt[3];
269 object.FracPt[4] = FracPt[4];
270 object.Tau[0] = Tau[0];
271 object.Tau[1] = Tau[1];
272 object.Tau[2] = Tau[2];
273 object.Tau[3] = Tau[3];
274 object.Tau[4] = Tau[4];
275
276 object.fFactory = fFactory;
277 object.fArray = 0;
278
279 if(fArray && fArray->GetEntriesFast() > 0)
280 {
281 TIter itArray(fArray);
282 TObjArray *array = object.GetCandidates();
283 while((candidate = static_cast<Candidate *>(itArray.Next())))
284 {
285 array->Add(candidate);
286 }
287 }
288}
289
290//------------------------------------------------------------------------------
291
292void Candidate::Clear(Option_t* option)
293{
294 SetUniqueID(0);
295 ResetBit(kIsReferenced);
296 PID = 0;
297 Status = 0;
298 M1 = -1; M2 = -1; D1 = -1; D2 = -1;
299 Charge = 0;
300 Mass = 0.0;
301 IsPU = 0;
302 IsConstituent = 0;
303 BTag = 0;
304 TauTag = 0;
305 Eem = 0.0;
306 Ehad = 0.0;
307 Edges[0] = 0.0;
308 Edges[1] = 0.0;
309 Edges[2] = 0.0;
310 Edges[3] = 0.0;
311 DeltaEta = 0.0;
312 DeltaPhi = 0.0;
313 Momentum.SetXYZT(0.0, 0.0, 0.0, 0.0);
314 Position.SetXYZT(0.0, 0.0, 0.0, 0.0);
315 Area.SetXYZT(0.0, 0.0, 0.0, 0.0);
316 Dxy = 0.0;
317 SDxy = 0.0;
318 Xd = 0.0;
319 Yd = 0.0;
320 Zd = 0.0;
321 NCharged = 0;
322 NNeutrals = 0;
323 Beta = 0.0;
324 BetaStar = 0.0;
325 MeanSqDeltaR = 0.0;
326 PTD = 0.0;
327
328 IsolationVar = -999;
329 IsolationVarRhoCorr = -999;
330 SumPtCharged = -999;
331 SumPtNeutral = -999;
332 SumPtChargedPU = -999;
333 SumPt = -999;
334
335 FracPt[0] = 0.0;
336 FracPt[1] = 0.0;
337 FracPt[2] = 0.0;
338 FracPt[3] = 0.0;
339 FracPt[4] = 0.0;
340 Tau[0] = 0.0;
341 Tau[1] = 0.0;
342 Tau[2] = 0.0;
343 Tau[3] = 0.0;
344 Tau[4] = 0.0;
345
346 fArray = 0;
347}
Note: See TracBrowser for help on using the repository browser.