Fork me on GitHub

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

Last change on this file since 1350 was 1348, checked in by Michele Selvaggi, 11 years ago

added PileUpJetID module from Seth Senz

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