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

#include <TagAndProbeTrackParticleThinning.h>

Inheritance diagram for DerivationFramework::TagAndProbeTrackParticleThinning:
Collaboration diagram for DerivationFramework::TagAndProbeTrackParticleThinning:

Public Member Functions

 TagAndProbeTrackParticleThinning (const std::string &t, const std::string &n, const IInterface *p)
 
virtual ~TagAndProbeTrackParticleThinning ()=default
 
virtual StatusCode initialize () override
 
virtual StatusCode finalize () override
 
virtual StatusCode doThinning () const override
 

Private Attributes

StringProperty m_selectionString
 
std::atomic< unsigned int > m_ntot {0}
 
std::atomic< unsigned int > m_npass {0}
 
StringProperty m_streamName
 
SG::ThinningHandleKey< xAOD::TrackParticleContainerm_inDetParticlesKey
 
SG::ReadHandleKey< xAOD::VertexContainerm_vertexContainerKey
 
SG::ReadHandleKey< xAOD::MuonContainerm_muonContainerKey
 
DoubleProperty m_d0SignifCut
 
DoubleProperty m_z0Cut
 
DoubleProperty m_massCut
 
std::mutex m_mutex
 

Detailed Description

Definition at line 32 of file TagAndProbeTrackParticleThinning.h.

Constructor & Destructor Documentation

◆ TagAndProbeTrackParticleThinning()

DerivationFramework::TagAndProbeTrackParticleThinning::TagAndProbeTrackParticleThinning ( const std::string &  t,
const std::string &  n,
const IInterface *  p 
)

Definition at line 14 of file TagAndProbeTrackParticleThinning.cxx.

16  :
17  base_class(t, n, p)
18 {}

◆ ~TagAndProbeTrackParticleThinning()

virtual DerivationFramework::TagAndProbeTrackParticleThinning::~TagAndProbeTrackParticleThinning ( )
virtualdefault

Member Function Documentation

◆ doThinning()

StatusCode DerivationFramework::TagAndProbeTrackParticleThinning::doThinning ( ) const
overridevirtual

Definition at line 44 of file TagAndProbeTrackParticleThinning.cxx.

45 {
46 
47  const EventContext& ctx = Gaudi::Hive::currentContext();
48 
49  // Retrieve main TrackParticle collection
51  (m_inDetParticlesKey, ctx);
52 
53  // Check the event contains tracks
54  size_t nTracks = importedTrackParticles->size();
55  if (nTracks==0) return StatusCode::SUCCESS;
56 
57  // Set up a mask with the same entries as the full TrackParticle collection
58  std::vector<bool> mask;
59  mask.assign(nTracks,false); // default: don't keep any tracks
60 
61  std::lock_guard<std::mutex> lock(m_mutex);
62 
63  m_ntot += nTracks;
64 
65  // Execute the text parser and update the mask
66  std::vector<int> entries;
67  if (m_parser) {
68  entries = m_parser->evaluateAsVector();
69  unsigned int nEntries = entries.size();
70  // check the sizes are compatible
71  if (nTracks != nEntries ) {
72  ATH_MSG_ERROR("Sizes incompatible! Are you sure your selection string used ID TrackParticles?");
73  return StatusCode::FAILURE;
74  } else {
75  // set mask
76  for (unsigned int i=0; i<nTracks; ++i) if (entries[i]==1) mask[i]=true;
77  }
78  }
79 
80  // Retrieve vertex collection
82  ATH_CHECK( primaryVertices.isValid() );
83 
84  const xAOD::Vertex* priVtx = nullptr;
85 
86  for( const auto* vtx : *primaryVertices ) {
87  if( vtx->vertexType() == xAOD::VxType::PriVtx ) {
88  priVtx = vtx;
89  break;
90  }
91  }
92 
93  if( !priVtx ) return StatusCode::SUCCESS;
94 
95  // Retrieve muon collection
97  ATH_CHECK( muons.isValid() );
98 
99  // Count the mask
100  for (size_t i=0; i<nTracks; ++i) {
101 
102  const auto* trk = importedTrackParticles->at(i);
103 
104  // Keep only d0 significancd is small enough
105  if( std::abs( xAOD::TrackingHelpers::d0significance( trk ) ) > m_d0SignifCut ) {
106  continue;
107  }
108 
109  // Keep only delta(z0) is less than 10 mm
110  if( std::abs( trk->z0() - priVtx->z() + trk->vz() ) > m_z0Cut ) {
111  continue;
112  }
113 
114  // probe track keeping
115  for (const auto muon : *muons) {
116  const auto* muon_trk = muon->trackParticle(xAOD::Muon::InnerDetectorTrackParticle);
117 
118  if( muon_trk ) {
119  if( muon_trk == trk) continue;
120  }
121 
122  if( (muon->p4() + trk->p4()).M() > m_massCut ) {
123  mask.at(i) = (mask.at(i) && true);
124  ++m_npass;
125  }
126  }
127 
128  }
129 
130  assert( importedTrackParticles->size() == mask.size() );
131 
132  // Execute the thinning service based on the mask.
133  importedTrackParticles.keep (mask);
134 
135  return StatusCode::SUCCESS;
136 }

◆ finalize()

StatusCode DerivationFramework::TagAndProbeTrackParticleThinning::finalize ( )
overridevirtual

Definition at line 36 of file TagAndProbeTrackParticleThinning.cxx.

37 {
38  ATH_MSG_INFO("Processed "<< m_ntot <<" tracks, "<< m_npass<< " were retained ");
39  ATH_CHECK( finalizeParser() );
40  return StatusCode::SUCCESS;
41 }

◆ initialize()

StatusCode DerivationFramework::TagAndProbeTrackParticleThinning::initialize ( )
overridevirtual

Definition at line 21 of file TagAndProbeTrackParticleThinning.cxx.

22 {
23  //check xAOD::InDetTrackParticle collection
25  ATH_MSG_DEBUG("Using " << m_inDetParticlesKey << "as the source collection for inner detector track particles");
26  ATH_CHECK( m_vertexContainerKey.initialize() );
28 
29  if (!m_selectionString.empty()) {
30  ATH_CHECK(initializeParser(m_selectionString));
31  }
32 
33  return StatusCode::SUCCESS;
34 }

Member Data Documentation

◆ m_d0SignifCut

DoubleProperty DerivationFramework::TagAndProbeTrackParticleThinning::m_d0SignifCut
private
Initial value:
{
this, "d0SignifCut", 5.}

Definition at line 59 of file TagAndProbeTrackParticleThinning.h.

◆ m_inDetParticlesKey

SG::ThinningHandleKey<xAOD::TrackParticleContainer> DerivationFramework::TagAndProbeTrackParticleThinning::m_inDetParticlesKey
private
Initial value:
{
this, "InDetTrackParticlesKey", "InDetTrackParticles", ""}

Definition at line 51 of file TagAndProbeTrackParticleThinning.h.

◆ m_massCut

DoubleProperty DerivationFramework::TagAndProbeTrackParticleThinning::m_massCut
private
Initial value:
{
this, "MassCut", 30.e3}

Definition at line 63 of file TagAndProbeTrackParticleThinning.h.

◆ m_muonContainerKey

SG::ReadHandleKey< xAOD::MuonContainer > DerivationFramework::TagAndProbeTrackParticleThinning::m_muonContainerKey
private
Initial value:
{
this, "MuonContainerKey", "Muons"}

Definition at line 55 of file TagAndProbeTrackParticleThinning.h.

◆ m_mutex

std::mutex DerivationFramework::TagAndProbeTrackParticleThinning::m_mutex
mutableprivate

Definition at line 67 of file TagAndProbeTrackParticleThinning.h.

◆ m_npass

std::atomic<unsigned int> DerivationFramework::TagAndProbeTrackParticleThinning::m_npass {0}
private

Definition at line 47 of file TagAndProbeTrackParticleThinning.h.

◆ m_ntot

std::atomic<unsigned int> DerivationFramework::TagAndProbeTrackParticleThinning::m_ntot {0}
mutableprivate

Definition at line 47 of file TagAndProbeTrackParticleThinning.h.

◆ m_selectionString

StringProperty DerivationFramework::TagAndProbeTrackParticleThinning::m_selectionString
private
Initial value:
{
this, "SelectionString", "", "track selections"}

Definition at line 42 of file TagAndProbeTrackParticleThinning.h.

◆ m_streamName

StringProperty DerivationFramework::TagAndProbeTrackParticleThinning::m_streamName
private
Initial value:
{
this, "StreamName", "", "Name of the stream being thinned" }

Definition at line 49 of file TagAndProbeTrackParticleThinning.h.

◆ m_vertexContainerKey

SG::ReadHandleKey< xAOD::VertexContainer > DerivationFramework::TagAndProbeTrackParticleThinning::m_vertexContainerKey
private
Initial value:
{
this, "VertexContainerKey", "PrimaryVertices"}

Definition at line 53 of file TagAndProbeTrackParticleThinning.h.

◆ m_z0Cut

DoubleProperty DerivationFramework::TagAndProbeTrackParticleThinning::m_z0Cut
private
Initial value:
{
this, "z0Cut", 10.}

Definition at line 61 of file TagAndProbeTrackParticleThinning.h.


The documentation for this class was generated from the following files:
xAOD::muon
@ muon
Definition: TrackingPrimitives.h:196
ATH_MSG_INFO
#define ATH_MSG_INFO(x)
Definition: AthMsgStreamMacros.h:31
SG::ReadHandle
Definition: StoreGate/StoreGate/ReadHandle.h:67
xAOD::TrackingHelpers::d0significance
double d0significance(const xAOD::TrackParticle *tp, double d0_uncert_beam_spot_2)
Definition: TrackParticlexAODHelpers.cxx:42
read_hist_ntuple.t
t
Definition: read_hist_ntuple.py:5
python.utils.AtlRunQueryLookup.mask
string mask
Definition: AtlRunQueryLookup.py:460
SG::ThinningHandle
Handle for requesting thinning for a data object.
Definition: ThinningHandle.h:84
DerivationFramework::TagAndProbeTrackParticleThinning::m_npass
std::atomic< unsigned int > m_npass
Definition: TagAndProbeTrackParticleThinning.h:47
python.utils.AtlRunQueryDQUtils.p
p
Definition: AtlRunQueryDQUtils.py:210
ATH_MSG_ERROR
#define ATH_MSG_ERROR(x)
Definition: AthMsgStreamMacros.h:33
DerivationFramework::TagAndProbeTrackParticleThinning::m_inDetParticlesKey
SG::ThinningHandleKey< xAOD::TrackParticleContainer > m_inDetParticlesKey
Definition: TagAndProbeTrackParticleThinning.h:51
DerivationFramework::TagAndProbeTrackParticleThinning::m_streamName
StringProperty m_streamName
Definition: TagAndProbeTrackParticleThinning.h:49
lumiFormat.i
int i
Definition: lumiFormat.py:85
beamspotman.n
n
Definition: beamspotman.py:731
ATH_MSG_DEBUG
#define ATH_MSG_DEBUG(x)
Definition: AthMsgStreamMacros.h:29
xAOD::VxType::PriVtx
@ PriVtx
Primary vertex.
Definition: TrackingPrimitives.h:572
DerivationFramework::TagAndProbeTrackParticleThinning::m_d0SignifCut
DoubleProperty m_d0SignifCut
Definition: TagAndProbeTrackParticleThinning.h:59
ATH_CHECK
#define ATH_CHECK
Definition: AthCheckMacros.h:40
DerivationFramework::TagAndProbeTrackParticleThinning::m_muonContainerKey
SG::ReadHandleKey< xAOD::MuonContainer > m_muonContainerKey
Definition: TagAndProbeTrackParticleThinning.h:55
xAOD::Vertex_v1::z
float z() const
Returns the z position.
SG::VarHandleKey::initialize
StatusCode initialize(bool used=true)
If this object is used as a property, then this should be called during the initialize phase.
Definition: AthToolSupport/AsgDataHandles/Root/VarHandleKey.cxx:103
DerivationFramework::TagAndProbeTrackParticleThinning::m_selectionString
StringProperty m_selectionString
Definition: TagAndProbeTrackParticleThinning.h:42
DerivationFramework::TagAndProbeTrackParticleThinning::m_massCut
DoubleProperty m_massCut
Definition: TagAndProbeTrackParticleThinning.h:63
xAOD::Vertex_v1
Class describing a Vertex.
Definition: Vertex_v1.h:42
DerivationFramework::TagAndProbeTrackParticleThinning::m_mutex
std::mutex m_mutex
Definition: TagAndProbeTrackParticleThinning.h:67
entries
double entries
Definition: listroot.cxx:49
DerivationFramework::TagAndProbeTrackParticleThinning::m_z0Cut
DoubleProperty m_z0Cut
Definition: TagAndProbeTrackParticleThinning.h:61
dqBeamSpot.nEntries
int nEntries
Definition: dqBeamSpot.py:73
DerivationFramework::TagAndProbeTrackParticleThinning::m_vertexContainerKey
SG::ReadHandleKey< xAOD::VertexContainer > m_vertexContainerKey
Definition: TagAndProbeTrackParticleThinning.h:53
DerivationFramework::TagAndProbeTrackParticleThinning::m_ntot
std::atomic< unsigned int > m_ntot
Definition: TagAndProbeTrackParticleThinning.h:47