1 #ifndef EXROOTCLASSES_H 2 #define EXROOTCLASSES_H 26 #include "TRefArray.h" 35 virtual Bool_t
IsSortable(
const TObject *)
const {
return kTRUE; }
36 virtual Int_t
Compare(
const TObject *obj1,
const TObject *obj2)
const = 0;
45 Bool_t
IsSortable()
const {
return GetCompare() ? GetCompare()->IsSortable(
this) : kFALSE; }
46 Int_t
Compare(
const TObject *obj)
const {
return GetCompare()->Compare(
this, obj); }
48 virtual const TCompare *GetCompare()
const = 0;
338 template <
typename T>
349 Int_t
Compare(
const TObject *obj1,
const TObject *obj2)
const 351 auto t1 =
static_cast<const T*
>(obj1);
352 auto t2 =
static_cast<const T*
>(obj2);
355 else if(t1->E < t2->E)
364 template <
typename T>
375 Int_t
Compare(
const TObject *obj1,
const TObject *obj2)
const 377 auto t1 =
static_cast<const T*
>(obj1);
378 auto t2 =
static_cast<const T*
>(obj2);
381 else if(t1->PT < t2->PT)
390 template <
typename T>
401 Int_t
Compare(
const TObject *obj1,
const TObject *obj2)
const 403 auto t1 =
static_cast<const T*
>(obj1);
404 auto t2 =
static_cast<const T*
>(obj2);
407 else if(t1->ET < t2->ET)
416 template <
typename T1,
typename T2>
421 Double_t DeltaPhi(Double_t phi1, Double_t phi2)
423 auto phi = TMath::Abs(phi1 - phi2);
427 Double_t Sqr(Double_t x) {
return x*x; }
429 Double_t SumSqr(Double_t a, Double_t b)
431 auto aAbs = TMath::Abs(a);
432 auto bAbs = TMath::Abs(b);
433 if(aAbs > bAbs)
return aAbs * TMath::Sqrt(1.0 + Sqr(bAbs / aAbs));
434 else return (bAbs == 0) ? 0.0 : bAbs * TMath::Sqrt(1.0 + Sqr(aAbs / bAbs));
448 Int_t
Compare(
const TObject *obj1,
const TObject *obj2)
const 450 Double_t eta[3], phi[3], deltaR[2];
451 auto t1 =
static_cast<const T1*
>(obj1);
452 auto t2 =
static_cast<const T1*
>(obj2);
463 deltaR[0] = SumSqr(TMath::Abs(eta[0] - eta[1]), DeltaPhi(phi[0], phi[1]));
464 deltaR[1] = SumSqr(TMath::Abs(eta[0] - eta[2]), DeltaPhi(phi[0], phi[2]));
466 if(deltaR[0] < deltaR[1])
468 else if(deltaR[0] > deltaR[1])
477 #endif // EXROOTCLASSES_H Definition: ExRootClasses.h:41
Double_t Phi
Definition: ExRootClasses.h:209
Definition: ExRootClasses.h:193
Long64_t Number
Definition: ExRootClasses.h:197
Long64_t Number
Definition: ExRootClasses.h:69
Bool_t IsSortable() const
Definition: ExRootClasses.h:45
Int_t Compare(const TObject *obj) const
Definition: ExRootClasses.h:46
static TCompareDeltaR * Instance(const T2 *obj=0)
Definition: ExRootClasses.h:440
Definition: ExRootClasses.h:309
static TCompare * fgCompare
Definition: ExRootClasses.h:328
Double_t Mass
Definition: ExRootClasses.h:183
Double_t Eta
Definition: ExRootClasses.h:150
Definition: ExRootClasses.h:84
const TCompare * GetCompare() const
Definition: ExRootClasses.h:302
Definition: ExRootClasses.h:216
Double_t Eta
Definition: ExRootClasses.h:178
Double_t Z
Definition: ExRootClasses.h:158
Definition: ExRootClasses.h:123
Int_t Compare(const TObject *obj1, const TObject *obj2) const
Definition: ExRootClasses.h:349
Double_t Weight
Definition: ExRootClasses.h:58
Double_t Weight
Definition: ExRootClasses.h:74
Double_t EhadOverEem
Definition: ExRootClasses.h:298
Double_t Eta
Definition: ExRootClasses.h:221
static TCompare * fgCompare
Definition: ExRootClasses.h:301
Double_t BTag
Definition: ExRootClasses.h:321
Double_t Pz
Definition: ExRootClasses.h:147
Double_t PT
Definition: ExRootClasses.h:290
Double_t PT
Definition: ExRootClasses.h:313
Definition: ExRootClasses.h:391
Double_t EhadOverEem
Definition: ExRootClasses.h:224
Int_t Mother2
Definition: ExRootClasses.h:91
Double_t Ntrk
Definition: ExRootClasses.h:319
Definition: ExRootClasses.h:365
virtual Int_t Compare(const TObject *obj1, const TObject *obj2) const =0
Int_t PID
Definition: ExRootClasses.h:137
static TComparePT * Instance()
Definition: ExRootClasses.h:369
Double_t E
Definition: ExRootClasses.h:172
Int_t D2
Definition: ExRootClasses.h:142
Double_t Spin
Definition: ExRootClasses.h:111
Double_t PT
Definition: ExRootClasses.h:239
Double_t Eta
Definition: ExRootClasses.h:314
Double_t CouplingQED
Definition: ExRootClasses.h:76
Double_t E
Definition: ExRootClasses.h:98
Double_t Ntrk
Definition: ExRootClasses.h:296
Double_t M
Definition: ExRootClasses.h:99
Double_t Eta
Definition: ExRootClasses.h:102
Double_t Y
Definition: ExRootClasses.h:157
Double_t PT
Definition: ExRootClasses.h:220
Double_t Charge
Definition: ExRootClasses.h:243
Int_t ColorLine1
Definition: ExRootClasses.h:92
static TCompare * fgCompare
Definition: ExRootClasses.h:115
Double_t Rapidity
Definition: ExRootClasses.h:153
Double_t PT
Definition: ExRootClasses.h:149
Double_t EhadOverEem
Definition: ExRootClasses.h:247
Definition: ExRootClasses.h:258
const TCompare * GetCompare() const
Definition: ExRootClasses.h:161
Definition: ExRootClasses.h:205
Int_t Compare(const TObject *obj1, const TObject *obj2) const
Definition: ExRootClasses.h:375
Double_t Phi
Definition: ExRootClasses.h:222
Double_t ScalePDF
Definition: ExRootClasses.h:75
Double_t Px
Definition: ExRootClasses.h:145
Double_t LifeTime
Definition: ExRootClasses.h:107
Int_t ColorLine2
Definition: ExRootClasses.h:93
Int_t JetIndex
Definition: ExRootClasses.h:276
Definition: ExRootClasses.h:286
Double_t Py
Definition: ExRootClasses.h:174
Int_t ProcessID
Definition: ExRootClasses.h:72
Double_t Ntrk
Definition: ExRootClasses.h:245
Definition: ExRootClasses.h:134
Int_t Compare(const TObject *obj1, const TObject *obj2) const
Definition: ExRootClasses.h:448
Definition: ExRootClasses.h:417
Int_t D1
Definition: ExRootClasses.h:141
static TCompare * fgCompare
Definition: ExRootClasses.h:160
Int_t Status
Definition: ExRootClasses.h:138
Double_t Px
Definition: ExRootClasses.h:95
Double_t Charge
Definition: ExRootClasses.h:294
Double_t Phi
Definition: ExRootClasses.h:315
Definition: ExRootClasses.h:32
Double_t Charge
Definition: ExRootClasses.h:266
Double_t Eta
Definition: ExRootClasses.h:263
Double_t Phi
Definition: ExRootClasses.h:292
Double_t Rapidity
Definition: ExRootClasses.h:181
Double_t X
Definition: ExRootClasses.h:156
virtual Bool_t IsSortable(const TObject *) const
Definition: ExRootClasses.h:35
Long64_t Number
Definition: ExRootClasses.h:127
Double_t Rapidity
Definition: ExRootClasses.h:105
Double_t E
Definition: ExRootClasses.h:144
Double_t Px
Definition: ExRootClasses.h:173
Double_t Phi
Definition: ExRootClasses.h:151
Double_t Eta
Definition: ExRootClasses.h:240
Int_t Trigger
Definition: ExRootClasses.h:198
Double_t PT
Definition: ExRootClasses.h:177
Double_t Ntrk
Definition: ExRootClasses.h:268
Double_t T
Definition: ExRootClasses.h:155
const TCompare * GetCompare() const
Definition: ExRootClasses.h:186
Double_t ETiso
Definition: ExRootClasses.h:273
Double_t Mass
Definition: ExRootClasses.h:317
Int_t M1
Definition: ExRootClasses.h:139
void SetObject(const T2 *obj)
Definition: ExRootClasses.h:446
Int_t Status
Definition: ExRootClasses.h:89
Double_t Py
Definition: ExRootClasses.h:96
Double_t Pz
Definition: ExRootClasses.h:97
Int_t Mother1
Definition: ExRootClasses.h:90
Int_t Compare(const TObject *obj1, const TObject *obj2) const
Definition: ExRootClasses.h:401
static TCompareE * Instance()
Definition: ExRootClasses.h:343
Int_t Index
Definition: ExRootClasses.h:326
const TCompare * GetCompare() const
Definition: ExRootClasses.h:116
Double_t Phi
Definition: ExRootClasses.h:103
Int_t PID
Definition: ExRootClasses.h:88
Double_t Eta
Definition: ExRootClasses.h:291
const TCompare * GetCompare() const
Definition: ExRootClasses.h:228
Double_t Phi
Definition: ExRootClasses.h:264
Definition: ExRootClasses.h:235
Int_t Nparticles
Definition: ExRootClasses.h:71
Double_t EhadOverEem
Definition: ExRootClasses.h:323
const TCompare * GetCompare() const
Definition: ExRootClasses.h:329
Definition: ExRootClasses.h:65
static TCompare * fgCompare
Definition: ExRootClasses.h:227
Double_t CouplingQCD
Definition: ExRootClasses.h:77
const TCompare * GetCompare() const
Definition: ExRootClasses.h:251
Double_t Py
Definition: ExRootClasses.h:146
constexpr double Pi()
Constant .
Definition: Si.hh:46
Double_t Phi
Definition: ExRootClasses.h:241
Int_t M2
Definition: ExRootClasses.h:140
Definition: ExRootClasses.h:168
static TCompare * fgCompare
Definition: ExRootClasses.h:278
static TCompare * fgCompare
Definition: ExRootClasses.h:185
Double_t PT
Definition: ExRootClasses.h:101
Definition: ExRootClasses.h:55
const TCompare * GetCompare() const
Definition: ExRootClasses.h:279
Double_t PTiso
Definition: ExRootClasses.h:270
Double_t PT
Definition: ExRootClasses.h:262
static TCompareET * Instance()
Definition: ExRootClasses.h:395
Definition: ExRootClasses.h:339
Double_t Pz
Definition: ExRootClasses.h:175
Double_t MET
Definition: ExRootClasses.h:208
Double_t Phi
Definition: ExRootClasses.h:179
static TCompare * fgCompare
Definition: ExRootClasses.h:250