ATLAS Offline Software
Public Member Functions | Private Attributes | List of all members
ISF::CosmicEventFilterTool Class Reference

#include <CosmicEventFilterTool.h>

Inheritance diagram for ISF::CosmicEventFilterTool:
Collaboration diagram for ISF::CosmicEventFilterTool:

Public Member Functions

 CosmicEventFilterTool (const std::string &t, const std::string &n, const IInterface *p)
 Constructor with parameters. More...
 
 ~CosmicEventFilterTool ()
 Destructor. More...
 
virtual StatusCode initialize () override final
 Athena algtool Hooks. More...
 
virtual StatusCode finalize () override final
 Athena algtool Hook. More...
 
virtual bool eventPassesFilter () const override final
 Check that the current event passes this filter. More...
 

Private Attributes

std::atomic< unsigned int > m_ntot
 
std::atomic< unsigned int > m_npass
 
SG::ReadHandleKeyArray< TrackRecordCollectionm_VolumeNames
 
bool m_useANDFilter
 
int m_magicID
 
double m_ptMin
 
double m_ptMax
 

Detailed Description

the code used in this implementation is kindly stolen from: atlasoff:: Simulation/G4Extentions/G4CosmicFilter/

Author
John Chapman -at- cern.ch

Definition at line 32 of file CosmicEventFilterTool.h.

Constructor & Destructor Documentation

◆ CosmicEventFilterTool()

ISF::CosmicEventFilterTool::CosmicEventFilterTool ( const std::string &  t,
const std::string &  n,
const IInterface *  p 
)

Constructor with parameters.

Constructor.

Definition at line 21 of file CosmicEventFilterTool.cxx.

24  : base_class(t,n,p)
25  , m_ntot(0)
26  , m_npass(0)
27  , m_VolumeNames{""}
28  , m_useANDFilter(true)
29  , m_magicID(0)
30  , m_ptMin(-1)
31  , m_ptMax(-1)
32 {
33  declareProperty("UseAndFilter", m_useANDFilter, "Use an AND Filter over all the Volumes, if false use an OR filter");
34  declareProperty("VolumeNames", m_VolumeNames, "List of Volumes to use for filtering");
35  declareProperty("PDG_ID", m_magicID, "If this is non-zero then more detailed checks will be made, requiring this particle to be present.");
36  declareProperty("ptMin", m_ptMin, "Minimum pT for detailed cuts.");
37  declareProperty("ptMax", m_ptMax, "Minimum pT for detailed cuts.");
38 }

◆ ~CosmicEventFilterTool()

ISF::CosmicEventFilterTool::~CosmicEventFilterTool ( )

Destructor.

Definition at line 41 of file CosmicEventFilterTool.cxx.

41  {
42 }

Member Function Documentation

◆ eventPassesFilter()

bool ISF::CosmicEventFilterTool::eventPassesFilter ( ) const
finaloverridevirtual

Check that the current event passes this filter.

Definition at line 66 of file CosmicEventFilterTool.cxx.

67 {
68 
69  ++m_ntot;
70  if (m_VolumeNames.empty()) { ++m_npass; return true;}
71  bool evtPassesFilter(m_useANDFilter);
72  auto trackRecordCollectionHandles = m_VolumeNames.makeHandles();
73  for(auto& coll : trackRecordCollectionHandles) {
74  if (!coll.isValid())
75  {
76  ATH_MSG_DEBUG("Cannot retrieve TrackRecordCollection " << coll.key());
77  return false;
78  }
79  unsigned int counter(0);
80  if (m_magicID!=0 || m_ptMin>0 || m_ptMax>0)
81  {
82  const unsigned int ntracks(coll->size());
83  for (unsigned int track=0;track<ntracks;++track)
84  {
85  if (m_magicID!=0 && m_magicID != std::fabs(coll->operator[](track).GetPDGCode())) { continue; }
86  if (m_ptMin>0 && m_ptMin > coll->operator[](track).GetMomentum().perp() ) { continue; }
87  if (m_ptMax>0 && m_ptMax < coll->operator[](track).GetMomentum().perp() ) { continue; }
88  ++counter;
89  }// end of loop over tracks
90  }
91  else
92  {
93  counter = coll->size();
94  }
95 
96  if(m_useANDFilter)
97  { //AND Filter
98  if(0==counter)
99  { //One Failure is too many
100  return false;
101  }
102  }
103  else
104  { //OR Filter
105  if(0!=counter)
106  { //One Success is enough
107  ++m_npass;
108  return true;
109  }
110  }
111  }// end of loop over volumes
112 
113  if (evtPassesFilter)
114  {
115  ++m_npass;
116  }
117  return evtPassesFilter;
118 }

◆ finalize()

StatusCode ISF::CosmicEventFilterTool::finalize ( )
finaloverridevirtual

Athena algtool Hook.

Definition at line 56 of file CosmicEventFilterTool.cxx.

57 {
58  ATH_MSG_VERBOSE("finalize() ...");
59  ATH_MSG_INFO("Processed "<< m_ntot <<" events, "<< m_npass<<" events passed filter ");
60  ATH_MSG_VERBOSE("finalize() successful");
61  return StatusCode::SUCCESS;
62 }

◆ initialize()

StatusCode ISF::CosmicEventFilterTool::initialize ( )
finaloverridevirtual

Athena algtool Hooks.

Definition at line 46 of file CosmicEventFilterTool.cxx.

47 {
48  ATH_MSG_VERBOSE("initialize() ...");
49  ATH_CHECK(m_VolumeNames.initialize());
50  ATH_MSG_VERBOSE("initialize() successful");
51  return StatusCode::SUCCESS;
52 }

Member Data Documentation

◆ m_magicID

int ISF::CosmicEventFilterTool::m_magicID
private

Definition at line 53 of file CosmicEventFilterTool.h.

◆ m_npass

std::atomic<unsigned int> ISF::CosmicEventFilterTool::m_npass
mutableprivate

Definition at line 50 of file CosmicEventFilterTool.h.

◆ m_ntot

std::atomic<unsigned int> ISF::CosmicEventFilterTool::m_ntot
mutableprivate

Definition at line 49 of file CosmicEventFilterTool.h.

◆ m_ptMax

double ISF::CosmicEventFilterTool::m_ptMax
private

Definition at line 55 of file CosmicEventFilterTool.h.

◆ m_ptMin

double ISF::CosmicEventFilterTool::m_ptMin
private

Definition at line 54 of file CosmicEventFilterTool.h.

◆ m_useANDFilter

bool ISF::CosmicEventFilterTool::m_useANDFilter
private

Definition at line 52 of file CosmicEventFilterTool.h.

◆ m_VolumeNames

SG::ReadHandleKeyArray<TrackRecordCollection> ISF::CosmicEventFilterTool::m_VolumeNames
private

Definition at line 51 of file CosmicEventFilterTool.h.


The documentation for this class was generated from the following files:
ISF::CosmicEventFilterTool::m_ptMax
double m_ptMax
Definition: CosmicEventFilterTool.h:55
ISF::CosmicEventFilterTool::m_ptMin
double m_ptMin
Definition: CosmicEventFilterTool.h:54
python.PerfMonSerializer.p
def p
Definition: PerfMonSerializer.py:743
ATH_MSG_INFO
#define ATH_MSG_INFO(x)
Definition: AthMsgStreamMacros.h:31
perp
Scalar perp() const
perp method - perpenticular length
Definition: AmgMatrixBasePlugin.h:35
read_hist_ntuple.t
t
Definition: read_hist_ntuple.py:5
ATH_MSG_VERBOSE
#define ATH_MSG_VERBOSE(x)
Definition: AthMsgStreamMacros.h:28
beamspotman.n
n
Definition: beamspotman.py:731
ATH_MSG_DEBUG
#define ATH_MSG_DEBUG(x)
Definition: AthMsgStreamMacros.h:29
ATH_CHECK
#define ATH_CHECK
Definition: AthCheckMacros.h:40
ISF::CosmicEventFilterTool::m_useANDFilter
bool m_useANDFilter
Definition: CosmicEventFilterTool.h:52
ISF::CosmicEventFilterTool::m_VolumeNames
SG::ReadHandleKeyArray< TrackRecordCollection > m_VolumeNames
Definition: CosmicEventFilterTool.h:51
ISF::CosmicEventFilterTool::m_magicID
int m_magicID
Definition: CosmicEventFilterTool.h:53
declareProperty
#define declareProperty(n, p, h)
Definition: BaseFakeBkgTool.cxx:15
xAOD::track
@ track
Definition: TrackingPrimitives.h:512
ISF::CosmicEventFilterTool::m_ntot
std::atomic< unsigned int > m_ntot
Definition: CosmicEventFilterTool.h:49
test_pyathena.counter
counter
Definition: test_pyathena.py:15
ISF::CosmicEventFilterTool::m_npass
std::atomic< unsigned int > m_npass
Definition: CosmicEventFilterTool.h:50