ATLAS Offline Software
CompactHardTruth.h
Go to the documentation of this file.
1 
3 /*
4  Copyright (C) 2002-2021 CERN for the benefit of the ATLAS collaboration
5 */
6 
7 // CompactHardTruth.h
8 // Header file for class CompactHardTruth
9 // Author: Frank Paige <paige@bnl.gov>
10 //
11 // Algorithm to construct small, consistent hard-scattering HepMC truth
12 // record from GEN_EVENT. Only final partons have physical momenta, so
13 // must recluster them. Main steps:
14 // (1) Identify hadronization vertices with partons in, hadrons out.
15 // (2) Detach their incoming partons and delete their descendants.
16 // (3) Iteratively recombine 1->2 branchings of final partons with
17 // mass M < Mcut. Split 2->1 nonperturbative color recombinations.
18 // (4) Remove partons not connected to hard process. May make apparent
19 // anomalies, e.g., dropping soft q from incoming g -> g q.
20 //
21 // New final partons have correct momenta and ancestors/descendants.
22 // CompactHardTruth changes particles/vertices, so it cannot be used directly
23 // with thinning, but it can be used in parallel.
24 //
26 #ifndef DERIVATIONFRAMEWORK_COMPACTHARDTRUTH_H
27 #define DERIVATIONFRAMEWORK_COMPACTHARDTRUTH_H 1
28 
29 // STL includes
30 #include <string>
31 
32 // FrameWork includes
34 #include "GaudiKernel/ToolHandle.h"
35 
36 #include "AtlasHepMC/GenEvent.h"
37 #include "AtlasHepMC/GenParticle.h"
38 #include "AtlasHepMC/GenVertex.h"
39 
40 // fwd declares
41 class IMcVtxFilterTool;
42 
43 
44 namespace DerivationFramework {
45 
47  : public ::AthAlgorithm
48 {
49 
51  // Public methods:
53  public:
54 
55  // Copy constructor:
56 
58  CompactHardTruth( const std::string& name, ISvcLocator* pSvcLocator );
59 
61  virtual ~CompactHardTruth();
62 
63  // Athena algorithm Hooks
64  virtual StatusCode initialize();
65  virtual StatusCode execute();
66  virtual StatusCode finalize();
67 
68  // Total in/out FourVector for vertex
69  virtual HepMC::FourVector vtxInMom(HepMC::ConstGenVertexPtr);
70  virtual HepMC::FourVector vtxOutMom(HepMC::ConstGenVertexPtr);
71 
72  private:
73 
76 
78  std::string m_mcEventsName;
79  std::string m_thinnedMcEventsName;
80 
81  // Variables
82  int m_evtCount = 0;
83  int m_missCount = 0;
84  float m_partonCut;
85  float m_hardCut;
86 
87  int m_dangleFound = 0;
88  int m_dangleRemoved = 0;
89  float m_danglePtMax = 0.0F;
91 
93 
94  int m_thinParticles = 0;
95  int m_thinVertices = 0;
96 
97 };
98 
99 
100 } //> end namespace DerivationFramework
101 #endif //> !DERIVATIONFRAMEWORK_COMPACTHARDTRUTH_H
DerivationFramework::CompactHardTruth::m_maxCount
int m_maxCount
Definition: CompactHardTruth.h:92
DerivationFramework::CompactHardTruth::m_missCount
int m_missCount
Definition: CompactHardTruth.h:83
DerivationFramework::CompactHardTruth::execute
virtual StatusCode execute()
Definition: CompactHardTruth.cxx:107
GenEvent.h
GenVertex.h
DerivationFramework::CompactHardTruth
Definition: CompactHardTruth.h:48
GenParticle.h
DerivationFramework::CompactHardTruth::m_dangleFound
int m_dangleFound
Definition: CompactHardTruth.h:87
AthAlgorithm.h
DerivationFramework::CompactHardTruth::m_danglePtCut
float m_danglePtCut
Definition: CompactHardTruth.h:90
IMcVtxFilterTool
Definition: IMcVtxFilterTool.h:27
DerivationFramework::CompactHardTruth::initialize
virtual StatusCode initialize()
Definition: CompactHardTruth.cxx:67
EL::StatusCode
::StatusCode StatusCode
StatusCode definition for legacy code.
Definition: PhysicsAnalysis/D3PDTools/EventLoop/EventLoop/StatusCode.h:22
DerivationFramework
THE reconstruction tool.
Definition: ParticleSortingAlg.h:24
DerivationFramework::CompactHardTruth::~CompactHardTruth
virtual ~CompactHardTruth()
Destructor:
Definition: CompactHardTruth.cxx:63
AthAlgorithm
Definition: AthAlgorithm.h:47
DerivationFramework::CompactHardTruth::finalize
virtual StatusCode finalize()
Definition: CompactHardTruth.cxx:91
DerivationFramework::CompactHardTruth::m_thinVertices
int m_thinVertices
Definition: CompactHardTruth.h:95
DerivationFramework::CompactHardTruth::m_mcEventsName
std::string m_mcEventsName
Containers.
Definition: CompactHardTruth.h:78
name
std::string name
Definition: Control/AthContainers/Root/debug.cxx:240
DerivationFramework::CompactHardTruth::m_partonCut
float m_partonCut
Definition: CompactHardTruth.h:84
DerivationFramework::CompactHardTruth::m_hardCut
float m_hardCut
Definition: CompactHardTruth.h:85
DerivationFramework::CompactHardTruth::vtxInMom
virtual HepMC::FourVector vtxInMom(HepMC::ConstGenVertexPtr)
Definition: CompactHardTruth.cxx:1383
DerivationFramework::CompactHardTruth::m_danglePtMax
float m_danglePtMax
Definition: CompactHardTruth.h:89
DerivationFramework::CompactHardTruth::m_evtCount
int m_evtCount
Definition: CompactHardTruth.h:82
DerivationFramework::CompactHardTruth::m_thinnedMcEventsName
std::string m_thinnedMcEventsName
Definition: CompactHardTruth.h:79
DerivationFramework::CompactHardTruth::CompactHardTruth
CompactHardTruth()
Default constructor:
HepMC::ConstGenVertexPtr
const HepMC::GenVertex * ConstGenVertexPtr
Definition: GenVertex.h:60
DerivationFramework::CompactHardTruth::m_dangleRemoved
int m_dangleRemoved
Definition: CompactHardTruth.h:88
DerivationFramework::CompactHardTruth::vtxOutMom
virtual HepMC::FourVector vtxOutMom(HepMC::ConstGenVertexPtr)
Definition: CompactHardTruth.cxx:1405
DerivationFramework::CompactHardTruth::m_thinParticles
int m_thinParticles
Definition: CompactHardTruth.h:94