Fork me on GitHub

source: git/classes/DelphesClasses.cc@ 7429c6a

ImprovedOutputFile Timing dual_readout llp
Last change on this file since 7429c6a was 7429c6a, checked in by Martin <martin.flechl@…>, 6 years ago

Adding TauWeight variable

  • Property mode set to 100644
File size: 12.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 *Vertex::fgCompare = CompSumPT2<Vertex>::Instance();
44CompBase *Candidate::fgCompare = CompMomentumPt<Candidate>::Instance();
45
46//------------------------------------------------------------------------------
47
48TLorentzVector GenParticle::P4() const
49{
50 TLorentzVector vec;
51 vec.SetPxPyPzE(Px, Py, Pz, E);
52 return vec;
53}
54
55//------------------------------------------------------------------------------
56
57TLorentzVector MissingET::P4() const
58{
59 TLorentzVector vec;
60 vec.SetPtEtaPhiM(MET, Eta, Phi, 0.0);
61 return vec;
62}
63
64//------------------------------------------------------------------------------
65
66TLorentzVector Photon::P4() const
67{
68 TLorentzVector vec;
69 vec.SetPtEtaPhiM(PT, Eta, Phi, 0.0);
70 return vec;
71}
72
73//------------------------------------------------------------------------------
74
75TLorentzVector Electron::P4() const
76{
77 TLorentzVector vec;
78 vec.SetPtEtaPhiM(PT, Eta, Phi, 0.0);
79 return vec;
80}
81
82//------------------------------------------------------------------------------
83
84TLorentzVector Muon::P4() const
85{
86 TLorentzVector vec;
87 vec.SetPtEtaPhiM(PT, Eta, Phi, 0.0);
88 return vec;
89}
90
91//------------------------------------------------------------------------------
92
93TLorentzVector Jet::P4() const
94{
95 TLorentzVector vec;
96 vec.SetPtEtaPhiM(PT, Eta, Phi, Mass);
97 return vec;
98}
99
100//------------------------------------------------------------------------------
101
102TLorentzVector Track::P4() const
103{
104 TLorentzVector vec;
105 vec.SetPtEtaPhiM(PT, Eta, Phi, 0.0);
106 return vec;
107}
108
109//------------------------------------------------------------------------------
110
111TLorentzVector Tower::P4() const
112{
113 TLorentzVector vec;
114 vec.SetPtEtaPhiM(ET, Eta, Phi, 0.0);
115 return vec;
116}
117
118//------------------------------------------------------------------------------
119
120Candidate::Candidate() :
121 PID(0), Status(0), M1(-1), M2(-1), D1(-1), D2(-1),
122 Charge(0), Mass(0.0),
123 IsPU(0), IsRecoPU(0), IsConstituent(0), IsFromConversion(0),
124 ClusterIndex(-1), ClusterNDF(0), ClusterSigma(0), SumPT2(0), BTVSumPT2(0), GenDeltaZ(0), GenSumPT2(0),
125 Flavor(0), FlavorAlgo(0), FlavorPhys(0),
126 BTag(0), BTagAlgo(0), BTagPhys(0),
127 TauTag(0), TauWeight(0.0), Eem(0.0), Ehad(0.0),
128 DeltaEta(0.0), DeltaPhi(0.0),
129 Momentum(0.0, 0.0, 0.0, 0.0),
130 Position(0.0, 0.0, 0.0, 0.0),
131 PositionError(0.0, 0.0, 0.0, 0.0),
132 InitialPosition(0.0, 0.0, 0.0, 0.0),
133 Area(0.0, 0.0, 0.0, 0.0),
134 L(0),
135 D0(0), ErrorD0(0),
136 DZ(0), ErrorDZ(0),
137 P(0), ErrorP(0),
138 PT(0), ErrorPT(0),
139 CtgTheta(0), ErrorCtgTheta(0),
140 Phi(0), ErrorPhi(0),
141 Xd(0), Yd(0), Zd(0),
142 TrackResolution(0),
143 NCharged(0),
144 NNeutrals(0),
145 Beta(0),
146 BetaStar(0),
147 MeanSqDeltaR(0),
148 PTD(0),
149 NTimeHits(-1),
150 IsolationVar(-999),
151 IsolationVarRhoCorr(-999),
152 SumPtCharged(-999),
153 SumPtNeutral(-999),
154 SumPtChargedPU(-999),
155 SumPt(-999),
156 NSubJetsTrimmed(0),
157 NSubJetsPruned(0),
158 NSubJetsSoftDropped(0),
159 fFactory(0),
160 fArray(0)
161{
162 int i;
163 Edges[0] = 0.0;
164 Edges[1] = 0.0;
165 Edges[2] = 0.0;
166 Edges[3] = 0.0;
167 FracPt[0] = 0.0;
168 FracPt[1] = 0.0;
169 FracPt[2] = 0.0;
170 FracPt[3] = 0.0;
171 FracPt[4] = 0.0;
172 Tau[0] = 0.0;
173 Tau[1] = 0.0;
174 Tau[2] = 0.0;
175 Tau[3] = 0.0;
176 Tau[4] = 0.0;
177
178 SoftDroppedJet.SetXYZT(0.0, 0.0, 0.0, 0.0);
179 SoftDroppedSubJet1.SetXYZT(0.0, 0.0, 0.0, 0.0);
180 SoftDroppedSubJet2.SetXYZT(0.0, 0.0, 0.0, 0.0);
181
182 for(i = 0; i < 5; ++i)
183 {
184 TrimmedP4[i].SetXYZT(0.0, 0.0, 0.0, 0.0);
185 PrunedP4[i].SetXYZT(0.0, 0.0, 0.0, 0.0);
186 SoftDroppedP4[i].SetXYZT(0.0, 0.0, 0.0, 0.0);
187 }
188}
189
190//------------------------------------------------------------------------------
191
192void Candidate::AddCandidate(Candidate *object)
193{
194 if(!fArray) fArray = fFactory->NewArray();
195 fArray->Add(object);
196}
197
198//------------------------------------------------------------------------------
199
200TObjArray *Candidate::GetCandidates()
201{
202 if(!fArray) fArray = fFactory->NewArray();
203 return fArray;
204}
205
206//------------------------------------------------------------------------------
207
208Bool_t Candidate::Overlaps(const Candidate *object) const
209{
210 const Candidate *candidate;
211
212 if(object->GetUniqueID() == GetUniqueID()) return kTRUE;
213
214 if(fArray)
215 {
216 TIter it(fArray);
217 while((candidate = static_cast<Candidate *>(it.Next())))
218 {
219 if(candidate->Overlaps(object)) return kTRUE;
220 }
221 }
222
223 if(object->fArray)
224 {
225 TIter it(object->fArray);
226 while((candidate = static_cast<Candidate *>(it.Next())))
227 {
228 if(candidate->Overlaps(this)) return kTRUE;
229 }
230 }
231
232 return kFALSE;
233}
234
235
236//------------------------------------------------------------------------------
237
238TObject *Candidate::Clone(const char *newname) const
239{
240 Candidate *object = fFactory->NewCandidate();
241 Copy(*object);
242 return object;
243}
244
245//------------------------------------------------------------------------------
246
247void Candidate::Copy(TObject &obj) const
248{
249 Candidate &object = static_cast<Candidate &>(obj);
250 Candidate *candidate;
251
252 object.PID = PID;
253 object.Status = Status;
254 object.M1 = M1;
255 object.M2 = M2;
256 object.D1 = D1;
257 object.D2 = D2;
258 object.Charge = Charge;
259 object.Mass = Mass;
260 object.IsPU = IsPU;
261 object.IsRecoPU = IsRecoPU;
262 object.IsConstituent = IsConstituent;
263 object.IsFromConversion = IsFromConversion;
264 object.ClusterIndex = ClusterIndex;
265 object.ClusterNDF = ClusterNDF;
266 object.ClusterSigma = ClusterSigma;
267 object.SumPT2 = SumPT2;
268 object.BTVSumPT2 = BTVSumPT2;
269 object.GenDeltaZ = GenDeltaZ;
270 object.GenSumPT2 = GenSumPT2;
271 object.Flavor = Flavor;
272 object.FlavorAlgo = FlavorAlgo;
273 object.FlavorPhys = FlavorPhys;
274 object.BTag = BTag;
275 object.BTagAlgo = BTagAlgo;
276 object.BTagPhys = BTagPhys;
277 object.TauTag = TauTag;
278 object.TauWeight = TauWeight;
279 object.Eem = Eem;
280 object.Ehad = Ehad;
281 object.Edges[0] = Edges[0];
282 object.Edges[1] = Edges[1];
283 object.Edges[2] = Edges[2];
284 object.Edges[3] = Edges[3];
285 object.DeltaEta = DeltaEta;
286 object.DeltaPhi = DeltaPhi;
287 object.Momentum = Momentum;
288 object.Position = Position;
289 object.InitialPosition = InitialPosition;
290 object.PositionError = PositionError;
291 object.Area = Area;
292 object.L = L;
293 object.ErrorT = ErrorT;
294 object.D0 = D0;
295 object.ErrorD0 = ErrorD0;
296 object.DZ = DZ;
297 object.ErrorDZ = ErrorDZ;
298 object.P = P;
299 object.ErrorP = ErrorP;
300 object.PT = PT;
301 object.ErrorPT = ErrorPT;
302 object.CtgTheta = CtgTheta ;
303 object.ErrorCtgTheta = ErrorCtgTheta;
304 object.Phi = Phi;
305 object.ErrorPhi = ErrorPhi;
306 object.Xd = Xd;
307 object.Yd = Yd;
308 object.Zd = Zd;
309 object.TrackResolution = TrackResolution;
310 object.NCharged = NCharged;
311 object.NNeutrals = NNeutrals;
312 object.Beta = Beta;
313 object.BetaStar = BetaStar;
314 object.MeanSqDeltaR = MeanSqDeltaR;
315 object.PTD = PTD;
316 object.NTimeHits = NTimeHits;
317 object.IsolationVar = IsolationVar;
318 object.IsolationVarRhoCorr = IsolationVarRhoCorr;
319 object.SumPtCharged = SumPtCharged;
320 object.SumPtNeutral = SumPtNeutral;
321 object.SumPtChargedPU = SumPtChargedPU;
322 object.SumPt = SumPt;
323 object.ClusterIndex = ClusterIndex;
324 object.ClusterNDF = ClusterNDF;
325 object.ClusterSigma = ClusterSigma;
326 object.SumPT2 = SumPT2;
327
328 object.FracPt[0] = FracPt[0];
329 object.FracPt[1] = FracPt[1];
330 object.FracPt[2] = FracPt[2];
331 object.FracPt[3] = FracPt[3];
332 object.FracPt[4] = FracPt[4];
333 object.Tau[0] = Tau[0];
334 object.Tau[1] = Tau[1];
335 object.Tau[2] = Tau[2];
336 object.Tau[3] = Tau[3];
337 object.Tau[4] = Tau[4];
338
339 object.TrimmedP4[0] = TrimmedP4[0];
340 object.TrimmedP4[1] = TrimmedP4[1];
341 object.TrimmedP4[2] = TrimmedP4[2];
342 object.TrimmedP4[3] = TrimmedP4[3];
343 object.TrimmedP4[4] = TrimmedP4[4];
344 object.PrunedP4[0] = PrunedP4[0];
345 object.PrunedP4[1] = PrunedP4[1];
346 object.PrunedP4[2] = PrunedP4[2];
347 object.PrunedP4[3] = PrunedP4[3];
348 object.PrunedP4[4] = PrunedP4[4];
349 object.SoftDroppedP4[0] = SoftDroppedP4[0];
350 object.SoftDroppedP4[1] = SoftDroppedP4[1];
351 object.SoftDroppedP4[2] = SoftDroppedP4[2];
352 object.SoftDroppedP4[3] = SoftDroppedP4[3];
353 object.SoftDroppedP4[4] = SoftDroppedP4[4];
354
355 object.NSubJetsTrimmed = NSubJetsTrimmed;
356 object.NSubJetsPruned = NSubJetsPruned;
357 object.NSubJetsSoftDropped = NSubJetsSoftDropped;
358
359 object.SoftDroppedJet =SoftDroppedJet;
360 object.SoftDroppedSubJet1 = SoftDroppedSubJet1;
361 object.SoftDroppedSubJet2 = SoftDroppedSubJet2;
362
363 object.fFactory = fFactory;
364 object.fArray = 0;
365
366 // copy cluster timing info
367 copy(ECalEnergyTimePairs.begin(), ECalEnergyTimePairs.end(), back_inserter(object.ECalEnergyTimePairs));
368
369 if(fArray && fArray->GetEntriesFast() > 0)
370 {
371 TIter itArray(fArray);
372 TObjArray *array = object.GetCandidates();
373 while((candidate = static_cast<Candidate *>(itArray.Next())))
374 {
375 array->Add(candidate);
376 }
377 }
378}
379
380//------------------------------------------------------------------------------
381
382void Candidate::Clear(Option_t* option)
383{
384 int i;
385 SetUniqueID(0);
386 ResetBit(kIsReferenced);
387 PID = 0;
388 Status = 0;
389 M1 = -1; M2 = -1; D1 = -1; D2 = -1;
390 Charge = 0;
391 Mass = 0.0;
392 IsPU = 0;
393 IsRecoPU = 0;
394 IsConstituent = 0;
395 IsFromConversion = 0;
396 Flavor = 0;
397 FlavorAlgo = 0;
398 FlavorPhys = 0;
399 BTag = 0;
400 BTagAlgo = 0;
401 BTagPhys = 0;
402 TauTag = 0;
403 TauWeight = 0.0;
404 Eem = 0.0;
405 Ehad = 0.0;
406 Edges[0] = 0.0;
407 Edges[1] = 0.0;
408 Edges[2] = 0.0;
409 Edges[3] = 0.0;
410 DeltaEta = 0.0;
411 DeltaPhi = 0.0;
412 Momentum.SetXYZT(0.0, 0.0, 0.0, 0.0);
413 Position.SetXYZT(0.0, 0.0, 0.0, 0.0);
414 InitialPosition.SetXYZT(0.0, 0.0, 0.0, 0.0);
415 Area.SetXYZT(0.0, 0.0, 0.0, 0.0);
416 L = 0.0;
417 ErrorT = 0.0;
418 D0 = 0.0;
419 ErrorD0 = 0.0;
420 DZ = 0.0;
421 ErrorDZ = 0.0;
422 P =0.0;
423 ErrorP =0.0;
424 PT = 0.0;
425 ErrorPT = 0.0;
426 CtgTheta = 0.0;
427 ErrorCtgTheta = 0.0;
428 Phi = 0.0;
429 ErrorPhi = 0.0;
430 Xd = 0.0;
431 Yd = 0.0;
432 Zd = 0.0;
433 TrackResolution = 0.0;
434 NCharged = 0;
435 NNeutrals = 0;
436 Beta = 0.0;
437 BetaStar = 0.0;
438 MeanSqDeltaR = 0.0;
439 PTD = 0.0;
440
441 NTimeHits = 0;
442 ECalEnergyTimePairs.clear();
443
444 IsolationVar = -999;
445 IsolationVarRhoCorr = -999;
446 SumPtCharged = -999;
447 SumPtNeutral = -999;
448 SumPtChargedPU = -999;
449 SumPt = -999;
450
451 ClusterIndex = -1;
452 ClusterNDF = -99;
453 ClusterSigma = 0.0;
454 SumPT2 = 0.0;
455 BTVSumPT2 = 0.0;
456 GenDeltaZ = 0.0;
457 GenSumPT2 = 0.0;
458
459 FracPt[0] = 0.0;
460 FracPt[1] = 0.0;
461 FracPt[2] = 0.0;
462 FracPt[3] = 0.0;
463 FracPt[4] = 0.0;
464 Tau[0] = 0.0;
465 Tau[1] = 0.0;
466 Tau[2] = 0.0;
467 Tau[3] = 0.0;
468 Tau[4] = 0.0;
469
470 SoftDroppedJet.SetXYZT(0.0, 0.0, 0.0, 0.0);
471 SoftDroppedSubJet1.SetXYZT(0.0, 0.0, 0.0, 0.0);
472 SoftDroppedSubJet2.SetXYZT(0.0, 0.0, 0.0, 0.0);
473
474
475 for(i = 0; i < 5; ++i)
476 {
477 TrimmedP4[i].SetXYZT(0.0, 0.0, 0.0, 0.0);
478 PrunedP4[i].SetXYZT(0.0, 0.0, 0.0, 0.0);
479 SoftDroppedP4[i].SetXYZT(0.0, 0.0, 0.0, 0.0);
480 }
481
482 NSubJetsTrimmed = 0;
483 NSubJetsPruned = 0;
484 NSubJetsSoftDropped = 0;
485
486 fArray = 0;
487}
Note: See TracBrowser for help on using the repository browser.