ATLAS Offline Software
Generators
GeneratorFilters
src
ChargedTracksFilter.cxx
Go to the documentation of this file.
1
/*
2
Copyright (C) 2002-2021 CERN for the benefit of the ATLAS collaboration
3
*/
4
5
#include "
GeneratorFilters/ChargedTracksFilter.h
"
6
#include "
TruthUtils/HepMCHelpers.h
"
7
8
9
ChargedTracksFilter::ChargedTracksFilter
(
const
std::string&
name
, ISvcLocator* pSvcLocator)
10
:
GenFilter
(
name
, pSvcLocator)
11
{
13
declareProperty
(
"Ptcut"
,
m_Ptmin
= 50.0);
14
declareProperty
(
"Etacut"
,
m_EtaRange
= 2.5);
15
declareProperty
(
"NTracks"
,
m_NTracks
= 40);
16
declareProperty
(
"NTracksMax"
,
m_NTracksMax
= -1);
17
18
}
19
20
21
StatusCode
ChargedTracksFilter::filterEvent
() {
22
int
nChargedTracks
= 0;
23
24
// Loop over all events in McEventCollection
25
for
(
McEventCollection::const_iterator
itr =
events
()->
begin
(); itr !=
events
()->end(); ++itr) {
26
const
HepMC::GenEvent* genEvt = *itr;
27
28
for
(
const
auto
&
part
: *genEvt){
29
// We only care about stable particles
30
if
(!
MC::isGenStable
(
part
))
continue
;
31
32
// Particle's charge
33
int
pID =
part
->pdg_id();
34
double
pCharge =
MC::charge
(pID);
35
36
// Count tracks in specified acceptance
37
const
double
pT
=
part
->momentum().perp();
38
const
double
eta
=
part
->momentum().pseudoRapidity();
39
if
(
pT
>=
m_Ptmin
&& std::abs(
eta
) <=
m_EtaRange
&& pCharge != 0) {
40
ATH_MSG_DEBUG
(
"Found particle, "
<<
41
" pT = "
<<
pT
<<
42
" eta = "
<<
eta
<<
43
" pdg id = "
<< pID <<
44
" charge = "
<< pCharge <<
" in acceptance"
);
45
nChargedTracks
+= 1;
46
}
47
}
48
}
49
50
// Summarise event
51
ATH_MSG_DEBUG
(
"# of tracks "
<<
nChargedTracks
<<
52
" with pT >= "
<<
m_Ptmin
<<
53
" |eta| < "
<<
m_EtaRange
<<
54
" minNTracks = "
<<
m_NTracks
<<
55
" maxNTracks = "
<<
m_NTracksMax
);
56
57
// Record passed status
58
setFilterPassed( ((
m_NTracksMax
== -1) || (
nChargedTracks
<=
m_NTracksMax
)) &&
59
((
m_NTracks
== -1) || (
nChargedTracks
>=
m_NTracks
)) );
60
61
return
StatusCode::SUCCESS;
62
}
LArG4FSStartPointFilter.part
part
Definition:
LArG4FSStartPointFilter.py:21
CalculateHighPtTerm.pT
pT
Definition:
ICHEP2016/CalculateHighPtTerm.py:57
DataModel_detail::const_iterator
Const iterator class for DataVector/DataList.
Definition:
DVLIterator.h:82
eta
Scalar eta() const
pseudorapidity method
Definition:
AmgMatrixBasePlugin.h:79
AthCommonDataStore< AthCommonMsg< Algorithm > >::declareProperty
Gaudi::Details::PropertyBase & declareProperty(Gaudi::Property< T > &t)
Definition:
AthCommonDataStore.h:145
PlotCalibFromCool.begin
begin
Definition:
PlotCalibFromCool.py:94
ChargedTracksFilter.h
ChargedTracksFilter::ChargedTracksFilter
ChargedTracksFilter(const std::string &name, ISvcLocator *pSvcLocator)
Definition:
ChargedTracksFilter.cxx:9
python.DataFormatRates.events
events
Definition:
DataFormatRates.py:105
MC::isGenStable
bool isGenStable(const T &p)
Determine if the particle is stable at the generator (not det-sim) level,.
Definition:
HepMCHelpers.h:36
GenFilter
Base class for event generator filtering modules.
Definition:
GenFilter.h:30
ChargedTracksFilter::filterEvent
StatusCode filterEvent()
Definition:
ChargedTracksFilter.cxx:21
EL::StatusCode
::StatusCode StatusCode
StatusCode definition for legacy code.
Definition:
PhysicsAnalysis/D3PDTools/EventLoop/EventLoop/StatusCode.h:22
ATH_MSG_DEBUG
#define ATH_MSG_DEBUG(x)
Definition:
AthMsgStreamMacros.h:29
xAOD::TauJetParameters::nChargedTracks
@ nChargedTracks
Definition:
TauDefs.h:322
name
std::string name
Definition:
Control/AthContainers/Root/debug.cxx:195
charge
double charge(const T &p)
Definition:
AtlasPID.h:494
ChargedTracksFilter::m_NTracksMax
int m_NTracksMax
Definition:
ChargedTracksFilter.h:29
ChargedTracksFilter::m_Ptmin
double m_Ptmin
Definition:
ChargedTracksFilter.h:20
ChargedTracksFilter::m_EtaRange
double m_EtaRange
Definition:
ChargedTracksFilter.h:23
ChargedTracksFilter::m_NTracks
int m_NTracks
Definition:
ChargedTracksFilter.h:26
HepMCHelpers.h
Generated on Fri Jul 5 2024 21:12:21 for ATLAS Offline Software by
1.8.18