ATLAS Offline Software
IVGammaORTool.h
Go to the documentation of this file.
1 /*
2  Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration
3 */
4 
5 #ifndef GAMMAORTOOLS_IVGAMMAORTOOL_H
6 #define GAMMAORTOOLS_IVGAMMAORTOOL_H
7 
8 #include <vector>
9 #include <map>
10 
13 #include "AsgTools/IAsgTool.h"
14 
15 /****************************************************************************
16 * This tool can be used to identify the overlap of a V+jets and V+gamma sample
17 * or in fact between most V^n+gamma^m and V^n+gamma^(m-1) samples
18 * (e.g. V+gammagamma vs V+gamma or VV+gamma vs VV).
19 * It can either decide whether an event is in the overlap region for fixed cuts on photons and lepton
20 * or be used to extract relevant information from the event so that the overlap removal (OR) can be performed
21 * at a later stage with a simple 'if' statement.
22 *
23 * The OR functions (inOverlap(result), photonPtsOutsideDr(result), or photonPtsOutsideDrs(result)),
24 * set the result via reference and return a status code.
25 * Usually the tool will take leptons and photons from the current event but this behavior can be
26 * overwritten by explicitly setting leptons and photons as additional arguments to the functions.
27 *
28 * Further documented at
29 * https://twiki.cern.ch/twiki/bin/viewauth/AtlasProtected/VGammaORTool
30 *
31 *********************************************************************************/
32 
33 class IVGammaORTool: virtual public asg::IAsgTool {
34 public:
36 
37 
38  // four vectors (can be used if the full truth record is not available or broken)
49  virtual StatusCode inOverlap(bool& result,
50  const std::vector<TLorentzVector>* leptons=0,
51  const std::vector<TLorentzVector>* photons=0,
52  const std::vector<int>* lepton_origins=0,
53  const std::vector<int>* photon_origins=0) const =0;
54 
62  // four vectors (can be used if the full truth record is not available or broken)
67  virtual StatusCode photonPtsOutsideDr(std::vector<float>& result,
68  const std::vector<TLorentzVector>* leptons=0,
69  const std::vector<TLorentzVector>* photons=0,
70  const std::vector<int>* lepton_origins=0,
71  const std::vector<int>* photon_origins=0) const=0;
72 
80  // four vectors (can be used if the full truth record is not available or broken)
85  virtual StatusCode photonPtsOutsideDrs(std::map<float, std::vector<float> >& result,
86  const std::vector<TLorentzVector>* leptons=0,
87  const std::vector<TLorentzVector>* photons=0,
88  const std::vector<int>* lepton_origins=0,
89  const std::vector<int>* photon_origins=0) const=0;
90 
93  virtual bool frixioneIsolated(const xAOD::TruthParticle& photon,
94  const xAOD::TruthParticleContainer& truthParticles,
95  float dR0, float exponent, float epsilon) const=0;
96 };
97 
98 
99 
100 #endif //> !GAMMAORTOOLS_IVGAMMAORTOOL_H
IVGammaORTool
Definition: IVGammaORTool.h:33
get_generator_info.result
result
Definition: get_generator_info.py:21
IVGammaORTool::inOverlap
virtual StatusCode inOverlap(bool &result, const std::vector< TLorentzVector > *leptons=0, const std::vector< TLorentzVector > *photons=0, const std::vector< int > *lepton_origins=0, const std::vector< int > *photon_origins=0) const =0
Determine whether current event is in overlap region (set via reference).
TruthParticleContainer.h
asg::IAsgTool
Base class for the dual-use tool interface classes.
Definition: IAsgTool.h:41
IVGammaORTool::photonPtsOutsideDrs
virtual StatusCode photonPtsOutsideDrs(std::map< float, std::vector< float > > &result, const std::vector< TLorentzVector > *leptons=0, const std::vector< TLorentzVector > *photons=0, const std::vector< int > *lepton_origins=0, const std::vector< int > *photon_origins=0) const =0
Determine the pTs of photons outside of several dR cuts that are configured in tool initialization (d...
EL::StatusCode
::StatusCode StatusCode
StatusCode definition for legacy code.
Definition: PhysicsAnalysis/D3PDTools/EventLoop/EventLoop/StatusCode.h:22
xAOD::TruthParticle_v1
Class describing a truth particle in the MC record.
Definition: TruthParticle_v1.h:37
IVGammaORTool::photonPtsOutsideDr
virtual StatusCode photonPtsOutsideDr(std::vector< float > &result, const std::vector< TLorentzVector > *leptons=0, const std::vector< TLorentzVector > *photons=0, const std::vector< int > *lepton_origins=0, const std::vector< int > *photon_origins=0) const =0
Determine the pTs of photons outside the dR cut that is configured in tool initialization (dR_lepton_...
ASG_TOOL_INTERFACE
#define ASG_TOOL_INTERFACE(CLASSNAME)
Definition: AsgToolMacros.h:40
IAsgTool.h
DataVector
Derived DataVector<T>.
Definition: DataVector.h:794
xAOD::photon
@ photon
Definition: TrackingPrimitives.h:199
IVGammaORTool::frixioneIsolated
virtual bool frixioneIsolated(const xAOD::TruthParticle &photon, const xAOD::TruthParticleContainer &truthParticles, float dR0, float exponent, float epsilon) const =0
Function determining whether a photon is frixione isolated from truthParticles Parameters as defined ...
TruthParticle.h