ITauToolBase.h 3.69 KB
Newer Older
1
/*
2
  Copyright (C) 2002-2021 CERN for the benefit of the ATLAS collaboration
3
4
*/

5
6
#ifndef TAURECTOOLS_ITAUTOOLBASE_H
#define TAURECTOOLS_ITAUTOOLBASE_H
7
8

#include "AsgTools/IAsgTool.h"
9
10
11
12
13
#include "xAODTau/TauJet.h"
#include "xAODTracking/TrackParticleContainer.h"
#include "xAODTracking/VertexContainer.h"
#include "xAODPFlow/PFOContainer.h"
#include "xAODCaloEvent/CaloClusterContainer.h"
14
#include "xAODParticleEvent/ParticleContainer.h"
Bertrand Martin's avatar
Bertrand Martin committed
15
#include <boost/dynamic_bitset.hpp>
16

17
18
19
#ifndef XAOD_ANALYSIS
#include "CaloEvent/CaloCellContainer.h"
#endif
20

21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
/**
 * @brief The base class for all tau tools.
 * 
 * @author Lukasz Janyst
 * @author Justin Griffiths
 * Thanks to Lianyou Shan, Lorenz Hauswald
 */

class ITauToolBase : virtual public asg::IAsgTool
{
 public:

  ASG_TOOL_INTERFACE(ITauToolBase)    

  virtual ~ITauToolBase() {}

  //-----------------------------------------------------------------
  //! Tool initializer
  //-----------------------------------------------------------------
  virtual StatusCode initialize() = 0;

  //-----------------------------------------------------------------
  //! Event initializer - called at the beginning of each event
  //-----------------------------------------------------------------
  virtual StatusCode eventInitialize() = 0;

  //-----------------------------------------------------------------
  //! Execute - called for each tau candidate
  //-----------------------------------------------------------------
50
  virtual StatusCode execute(xAOD::TauJet& pTau) const = 0;
51
52
  virtual StatusCode executeVertexFinder(xAOD::TauJet& pTau, 
                                         const xAOD::VertexContainer* vertexContainer = nullptr, 
53
                                         const xAOD::TrackParticleContainer* trackContainer = nullptr) const = 0;
54
  virtual StatusCode executeTrackFinder(xAOD::TauJet& pTau, xAOD::TauTrackContainer& tauTrackContainer) const = 0;
55
  virtual StatusCode executeTrackClassifier(xAOD::TauJet& pTau, xAOD::TauTrackContainer& tauTrackContainer) const = 0;
Tomasz Bold's avatar
Tomasz Bold committed
56
  virtual StatusCode executeShotFinder(xAOD::TauJet& pTau, xAOD::CaloClusterContainer& shotClusterContainer, xAOD::PFOContainer& PFOContainer ) const = 0;
57
  virtual StatusCode executePi0ClusterCreator(xAOD::TauJet& pTau, xAOD::PFOContainer& neutralPFOContainer, 
Tomasz Bold's avatar
Tomasz Bold committed
58
  					      xAOD::PFOContainer& hadronicPFOContainer, 
59
					      const xAOD::CaloClusterContainer& pCaloClusterContainer ) const = 0;
60
  virtual StatusCode executeVertexVariables(xAOD::TauJet& pTau, xAOD::VertexContainer& vertexContainer ) const = 0;  
61
62
  virtual StatusCode executePi0ClusterScaler(xAOD::TauJet& pTau, xAOD::PFOContainer& neutralPFOContainer, xAOD::PFOContainer& chargedPFOContainer ) const = 0;  
  virtual StatusCode executePi0nPFO(xAOD::TauJet& pTau, xAOD::PFOContainer& neutralPFOContainer) const = 0;
63
  virtual StatusCode executePanTau(xAOD::TauJet& pTau, xAOD::ParticleContainer& particleContainer) =0;
64

65
66
67
68
69
#ifdef XAOD_ANALYSIS
  // non-const version is needed in THOR
  virtual StatusCode executeDev(xAOD::TauJet& pTau) = 0;
#else
  // CaloCellContainer not available in AnalysisBase
Bertrand Martin's avatar
Bertrand Martin committed
70
  virtual StatusCode executePi0CreateROI(xAOD::TauJet& pTau, CaloCellContainer& caloCellContainer, boost::dynamic_bitset<>& map ) const = 0;
71
72
#endif
  
73
74
75
  //-----------------------------------------------------------------
  //! Event finalizer - called at the end of each event
  //-----------------------------------------------------------------
76
  virtual StatusCode eventFinalize() = 0;
77
78
79
80
81
82

  //-----------------------------------------------------------------
  //! Finalizer
  //-----------------------------------------------------------------
  virtual StatusCode finalize() = 0;

83
84
  //make pure
  virtual StatusCode readConfig() = 0;
85

86
87
};

88
#endif // TAURECTOOLS_ITAUTOOLBASE_H