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
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();
[1361]28CompBase *HectorHit::fgCompare = CompE<HectorHit>::Instance();
[895]29CompBase *Candidate::fgCompare = CompMomentumPt<Candidate>::Instance();
[687]30
[685]31//------------------------------------------------------------------------------
32
[884]33TLorentzVector GenParticle::P4()
34{
35 TLorentzVector vec;
36 vec.SetPxPyPzE(Px, Py, Pz, E);
37 return vec;
38}
39
40//------------------------------------------------------------------------------
41
[1318]42TLorentzVector MissingET::P4()
43{
44 TLorentzVector vec;
45 vec.SetPtEtaPhiM(MET, Eta, Phi, 0.0);
46 return vec;
47}
48
49//------------------------------------------------------------------------------
50
[884]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
[687]105Candidate::Candidate() :
[1014]106 PID(0), Status(0), M1(-1), M2(-1), D1(-1), D2(-1),
[1088]107 Charge(0), Mass(0.0),
[1074]108 IsPU(0), IsConstituent(0),
109 BTag(0), TauTag(0), Eem(0.0), Ehad(0.0),
[900]110 DeltaEta(0.0), DeltaPhi(0.0),
[685]111 Momentum(0.0, 0.0, 0.0, 0.0),
112 Position(0.0, 0.0, 0.0, 0.0),
[1367]113 Dxy(0),SDxy(0),Xd(0),Yd(0),Zd(0),
[1088]114 Area(0.0, 0.0, 0.0, 0.0),
[1348]115 NCharged(0),
116 NNeutrals(0),
117 Beta(0),
118 BetaStar(0),
119 MeanSqDeltaR(0),
[1354]120 PTD(0),
121 fFactory(0),
122 fArray(0)
[685]123{
[898]124 Edges[0] = 0.0;
125 Edges[1] = 0.0;
126 Edges[2] = 0.0;
127 Edges[3] = 0.0;
[1348]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;
[685]133}
134
135//------------------------------------------------------------------------------
136
[687]137void Candidate::AddCandidate(Candidate *object)
[680]138{
139 if(!fArray) fArray = fFactory->NewArray();
140 fArray->Add(object);
141}
[685]142
143//------------------------------------------------------------------------------
144
[887]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
[919]157 if(object->GetUniqueID() == GetUniqueID()) return kTRUE;
[891]158
[887]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
[687]183TObject *Candidate::Clone(const char *newname) const
[685]184{
[687]185 Candidate *object = fFactory->NewCandidate();
[685]186 Copy(*object);
187 return object;
188}
189
190//------------------------------------------------------------------------------
191
[687]192void Candidate::Copy(TObject &obj) const
[685]193{
[687]194 Candidate &object = static_cast<Candidate &>(obj);
[891]195 Candidate *candidate;
[686]196
[685]197 object.PID = PID;
[845]198 object.Status = Status;
199 object.M1 = M1;
200 object.M2 = M2;
201 object.D1 = D1;
202 object.D2 = D2;
[685]203 object.Charge = Charge;
204 object.Mass = Mass;
[1014]205 object.IsPU = IsPU;
[1077]206 object.IsConstituent = IsConstituent;
[845]207 object.BTag = BTag;
[926]208 object.TauTag = TauTag;
[845]209 object.Eem = Eem;
210 object.Ehad = Ehad;
[898]211 object.Edges[0] = Edges[0];
212 object.Edges[1] = Edges[1];
213 object.Edges[2] = Edges[2];
214 object.Edges[3] = Edges[3];
[900]215 object.DeltaEta = DeltaEta;
216 object.DeltaPhi = DeltaPhi;
[685]217 object.Momentum = Momentum;
218 object.Position = Position;
[1367]219 object.Dxy = Dxy;
220 object.SDxy = SDxy;
221 object.Xd = Xd;
222 object.Yd = Yd;
223 object.Zd = Zd;
[1088]224 object.Area = Area;
[685]225
[1348]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
[685]238 object.fFactory = fFactory;
239 object.fArray = 0;
240
241 if(fArray && fArray->GetEntriesFast() > 0)
242 {
243 TIter itArray(fArray);
[891]244 TObjArray *array = object.GetCandidates();
245 while((candidate = static_cast<Candidate *>(itArray.Next())))
[685]246 {
[891]247 array->Add(candidate);
[685]248 }
249 }
250}
251
252//------------------------------------------------------------------------------
253
[687]254void Candidate::Clear(Option_t* option)
[685]255{
256 SetUniqueID(0);
[919]257 ResetBit(kIsReferenced);
[685]258 PID = 0;
[845]259 Status = 0;
[1014]260 M1 = -1; M2 = -1; D1 = -1; D2 = -1;
[685]261 Charge = 0;
[1014]262 Mass = 0.0;
263 IsPU = 0;
[1074]264 IsConstituent = 0;
[845]265 BTag = 0;
[926]266 TauTag = 0;
[845]267 Eem = 0.0;
268 Ehad = 0.0;
[898]269 Edges[0] = 0.0;
270 Edges[1] = 0.0;
271 Edges[2] = 0.0;
272 Edges[3] = 0.0;
[900]273 DeltaEta = 0.0;
274 DeltaPhi = 0.0;
[685]275 Momentum.SetXYZT(0.0, 0.0, 0.0, 0.0);
276 Position.SetXYZT(0.0, 0.0, 0.0, 0.0);
[1088]277 Area.SetXYZT(0.0, 0.0, 0.0, 0.0);
[1367]278 Dxy = 0.0;
279 SDxy = 0.0;
280 Xd = 0.0;
281 Yd = 0.0;
282 Zd = 0.0;
[1348]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
[685]295 fArray = 0;
296}
Note: See TracBrowser for help on using the repository browser.