ATLAS Offline Software
Loading...
Searching...
No Matches
P4AscendingSorters.h
Go to the documentation of this file.
1
2
3/*
4 Copyright (C) 2002-2020 CERN for the benefit of the ATLAS collaboration
5*/
6
7// P4AscendingSorters.h
8// Header file for 'ascending' Sorters
9// Author: S.Binet<binet@cern.ch>
11#ifndef FOURMOMUTILS_P4ASCENDINGSORTERS_H
12#define FOURMOMUTILS_P4ASCENDINGSORTERS_H
13
14// AthAnalysisBase/ManaCore doesn't currently include the Trigger Service
15#ifndef XAOD_ANALYSIS
16
17// STL includes
18#include <cmath>
19
20// core includes
21#include "CxxUtils/fpcompare.h"
22
23// EventKernel includes
25
26namespace P4Sorters {
27
28namespace Ascending {
29
30class Px
31{
32public:
33 bool operator()( const I4Momentum* a, const I4Momentum* b ) const {
34 return CxxUtils::fpcompare::less( a->px(), b->px() );
35 }
36};
37
38class Py
39{
40public:
41 bool operator()( const I4Momentum* a, const I4Momentum* b ) const {
42 return CxxUtils::fpcompare::less( a->py(), b->py() );
43 }
44};
45
46class Pz
47{
48public:
49 bool operator()( const I4Momentum* a, const I4Momentum* b ) const {
50 return CxxUtils::fpcompare::less( a->pz(), b->pz() );
51 }
52};
53
54
55class Mass
56{
57public:
58 bool operator()( const I4Momentum* a, const I4Momentum* b ) const {
59 return CxxUtils::fpcompare::less( a->m(), b->m() );
60 }
61};
62
64{
65public:
66 bool operator()( const I4Momentum* a, const I4Momentum* b ) const {
67 return CxxUtils::fpcompare::less( a->m2(), b->m2() );
68 }
69};
70
72{
73public:
74 bool operator()( const I4Momentum* a, const I4Momentum* b ) const {
75 return CxxUtils::fpcompare::less( a->p(), b->p() );
76 }
77};
78
80{
81public:
82 bool operator()( const I4Momentum* a, const I4Momentum* b ) const {
83 return CxxUtils::fpcompare::less( a->p2(), b->p2() );
84 }
85};
86
87class Eta
88{
89public:
90 bool operator()( const I4Momentum* a, const I4Momentum* b ) const {
91 return CxxUtils::fpcompare::less( a->eta(), b->eta() );
92 }
93};
94
95class AbsEta
96{
97public:
98 bool operator()( const I4Momentum* a, const I4Momentum* b ) const {
99 using std::abs;
100 return CxxUtils::fpcompare::less( abs(a->eta()), abs(b->eta()) );
101 }
102};
103
104class Ene
105{
106 public:
107 bool operator()( const I4Momentum* a, const I4Momentum* b ) const {
108 return CxxUtils::fpcompare::less( a->e(), b->e() );
109 }
110};
111
112class Et
113{
114public:
115 bool operator()( const I4Momentum* a, const I4Momentum* b ) const {
116 return CxxUtils::fpcompare::less( a->et(), b->et() );
117 }
118};
119
120class Pt
121{
122public:
123 bool operator()( const I4Momentum* a, const I4Momentum* b ) const {
124 return CxxUtils::fpcompare::less( a->pt(), b->pt() );
125 }
126};
127
128class InvPt
129{
130public:
131 bool operator()( const I4Momentum* a, const I4Momentum* b ) const {
132 return CxxUtils::fpcompare::less( a->iPt(), b->iPt() );
133 }
134};
135
136// Are those usefull anyway ??
137class CosTh
138{
139public:
140 bool operator()( const I4Momentum* a, const I4Momentum* b ) const {
141 return CxxUtils::fpcompare::less( a->cosTh(), b->cosTh() );
142 }
143};
144
145class SinTh
146{
147public:
148 bool operator()( const I4Momentum* a, const I4Momentum* b ) const {
149 return CxxUtils::fpcompare::less( a->sinTh(), b->sinTh() );
150 }
151};
152
153class CotTh
154{
155public:
156 bool operator()( const I4Momentum* a, const I4Momentum* b ) const {
157 return CxxUtils::fpcompare::less( a->cotTh(), b->cotTh() );
158 }
159};
160
161} // > end namespace Ascending
162} // > end namespace P4Sorters
163
164#endif
165
166#endif //> FOURMOMUTILS_P4ASCENDINGSORTERS_H
static Double_t a
I4Momentum is an abstract base class providing 4-momentum behavior.
Definition I4Momentum.h:31
bool operator()(const I4Momentum *a, const I4Momentum *b) const
bool operator()(const I4Momentum *a, const I4Momentum *b) const
bool operator()(const I4Momentum *a, const I4Momentum *b) const
bool operator()(const I4Momentum *a, const I4Momentum *b) const
bool operator()(const I4Momentum *a, const I4Momentum *b) const
bool operator()(const I4Momentum *a, const I4Momentum *b) const
bool operator()(const I4Momentum *a, const I4Momentum *b) const
bool operator()(const I4Momentum *a, const I4Momentum *b) const
bool operator()(const I4Momentum *a, const I4Momentum *b) const
bool operator()(const I4Momentum *a, const I4Momentum *b) const
bool operator()(const I4Momentum *a, const I4Momentum *b) const
bool operator()(const I4Momentum *a, const I4Momentum *b) const
bool operator()(const I4Momentum *a, const I4Momentum *b) const
bool operator()(const I4Momentum *a, const I4Momentum *b) const
bool operator()(const I4Momentum *a, const I4Momentum *b) const
bool operator()(const I4Momentum *a, const I4Momentum *b) const
Workaround x86 precision issues for FP inequality comparisons.
bool less(double a, double b)
Compare two FP numbers, working around x87 precision issues.
Definition fpcompare.h:166