ATLAS Offline Software
IAnalysisTools.h
Go to the documentation of this file.
1 /*
2  Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration
3 */
4 
5 #ifndef ANALYSISTOOLS_IANALYSISTOOLS_H
6 #define ANALYSISTOOLS_IANALYSISTOOLS_H
7 
14 #include <vector>
15 
17 
21 
22 //class INavigable4Momentum;
23 
24 //class INavigable4MomentumCollection; //this causes a problem in client packages (eg. AnalysisExamples) because it is now a typedef
25 
26 class StoreGateSvc;
27 
28 class IAnalysisTools : public AthAlgTool
29 {
30 public:
31 
34  IAnalysisTools ( const std::string& type, const std::string& name,
35  const IInterface* parent )
37  {}
38 
41  virtual ~IAnalysisTools () {}
42 
45  double deltaPhi (const INavigable4Momentum *p1, const INavigable4Momentum *p2) const;
46 
49  double deltaR (const INavigable4Momentum *p1, const INavigable4Momentum *p2) const;
50 
53  double imass2 (const INavigable4Momentum *p1, const INavigable4Momentum *p2) const;
54 
57  double imass4 (const INavigable4Momentum *p1, const INavigable4Momentum *p2,
58  const INavigable4Momentum *p3, const INavigable4Momentum *p4) const;
59 
66  template <class COLL> bool matchR
67  (const INavigable4Momentum *t, COLL *coll, int &index, double &deltaR) const;
68 
69  template <class COLL> bool matchR
70  (const double eta, const double phi, COLL *coll, int &index, double &deltaR) const;
71 
72  bool matchR (const INavigable4Momentum *t, const TruthParticleContainer *coll,
73  int &index, double &deltaR, const bool genOnly=true) const
74  {
75  return AnalysisUtils::Match::R(t->eta(), t->phi(), coll, index, deltaR, genOnly);
76  }
77 
78  bool matchR (const double eta, const double phi, const TruthParticleContainer *coll,
79  int &index, double &deltaR, const bool genOnly=true) const
80  {
81  return AnalysisUtils::Match::R(eta, phi, coll, index, deltaR, genOnly);
82  }
83 
90  template <class COLL> bool matchR
91  (const INavigable4Momentum *t, COLL *coll, int &index, double &deltaR, double &deltaE) const;
92 
93  template <class COLL> bool matchR
94  (const double eta, const double phi, const double e, COLL *coll, int &index,
95  double &deltaR, double &deltaE) const;
96 
97  bool matchR (const double eta, const double phi, const double e, const TruthParticleContainer *coll, int &index,
98  double &deltaR, double &deltaE, const bool genOnly=true) const
99  {
100  return AnalysisUtils::Match::R(eta, phi, e, coll, index, deltaR, deltaE, genOnly);
101  }
102 
103  bool matchR (const INavigable4Momentum *t, const TruthParticleContainer *coll, int &index,
104  double &deltaR, double &deltaE, const bool genOnly=true) const
105  {
106  return AnalysisUtils::Match::R(t->eta(), t->phi(), t->e(), coll, index, deltaR, deltaE, genOnly);
107  }
108 
115  template <class COLL, class ELEMENT> bool matchR
116  (const INavigable4Momentum *t, COLL *coll, ELEMENT *&element, double &deltaR) const;
117 
118  template <class COLL, class ELEMENT> bool matchR
119  (const double eta, const double phi, COLL *coll, ELEMENT *&element, double &deltaR) const;
120 
121  bool matchR (const INavigable4Momentum *t, const TruthParticleContainer *coll, const TruthParticle *&element,
122  double &deltaR, const bool genOnly=true) const
123  {
124  int index = 0;
125  bool ret = AnalysisUtils::Match::R(t,coll,index,deltaR, genOnly);
126  if (!ret) return false;
127  element = (*coll)[index];
128  return true;
129  }
130 
131  bool matchR (const double eta, const double phi, const TruthParticleContainer *coll, const TruthParticle *&element,
132  double &deltaR, const bool genOnly=true) const
133  {
134  int index;
135  bool ret = AnalysisUtils::Match::R(eta,phi,coll,index,deltaR,genOnly);
136  if (!ret) return false;
137  element = (*coll)[index];
138  return true;
139  }
140 
147  template <class COLL, class ELEMENT> bool matchR
148  (const INavigable4Momentum *t, COLL *coll, ELEMENT *&element, double &deltaR, double &deltaE) const;
149 
150  template <class COLL, class ELEMENT> bool matchR
151  (const double eta, const double phi, const double e, COLL *coll, ELEMENT *&element,
152  double &deltaR, double &deltaE) const;
153 
154  bool matchR (const INavigable4Momentum *t, const TruthParticleContainer *coll, const TruthParticle *&element,
155  double &deltaR, double &deltaE, const bool genOnly=true) const
156  {
157  int index = -1;
158  bool ret = AnalysisUtils::Match::R(t,coll,index,deltaR, deltaE, genOnly);
159  if (!ret || index == -1) return false;
160  element = (*coll)[index];
161  return true;
162  }
163 
164  bool matchR (const double eta, const double phi, const double e, const TruthParticleContainer *coll,
165  const TruthParticle *&element, double &deltaR, double &deltaE, const bool genOnly=true) const
166  {
167  int index = -1;
168  bool ret = AnalysisUtils::Match::R(eta,phi,e,coll,index,deltaR,deltaE,genOnly);
169  if (!ret || -1 == index) return false;
170  element = (*coll)[index];
171  return true;
172  }
173 
179  template <class COLL> bool matchR
180  (const INavigable4Momentum *t, COLL *coll, int &index, double &deltaR, const int pdg) const;
181 
182  template <class COLL> bool matchR
183  (const double eta, const double phi, COLL *coll, int &index, double &deltaR, const int pdg) const;
184 
185  bool matchR (const double eta, const double phi, const TruthParticleContainer *coll, int &index,
186  double &deltaR, const int pdg, const bool genOnly=true) const
187  {
188  return AnalysisUtils::Match::R(eta, phi, coll, index, deltaR, pdg, genOnly);
189  }
190 
191  bool matchR (const INavigable4Momentum *t, const TruthParticleContainer *coll, int &index,
192  double &deltaR, const int pdg, const bool genOnly=true) const
193  {
194  return AnalysisUtils::Match::R(t->eta(), t->phi(), coll, index, deltaR, pdg, genOnly);
195  }
196 
202  template <class COLL> bool matchR
203  (const INavigable4Momentum *t, COLL *coll, int &index, double &deltaR, const int pdg,
204  double &deltaE) const;
205 
206  template <class COLL> bool matchR
207  (const double eta, const double phi, const double e, COLL *coll, int &index, double &deltaR,
208  const int pdg, double &deltaE) const;
209 
210  bool matchR (const double eta, const double phi, const double e, const TruthParticleContainer *coll,
211  int &index, double &deltaR, const int pdg, double &deltaE, const bool genOnly=true) const
212  {
213  return AnalysisUtils::Match::R(eta, phi, e, coll, index, deltaR, pdg, deltaE, genOnly);
214  }
215 
217  int &index, double &deltaR, const int pdg, double &deltaE, const bool genOnly=true) const
218  {
219  return AnalysisUtils::Match::R(t->eta(), t->phi(), t->e(), coll, index, deltaR, pdg, deltaE, genOnly);
220  }
221 
227  template <class COLL, class ELEMENT> bool matchR
228  (const INavigable4Momentum *t, COLL *coll, ELEMENT *&element, double &deltaR, const int pdg) const;
229 
230  template <class COLL, class ELEMENT> bool matchR
231  (const double eta, const double phi, COLL *coll, ELEMENT *&element, double &deltaR, const int pdg) const;
232 
233  bool matchR (const INavigable4Momentum *t, const TruthParticleContainer *coll, const TruthParticle *&element,
234  double &deltaR, const int pdg, const bool genOnly=true) const
235  {
236  int index;
237  bool ret = AnalysisUtils::Match::R(t,coll,index,deltaR,pdg,genOnly);
238  if (!ret) return false;
239  element = (*coll)[index];
240  return true;
241  }
242 
243  bool matchR (const double eta, const double phi, TruthParticleContainer *coll, const TruthParticle *&element,
244  double &deltaR, const int pdg, const bool genOnly=true) const
245  {
246  int index;
247  bool ret = AnalysisUtils::Match::R(eta,phi,coll,index,deltaR,pdg,genOnly);
248  if (!ret) return false;
249  element = (*coll)[index];
250  return true;
251  }
252 
258  template <class COLL, class ELEMENT> bool matchR
259  (const INavigable4Momentum *t, COLL *coll, ELEMENT *&element, double &deltaR, const int pdg,
260  double &deltaE) const;
261 
262  template <class COLL, class ELEMENT> bool matchR
263  (const double eta, const double phi, const double e, COLL *coll, ELEMENT *&element,
264  double &deltaR, const int pdg, double &deltaE) const;
265 
266  bool matchR(const INavigable4Momentum *t, const TruthParticleContainer *coll, const TruthParticle *&element, double &deltaR,
267  const int pdg,double &deltaE, const bool genOnly=true) const
268  {
269  int index;
270  bool ret = AnalysisUtils::Match::R(t,coll,index,deltaR,pdg,deltaE,genOnly);
271  if (!ret) return false;
272  element = (*coll)[index];
273  return true;
274  }
275 
276  bool matchR (const double eta, const double phi, const double e, const TruthParticleContainer *coll,
277  const TruthParticle *&element, double &deltaR, const int pdg, double &deltaE, const bool genOnly=true) const
278  {
279  int index;
280  bool ret = AnalysisUtils::Match::R(eta,phi,e,coll,index,deltaR,pdg, deltaE,genOnly);
281  if (!ret) return false;
282  element = (*coll)[index];
283  return true;
284  }
285 
290  template <class COLL> void sortPT (COLL *coll) const;
291 
296  template <class COLL> void sortE (COLL *coll) const;
297 
302  template <class COLL> void sortEta (COLL *coll) const;
303 
308  template <class COLL> void sortPhi (COLL *coll) const;
309 
316  template <class COLL> void classifyCharge (const COLL *coll,
317  std::vector<typename COLL::value_type> &pos,
318  std::vector<typename COLL::value_type> &neg) const;
319 
330  template <class CALLER, class CRITERIA, class COLL> StatusCode select
331  (CALLER *caller, CRITERIA criteria, COLL *coll, const std::string &key, const bool=false) const;
332 };
333 
334 // implementation for templates
336 
337 #endif
IAnalysisTools::matchR
bool matchR(const double eta, const double phi, const TruthParticleContainer *coll, int &index, double &deltaR, const int pdg, const bool genOnly=true) const
Definition: IAnalysisTools.h:185
IAnalysisTools::~IAnalysisTools
virtual ~IAnalysisTools()
destructor
Definition: IAnalysisTools.h:41
IAnalysisTools::matchR
bool matchR(const double eta, const double phi, const TruthParticleContainer *coll, int &index, double &deltaR, const bool genOnly=true) const
Definition: IAnalysisTools.h:78
IAnalysisTools::matchR
bool matchR(const double eta, const double phi, const double e, const TruthParticleContainer *coll, const TruthParticle *&element, double &deltaR, const int pdg, double &deltaE, const bool genOnly=true) const
Definition: IAnalysisTools.h:276
IAnalysisTools::matchR
bool matchR(const INavigable4Momentum *t, const TruthParticleContainer *coll, const TruthParticle *&element, double &deltaR, const bool genOnly=true) const
Definition: IAnalysisTools.h:121
IAnalysisTools::matchR
bool matchR(const double eta, const double phi, COLL *coll, ELEMENT *&element, double &deltaR) const
IAnalysisTools::sortPT
void sortPT(COLL *coll) const
sort by pT
IAnalysisTools::matchR
bool matchR(const INavigable4Momentum *t, const TruthParticleContainer *coll, int &index, double &deltaR, const int pdg, double &deltaE, const bool genOnly=true) const
Definition: IAnalysisTools.h:216
IAnalysisTools::matchR
bool matchR(const INavigable4Momentum *t, const TruthParticleContainer *coll, int &index, double &deltaR, double &deltaE, const bool genOnly=true) const
Definition: IAnalysisTools.h:103
IAnalysisTools::matchR
bool matchR(const INavigable4Momentum *t, COLL *coll, ELEMENT *&element, double &deltaR) const
find the closest (in R) element in a collection to an INavigable4Momentum not check PDG ID
IAnalysisTools::matchR
bool matchR(const INavigable4Momentum *t, COLL *coll, int &index, double &deltaR) const
find the closest (in R) element in a collection to an INavigable4Momentum not check PDG ID
phi
Scalar phi() const
phi method
Definition: AmgMatrixBasePlugin.h:64
IAnalysisTools::matchR
bool matchR(const double eta, const double phi, const double e, const TruthParticleContainer *coll, int &index, double &deltaR, double &deltaE, const bool genOnly=true) const
Definition: IAnalysisTools.h:97
TruthParticleContainer.h
eta
Scalar eta() const
pseudorapidity method
Definition: AmgMatrixBasePlugin.h:79
index
Definition: index.py:1
IAnalysisTools::matchR
bool matchR(const double eta, const double phi, const TruthParticleContainer *coll, const TruthParticle *&element, double &deltaR, const bool genOnly=true) const
Definition: IAnalysisTools.h:131
IAnalysisTools::matchR
bool matchR(const double eta, const double phi, COLL *coll, int &index, double &deltaR) const
TruthParticle
Definition: PhysicsAnalysis/TruthParticleID/McParticleEvent/McParticleEvent/TruthParticle.h:58
IAnalysisTools::deltaR
double deltaR(const INavigable4Momentum *p1, const INavigable4Momentum *p2) const
IAnalysisTools::matchR
bool matchR(const INavigable4Momentum *t, COLL *coll, ELEMENT *&element, double &deltaR, double &deltaE) const
find the closest (in R) element in a collection to an INavigable4Momentum not check PDG ID - with a c...
read_hist_ntuple.t
t
Definition: read_hist_ntuple.py:5
IAnalysisTools::matchR
bool matchR(const double eta, const double phi, TruthParticleContainer *coll, const TruthParticle *&element, double &deltaR, const int pdg, const bool genOnly=true) const
Definition: IAnalysisTools.h:243
TruthParticleContainer
Definition: PhysicsAnalysis/TruthParticleID/McParticleEvent/McParticleEvent/TruthParticleContainer.h:42
IAnalysisTools::sortE
void sortE(COLL *coll) const
sort by energy
IAnalysisTools::sortPhi
void sortPhi(COLL *coll) const
sort by phi
IAnalysisTools::matchR
bool matchR(const double eta, const double phi, COLL *coll, int &index, double &deltaR, const int pdg) const
IAnalysisTools
Definition: IAnalysisTools.h:29
IAnalysisTools::imass2
double imass2(const INavigable4Momentum *p1, const INavigable4Momentum *p2) const
Invariant mass : 2 body.
ParticleJetTools::p3
Amg::Vector3D p3(const xAOD::TruthVertex *p)
Definition: ParticleJetLabelCommon.cxx:55
IAnalysisTools::matchR
bool matchR(const double eta, const double phi, COLL *coll, ELEMENT *&element, double &deltaR, const int pdg) const
IAnalysisTools::matchR
bool matchR(const INavigable4Momentum *t, COLL *coll, int &index, double &deltaR, const int pdg, double &deltaE) const
find the closest (in R) element in a collection to an INavigable4Momentum
IAnalysisTools::matchR
bool matchR(const INavigable4Momentum *t, const TruthParticleContainer *coll, const TruthParticle *&element, double &deltaR, const int pdg, const bool genOnly=true) const
Definition: IAnalysisTools.h:233
StoreGateSvc
The Athena Transient Store API.
Definition: StoreGateSvc.h:128
ret
T ret(T t)
Definition: rootspy.cxx:260
EL::StatusCode
::StatusCode StatusCode
StatusCode definition for legacy code.
Definition: PhysicsAnalysis/D3PDTools/EventLoop/EventLoop/StatusCode.h:22
IAnalysisTools::matchR
bool matchR(const INavigable4Momentum *t, const TruthParticleContainer *coll, const TruthParticle *&element, double &deltaR, double &deltaE, const bool genOnly=true) const
Definition: IAnalysisTools.h:154
AnalysisUtils::Match::R
bool R(const double eta, const double phi, COLL *coll, int &index, double &deltaR, const int pdg)
find the closest element in R
Definition: AnalysisMisc.h:94
INavigable4MomentumCollection.h
IAnalysisTools::matchR
bool matchR(const double eta, const double phi, const double e, const TruthParticleContainer *coll, int &index, double &deltaR, const int pdg, double &deltaE, const bool genOnly=true) const
Definition: IAnalysisTools.h:210
AthAlgTool.h
IAnalysisTools::matchR
bool matchR(const double eta, const double phi, const double e, COLL *coll, ELEMENT *&element, double &deltaR, double &deltaE) const
test_pyathena.parent
parent
Definition: test_pyathena.py:15
IAnalysisTools::IAnalysisTools
IAnalysisTools(const std::string &type, const std::string &name, const IInterface *parent)
constructor
Definition: IAnalysisTools.h:34
IAnalysisTools::matchR
bool matchR(const double eta, const double phi, const double e, COLL *coll, int &index, double &deltaR, double &deltaE) const
IAnalysisTools::matchR
bool matchR(const INavigable4Momentum *t, COLL *coll, ELEMENT *&element, double &deltaR, const int pdg, double &deltaE) const
find the closest (in R) element in a collection to an INavigable4Momentum
IAnalysisTools::imass4
double imass4(const INavigable4Momentum *p1, const INavigable4Momentum *p2, const INavigable4Momentum *p3, const INavigable4Momentum *p4) const
Invariant mass : 4 body.
IAnalysisTools::matchR
bool matchR(const INavigable4Momentum *t, COLL *coll, ELEMENT *&element, double &deltaR, const int pdg) const
find the closest (in R) element in a collection to an INavigable4Momentum
name
std::string name
Definition: Control/AthContainers/Root/debug.cxx:192
IAnalysisTools::matchR
bool matchR(const double eta, const double phi, const double e, COLL *coll, ELEMENT *&element, double &deltaR, const int pdg, double &deltaE) const
IAnalysisTools::matchR
bool matchR(const double eta, const double phi, const double e, const TruthParticleContainer *coll, const TruthParticle *&element, double &deltaR, double &deltaE, const bool genOnly=true) const
Definition: IAnalysisTools.h:164
IAnalysisTools::matchR
bool matchR(const INavigable4Momentum *t, COLL *coll, int &index, double &deltaR, double &deltaE) const
find the closest (in R) element in a collection to an INavigable4Momentum not check PDG ID but a cond...
python.LumiBlobConversion.pos
pos
Definition: LumiBlobConversion.py:18
IAnalysisTools::matchR
bool matchR(const INavigable4Momentum *t, COLL *coll, int &index, double &deltaR, const int pdg) const
find the closest (in R) element in a collection to an INavigable4Momentum
DeMoScan.index
string index
Definition: DeMoScan.py:362
DiTauMassTools::MaxHistStrategyV2::e
e
Definition: PhysicsAnalysis/TauID/DiTauMassTools/DiTauMassTools/HelperFunctions.h:26
INavigable4Momentum
Definition: INavigable4Momentum.h:21
python.CaloScaleNoiseConfig.type
type
Definition: CaloScaleNoiseConfig.py:78
IAnalysisTools::deltaPhi
double deltaPhi(const INavigable4Momentum *p1, const INavigable4Momentum *p2) const
IAnalysisTools::classifyCharge
void classifyCharge(const COLL *coll, std::vector< typename COLL::value_type > &pos, std::vector< typename COLL::value_type > &neg) const
classify by charge
IAnalysisTools::matchR
bool matchR(const INavigable4Momentum *t, const TruthParticleContainer *coll, const TruthParticle *&element, double &deltaR, const int pdg, double &deltaE, const bool genOnly=true) const
Definition: IAnalysisTools.h:266
IAnalysisTools::sortEta
void sortEta(COLL *coll) const
sort by eta
IAnalysisTools::matchR
bool matchR(const double eta, const double phi, const double e, COLL *coll, int &index, double &deltaR, const int pdg, double &deltaE) const
IAnalysisTools::select
StatusCode select(CALLER *caller, CRITERIA criteria, COLL *coll, const std::string &key, const bool=false) const
selection
AthAlgTool
Definition: AthAlgTool.h:26
AnalysisMisc.h
IAnalysisTools::matchR
bool matchR(const INavigable4Momentum *t, const TruthParticleContainer *coll, int &index, double &deltaR, const int pdg, const bool genOnly=true) const
Definition: IAnalysisTools.h:191
IAnalysisTools.icc
IAnalysisTools::matchR
bool matchR(const INavigable4Momentum *t, const TruthParticleContainer *coll, int &index, double &deltaR, const bool genOnly=true) const
Definition: IAnalysisTools.h:72
mapkey::key
key
Definition: TElectronEfficiencyCorrectionTool.cxx:37