ATLAS Offline Software
Public Types | Public Member Functions | Static Public Member Functions | Protected Member Functions | Private Types | Private Member Functions | Private Attributes | List of all members
Muon::MuPatCandidateTool Class Reference

class to manipulate MuPatCandidateBase objects More...

#include <MuPatCandidateTool.h>

Inheritance diagram for Muon::MuPatCandidateTool:
Collaboration diagram for Muon::MuPatCandidateTool:

Public Types

using MeasVec = std::vector< const Trk::MeasurementBase * >
 
typedef MeasVec::iterator MeasIt
 
typedef MeasVec::const_iterator MeasCit
 

Public Member Functions

 MuPatCandidateTool (const std::string &, const std::string &, const IInterface *)
 default AlgTool constructor More...
 
virtual ~MuPatCandidateTool ()=default
 destructor More...
 
virtual StatusCode initialize () override
 initialize method, method taken from bass-class AlgTool More...
 
bool extendWithSegment (MuPatTrack &can, MuPatSegment &segInfo, std::unique_ptr< Trk::Track > &track) const
 extend a track candidate with a segment More...
 
std::unique_ptr< MuPatTrackcreateCandidate (MuPatSegment &segInfo, std::unique_ptr< Trk::Track > &track) const
 create a track candidate from one segment More...
 
std::unique_ptr< MuPatTrackcreateCandidate (MuPatSegment &segInfo1, MuPatSegment &segInfo2, std::unique_ptr< Trk::Track > &track) const
 create a track candidate from two segments More...
 
std::unique_ptr< MuPatTrackcreateCandidate (std::unique_ptr< Trk::Track > &track) const
 create a track candidate from a track More...
 
bool updateTrack (MuPatTrack &candidate, std::unique_ptr< Trk::Track > &track) const
 set the new track in the candidate, and update candidate contents. More...
 
bool recalculateCandidateSegmentContent (MuPatTrack &candidate) const
 recalculate the chamber indices on the candidate and reset them. More...
 
std::unique_ptr< MuPatSegmentcreateSegInfo (const EventContext &ctx, const MuonSegment &segment) const
 create a MuPatSegment object from a segment More...
 
std::set< const MuonGM::MuonReadoutElement * > readoutElements (const MuPatCandidateBase &entry) const
 get list of the readout elements of the hits on the entry More...
 
std::string print (const MuPatSegment &segment, int level=0) const
 print the measurements on the track to string More...
 
std::string print (const std::vector< MuPatSegment * > &segments, int level=0) const
 
std::string print (const MuPatCandidateBase &candidate, int level=0) const
 
std::string print (const MuPatTrack &track, int level=0) const
 
std::string print (const std::vector< std::unique_ptr< MuPatTrack > > &tracks, int level=0) const
 
ServiceHandle< StoreGateSvc > & evtStore ()
 The standard StoreGateSvc (event store) Returns (kind of) a pointer to the StoreGateSvc. More...
 
const ServiceHandle< StoreGateSvc > & evtStore () const
 The standard StoreGateSvc (event store) Returns (kind of) a pointer to the StoreGateSvc. More...
 
const ServiceHandle< StoreGateSvc > & detStore () const
 The standard StoreGateSvc/DetectorStore Returns (kind of) a pointer to the StoreGateSvc. More...
 
virtual StatusCode sysInitialize () override
 Perform system initialization for an algorithm. More...
 
virtual StatusCode sysStart () override
 Handle START transition. More...
 
virtual std::vector< Gaudi::DataHandle * > inputHandles () const override
 Return this algorithm's input handles. More...
 
virtual std::vector< Gaudi::DataHandle * > outputHandles () const override
 Return this algorithm's output handles. More...
 
Gaudi::Details::PropertyBase & declareProperty (Gaudi::Property< T > &t)
 
Gaudi::Details::PropertyBase * declareProperty (const std::string &name, SG::VarHandleKey &hndl, const std::string &doc, const SG::VarHandleKeyType &)
 Declare a new Gaudi property. More...
 
Gaudi::Details::PropertyBase * declareProperty (const std::string &name, SG::VarHandleBase &hndl, const std::string &doc, const SG::VarHandleType &)
 Declare a new Gaudi property. More...
 
Gaudi::Details::PropertyBase * declareProperty (const std::string &name, SG::VarHandleKeyArray &hndArr, const std::string &doc, const SG::VarHandleKeyArrayType &)
 
Gaudi::Details::PropertyBase * declareProperty (const std::string &name, T &property, const std::string &doc, const SG::NotHandleType &)
 Declare a new Gaudi property. More...
 
Gaudi::Details::PropertyBase * declareProperty (const std::string &name, T &property, const std::string &doc="none")
 Declare a new Gaudi property. More...
 
void updateVHKA (Gaudi::Details::PropertyBase &)
 
MsgStream & msg () const
 
MsgStream & msg (const MSG::Level lvl) const
 
bool msgLvl (const MSG::Level lvl) const
 

Static Public Member Functions

static const InterfaceID & interfaceID ()
 access to tool interface More...
 
static std::unique_ptr< MuPatTrackcopyCandidate (MuPatTrack *canIn)
 copy a candidate without copying the track (lazy pointer copy) More...
 

Protected Member Functions

void renounceArray (SG::VarHandleKeyArray &handlesArray)
 remove all handles from I/O resolution More...
 
std::enable_if_t< std::is_void_v< std::result_of_t< decltype(&T::renounce)(T)> > &&!std::is_base_of_v< SG::VarHandleKeyArray, T > &&std::is_base_of_v< Gaudi::DataHandle, T >, void > renounce (T &h)
 
void extraDeps_update_handler (Gaudi::Details::PropertyBase &ExtraDeps)
 Add StoreName to extra input/output deps as needed. More...
 

Private Types

typedef ServiceHandle< StoreGateSvcStoreGateSvc_t
 

Private Member Functions

void updateHits (MuPatCandidateBase &entry, const MeasVec &measurements, bool recreateMDT=false, bool recreateCSC=false, bool createComp=false) const
 update hits for a MuPatCandidateBase More...
 
void addCluster (const Trk::MeasurementBase &meas, std::vector< const MuonClusterOnTrack * > &rots) const
 extract MuonClusterOnTrack('s) from measurement More...
 
void createAndAddCompetingROTs (const std::vector< const MuonClusterOnTrack * > &rots, MeasVec &hits, MeasVec &allHits, MuPatCandidateBase &entry) const
 create CompetingMuonClustersOnTracks from ROTs and add them to the MeasVec. More...
 
Gaudi::Details::PropertyBase & declareGaudiProperty (Gaudi::Property< T > &hndl, const SG::VarHandleKeyType &)
 specialization for handling Gaudi::Property<SG::VarHandleKey> More...
 
Gaudi::Details::PropertyBase & declareGaudiProperty (Gaudi::Property< T > &hndl, const SG::VarHandleKeyArrayType &)
 specialization for handling Gaudi::Property<SG::VarHandleKeyArray> More...
 
Gaudi::Details::PropertyBase & declareGaudiProperty (Gaudi::Property< T > &hndl, const SG::VarHandleType &)
 specialization for handling Gaudi::Property<SG::VarHandleBase> More...
 
Gaudi::Details::PropertyBase & declareGaudiProperty (Gaudi::Property< T > &t, const SG::NotHandleType &)
 specialization for handling everything that's not a Gaudi::Property<SG::VarHandleKey> or a <SG::VarHandleKeyArray> More...
 

Private Attributes

ToolHandle< IMdtDriftCircleOnTrackCreatorm_mdtRotCreator
 
ToolHandle< IMuonClusterOnTrackCreatorm_cscRotCreator
 
ToolHandle< IMuonCompetingClustersOnTrackCreatorm_compClusterCreator
 
ServiceHandle< Muon::IMuonIdHelperSvcm_idHelperSvc {this, "MuonIdHelperSvc", "Muon::MuonIdHelperSvc/MuonIdHelperSvc"}
 
ServiceHandle< IMuonEDMHelperSvcm_edmHelperSvc
 
PublicToolHandle< MuonEDMPrinterToolm_printer {this, "MuonPrinterTool", "Muon::MuonEDMPrinterTool/MuonEDMPrinterTool"}
 
ToolHandle< MuPatHitToolm_hitHandler {this, "HitTool", "Muon::MuPatHitTool/MuPatHitTool", "Tool to manipulate hit lists"}
 
ToolHandle< Muon::IMuonSegmentSelectionToolm_segmentSelector
 
Gaudi::Property< bool > m_createCompetingROTsPhi {this, "CreateCompetingROTsPhi", false}
 
Gaudi::Property< bool > m_createCompetingROTsEta {this, "CreateCompetingROTsEta", true}
 
Gaudi::Property< bool > m_doMdtRecreation {this, "DoMdtRecreation", false}
 
Gaudi::Property< bool > m_doCscRecreation {this, "DoCscRecreation", true}
 
StoreGateSvc_t m_evtStore
 Pointer to StoreGate (event store by default) More...
 
StoreGateSvc_t m_detStore
 Pointer to StoreGate (detector store by default) More...
 
std::vector< SG::VarHandleKeyArray * > m_vhka
 
bool m_varHandleArraysDeclared
 

Detailed Description

class to manipulate MuPatCandidateBase objects

Definition at line 49 of file MuPatCandidateTool.h.

Member Typedef Documentation

◆ MeasCit

typedef MeasVec::const_iterator Muon::MuPatCandidateTool::MeasCit

Definition at line 53 of file MuPatCandidateTool.h.

◆ MeasIt

typedef MeasVec::iterator Muon::MuPatCandidateTool::MeasIt

Definition at line 52 of file MuPatCandidateTool.h.

◆ MeasVec

Definition at line 51 of file MuPatCandidateTool.h.

◆ StoreGateSvc_t

typedef ServiceHandle<StoreGateSvc> AthCommonDataStore< AthCommonMsg< AlgTool > >::StoreGateSvc_t
privateinherited

Definition at line 388 of file AthCommonDataStore.h.

Constructor & Destructor Documentation

◆ MuPatCandidateTool()

Muon::MuPatCandidateTool::MuPatCandidateTool ( const std::string &  t,
const std::string &  n,
const IInterface *  p 
)

default AlgTool constructor

Definition at line 34 of file MuPatCandidateTool.cxx.

34  : AthAlgTool(t, n, p) {
35  declareInterface<MuPatCandidateTool>(this);
36  }

◆ ~MuPatCandidateTool()

virtual Muon::MuPatCandidateTool::~MuPatCandidateTool ( )
virtualdefault

destructor

Member Function Documentation

◆ addCluster()

void Muon::MuPatCandidateTool::addCluster ( const Trk::MeasurementBase meas,
std::vector< const MuonClusterOnTrack * > &  rots 
) const
private

extract MuonClusterOnTrack('s) from measurement

Definition at line 292 of file MuPatCandidateTool.cxx.

292  {
293  const MuonClusterOnTrack* clus = dynamic_cast<const MuonClusterOnTrack*>(&meas);
294  if (clus)
295  rots.push_back(clus);
296  else {
297  const CompetingMuonClustersOnTrack* compclus = dynamic_cast<const CompetingMuonClustersOnTrack*>(&meas);
298  if (compclus) {
299  rots.insert(rots.end(), compclus->containedROTs().begin(), compclus->containedROTs().end());
300  } else {
301  Identifier id = m_edmHelperSvc->getIdentifier(meas);
302  ATH_MSG_WARNING(" Trigger Measurement is not a MuonClusterOnTrack or CompetingMuonClustersOnTrack!! "
303  << m_idHelperSvc->toString(id));
304  }
305  }
306  }

◆ copyCandidate()

std::unique_ptr< MuPatTrack > Muon::MuPatCandidateTool::copyCandidate ( MuPatTrack canIn)
static

copy a candidate without copying the track (lazy pointer copy)

Parameters
[in]canthe MuPatTrack to be copied
[out]thenew candidate, ownership is passed to caller. The new candidate will not own the track (lazy pointer copy)

Definition at line 100 of file MuPatCandidateTool.cxx.

100  {
101  // copy and update hits
102  std::unique_ptr<MuPatTrack> can = std::make_unique<MuPatTrack>(*canIn);
103  return can;
104  }

◆ createAndAddCompetingROTs()

void Muon::MuPatCandidateTool::createAndAddCompetingROTs ( const std::vector< const MuonClusterOnTrack * > &  rots,
MuPatCandidateTool::MeasVec hits,
MuPatCandidateTool::MeasVec allHits,
MuPatCandidateBase entry 
) const
private

create CompetingMuonClustersOnTracks from ROTs and add them to the MeasVec.

NEVER pass mixed eta/phi hits!!

Definition at line 308 of file MuPatCandidateTool.cxx.

310  {
311  typedef std::map<Identifier, std::vector<const MuonClusterOnTrack*> > IdClusMap;
312  typedef IdClusMap::iterator IdClusIt;
313  IdClusMap idClusters;
314 
315  // loop over hits and sort by detector element
316  for (const MuonClusterOnTrack* clus : rots) {
317  Identifier id = clus->identify();
318  Identifier detId = m_idHelperSvc->detElId(id);
319  idClusters[detId].push_back(clus);
320  }
321 
322  ATH_MSG_DEBUG(" creating CompetingMuonClustersOnTrack for " << idClusters.size() << " chambers ");
323 
324  IdClusIt chit = idClusters.begin();
325  IdClusIt chit_end = idClusters.end();
326  for (; chit != chit_end; ++chit) {
327  if (msgLvl(MSG::VERBOSE)) {
328  msg(MSG::VERBOSE )<<__FILE__<<":"<<__LINE__ << " in " << m_idHelperSvc->toStringDetEl(chit->first) << " clusters: " << chit->second.size()
329  << std::endl;
330  for (const MuonClusterOnTrack* cl_it : chit->second) {
331  msg(MSG::VERBOSE) << " " << m_idHelperSvc->toString(cl_it->identify());
332 
333  // hack to get correct print-out
334  if (cl_it == chit->second.back())
335  msg(MSG::VERBOSE) << endmsg;
336  else
337  msg(MSG::VERBOSE) << std::endl;
338  }
339  }
340 
341  if (chit->second.empty()) {
342  ATH_MSG_WARNING(" empty list, could not create CompetingMuonClustersOnTrack in chamber "
343  << m_idHelperSvc->toString(chit->first));
344  continue;
345  }
346 
347  // only create competing ROT if there is more than one PRD
348  if (chit->second.size() == 1) {
349  hits.push_back(chit->second.front());
350  allHits.push_back(chit->second.front());
351  continue;
352  }
353 
354  // create list of PRDs
355  std::list<const Trk::PrepRawData*> prds;
356  std::vector<const MuonClusterOnTrack*>::iterator cl_it = chit->second.begin();
357  std::vector<const MuonClusterOnTrack*>::iterator cl_it_end = chit->second.end();
358  for (; cl_it != cl_it_end; ++cl_it) {
359  const Trk::PrepRawData* prd = (*cl_it)->prepRawData();
360  if (prd) {
361  prds.push_back(prd);
362  } else {
363  ATH_MSG_WARNING("MuonClusterOnTrack has no PRD.");
364  }
365  }
366 
367  std::unique_ptr<const CompetingMuonClustersOnTrack> comprot = m_compClusterCreator->createBroadCluster(prds, 0);
368  if (!comprot) {
369  ATH_MSG_WARNING(" could not create CompetingMuonClustersOnTrack in chamber " << m_idHelperSvc->toString(chit->first));
370  continue;
371  }
372  hits.push_back(comprot.get());
373  allHits.push_back(comprot.get());
374 
375  // add to garbage collection
376  trash_bin.addToTrash(std::move(comprot));
377  }
378  }

◆ createCandidate() [1/3]

std::unique_ptr< MuPatTrack > Muon::MuPatCandidateTool::createCandidate ( MuPatSegment segInfo,
std::unique_ptr< Trk::Track > &  track 
) const

create a track candidate from one segment

Parameters
[in]seg1the first MuPatSegment to be added, ownership is NOT passed!
[in]seg2the second MuPatSegment to be added, ownership is NOT passed!
[in]trackthe new track, ownership is passed to the candidate
[out]thenew candidate, ownership is passed to caller

Definition at line 106 of file MuPatCandidateTool.cxx.

106  {
107  // create the new candidate
108  std::unique_ptr<MuPatTrack> candidate = std::make_unique< MuPatTrack>(&segInfo, track);
110  return candidate;
111  }

◆ createCandidate() [2/3]

std::unique_ptr< MuPatTrack > Muon::MuPatCandidateTool::createCandidate ( MuPatSegment segInfo1,
MuPatSegment segInfo2,
std::unique_ptr< Trk::Track > &  track 
) const

create a track candidate from two segments

Parameters
[in]seg1the first MuPatSegment to be added, ownership is NOT passed!
[in]seg2the second MuPatSegment to be added, ownership is NOT passed!
[in]trackthe new track, ownership is passed to the candidate
[out]thenew candidate, ownership is passed to caller

Definition at line 118 of file MuPatCandidateTool.cxx.

119  {
120  // create the new candidate
121  std::unique_ptr<MuPatTrack> candidate = std::make_unique<MuPatTrack>(&segInfo1, &segInfo2, track);
123  return candidate;
124  }

◆ createCandidate() [3/3]

std::unique_ptr< MuPatTrack > Muon::MuPatCandidateTool::createCandidate ( std::unique_ptr< Trk::Track > &  track) const

create a track candidate from a track

Parameters
[in]trackthe new track, ownership is passed to the candidate
[out]thenew candidate, ownership is passed to caller

Definition at line 126 of file MuPatCandidateTool.cxx.

126  {
127  // create a dummy segment vector
128  std::vector<MuPatSegment*> segments;
129 
130  // create the new candidate
131  std::unique_ptr<MuPatTrack> candidate = std::make_unique<MuPatTrack>(segments, track);
133  return candidate;
134  }

◆ createSegInfo()

std::unique_ptr< MuPatSegment > Muon::MuPatCandidateTool::createSegInfo ( const EventContext &  ctx,
const MuonSegment segment 
) const

create a MuPatSegment object from a segment

Parameters
[in]segmentinput segment
[out]theMuPatSegment object, ownership is passed to caller

Definition at line 58 of file MuPatCandidateTool.cxx.

58  {
59  Identifier chid = m_edmHelperSvc->chamberId(segment);
60  if (m_idHelperSvc->isTrigger(chid)) {
61  ATH_MSG_WARNING("Trigger hit only segments not supported " << m_idHelperSvc->toStringChamber(chid));
62  return nullptr;
63  }
64  std::unique_ptr<MuPatSegment> info = std::make_unique<MuPatSegment>();
65  info->segment = &segment;
66  info->chid = chid;
67  info->chIndex = m_idHelperSvc->chamberIndex(info->chid);
68  std::set<Identifier> chIds = m_edmHelperSvc->chamberIds(segment);
69  for (const Identifier& id : chIds) {
70  MuonStationIndex::ChIndex chIdx = m_idHelperSvc->chamberIndex(id);
71  info->addChamber(chIdx);
72  // set default name
73  if (!info->name.empty()) info->name += "+";
74  // stationname_eta_phi
75  std::ostringstream oss;
76  oss << MuonStationIndex::chName(chIdx) << "_" << m_idHelperSvc->stationEta(id) << "_" << m_idHelperSvc->stationPhi(id);
77  info->name += oss.str();
78  }
79  info->stIndex = m_idHelperSvc->stationIndex(info->chid);
80  info->isEndcap = m_idHelperSvc->isEndcap(info->chid);
81  info->isMdt = m_idHelperSvc->isMdt(info->chid);
82  info->usedInFit = 0;
83  info->quality = m_segmentSelector->quality(segment);
84  info->segQuality = dynamic_cast<const MuonSegmentQuality*>(segment.fitQuality());
85 
86  info->segPars.reset(m_edmHelperSvc->createTrackParameters(segment, 5000., 0.));
87  if (!info->segPars) { ATH_MSG_WARNING(" failed to create track parameter for segment "); }
88 
89  updateHits(*info, info->segment->containedMeasurements(), m_doMdtRecreation, m_doCscRecreation, true);
90  m_hitHandler->create(ctx, segment, info->hitList());
91  return info;
92  }

◆ declareGaudiProperty() [1/4]

Gaudi::Details::PropertyBase& AthCommonDataStore< AthCommonMsg< AlgTool > >::declareGaudiProperty ( Gaudi::Property< T > &  hndl,
const SG::VarHandleKeyArrayType  
)
inlineprivateinherited

specialization for handling Gaudi::Property<SG::VarHandleKeyArray>

Definition at line 170 of file AthCommonDataStore.h.

172  {
173  return *AthCommonDataStore<PBASE>::declareProperty(hndl.name(),
174  hndl.value(),
175  hndl.documentation());
176 
177  }

◆ declareGaudiProperty() [2/4]

Gaudi::Details::PropertyBase& AthCommonDataStore< AthCommonMsg< AlgTool > >::declareGaudiProperty ( Gaudi::Property< T > &  hndl,
const SG::VarHandleKeyType  
)
inlineprivateinherited

specialization for handling Gaudi::Property<SG::VarHandleKey>

Definition at line 156 of file AthCommonDataStore.h.

158  {
159  return *AthCommonDataStore<PBASE>::declareProperty(hndl.name(),
160  hndl.value(),
161  hndl.documentation());
162 
163  }

◆ declareGaudiProperty() [3/4]

Gaudi::Details::PropertyBase& AthCommonDataStore< AthCommonMsg< AlgTool > >::declareGaudiProperty ( Gaudi::Property< T > &  hndl,
const SG::VarHandleType  
)
inlineprivateinherited

specialization for handling Gaudi::Property<SG::VarHandleBase>

Definition at line 184 of file AthCommonDataStore.h.

186  {
187  return *AthCommonDataStore<PBASE>::declareProperty(hndl.name(),
188  hndl.value(),
189  hndl.documentation());
190  }

◆ declareGaudiProperty() [4/4]

Gaudi::Details::PropertyBase& AthCommonDataStore< AthCommonMsg< AlgTool > >::declareGaudiProperty ( Gaudi::Property< T > &  t,
const SG::NotHandleType  
)
inlineprivateinherited

specialization for handling everything that's not a Gaudi::Property<SG::VarHandleKey> or a <SG::VarHandleKeyArray>

Definition at line 199 of file AthCommonDataStore.h.

200  {
201  return PBASE::declareProperty(t);
202  }

◆ declareProperty() [1/6]

Gaudi::Details::PropertyBase* AthCommonDataStore< AthCommonMsg< AlgTool > >::declareProperty ( const std::string &  name,
SG::VarHandleBase hndl,
const std::string &  doc,
const SG::VarHandleType  
)
inlineinherited

Declare a new Gaudi property.

Parameters
nameName of the property.
hndlObject holding the property value.
docDocumentation string for the property.

This is the version for types that derive from SG::VarHandleBase. The property value object is put on the input and output lists as appropriate; then we forward to the base class.

Definition at line 245 of file AthCommonDataStore.h.

249  {
250  this->declare(hndl.vhKey());
251  hndl.vhKey().setOwner(this);
252 
253  return PBASE::declareProperty(name,hndl,doc);
254  }

◆ declareProperty() [2/6]

Gaudi::Details::PropertyBase* AthCommonDataStore< AthCommonMsg< AlgTool > >::declareProperty ( const std::string &  name,
SG::VarHandleKey hndl,
const std::string &  doc,
const SG::VarHandleKeyType  
)
inlineinherited

Declare a new Gaudi property.

Parameters
nameName of the property.
hndlObject holding the property value.
docDocumentation string for the property.

This is the version for types that derive from SG::VarHandleKey. The property value object is put on the input and output lists as appropriate; then we forward to the base class.

Definition at line 221 of file AthCommonDataStore.h.

225  {
226  this->declare(hndl);
227  hndl.setOwner(this);
228 
229  return PBASE::declareProperty(name,hndl,doc);
230  }

◆ declareProperty() [3/6]

Gaudi::Details::PropertyBase* AthCommonDataStore< AthCommonMsg< AlgTool > >::declareProperty ( const std::string &  name,
SG::VarHandleKeyArray hndArr,
const std::string &  doc,
const SG::VarHandleKeyArrayType  
)
inlineinherited

Definition at line 259 of file AthCommonDataStore.h.

263  {
264 
265  // std::ostringstream ost;
266  // ost << Algorithm::name() << " VHKA declareProp: " << name
267  // << " size: " << hndArr.keys().size()
268  // << " mode: " << hndArr.mode()
269  // << " vhka size: " << m_vhka.size()
270  // << "\n";
271  // debug() << ost.str() << endmsg;
272 
273  hndArr.setOwner(this);
274  m_vhka.push_back(&hndArr);
275 
276  Gaudi::Details::PropertyBase* p = PBASE::declareProperty(name, hndArr, doc);
277  if (p != 0) {
278  p->declareUpdateHandler(&AthCommonDataStore<PBASE>::updateVHKA, this);
279  } else {
280  ATH_MSG_ERROR("unable to call declareProperty on VarHandleKeyArray "
281  << name);
282  }
283 
284  return p;
285 
286  }

◆ declareProperty() [4/6]

Gaudi::Details::PropertyBase* AthCommonDataStore< AthCommonMsg< AlgTool > >::declareProperty ( const std::string &  name,
T &  property,
const std::string &  doc,
const SG::NotHandleType  
)
inlineinherited

Declare a new Gaudi property.

Parameters
nameName of the property.
propertyObject holding the property value.
docDocumentation string for the property.

This is the generic version, for types that do not derive from SG::VarHandleKey. It just forwards to the base class version of declareProperty.

Definition at line 333 of file AthCommonDataStore.h.

337  {
338  return PBASE::declareProperty(name, property, doc);
339  }

◆ declareProperty() [5/6]

Gaudi::Details::PropertyBase* AthCommonDataStore< AthCommonMsg< AlgTool > >::declareProperty ( const std::string &  name,
T &  property,
const std::string &  doc = "none" 
)
inlineinherited

Declare a new Gaudi property.

Parameters
nameName of the property.
propertyObject holding the property value.
docDocumentation string for the property.

This dispatches to either the generic declareProperty or the one for VarHandle/Key/KeyArray.

Definition at line 352 of file AthCommonDataStore.h.

355  {
356  typedef typename SG::HandleClassifier<T>::type htype;
357  return declareProperty (name, property, doc, htype());
358  }

◆ declareProperty() [6/6]

Gaudi::Details::PropertyBase& AthCommonDataStore< AthCommonMsg< AlgTool > >::declareProperty ( Gaudi::Property< T > &  t)
inlineinherited

Definition at line 145 of file AthCommonDataStore.h.

145  {
146  typedef typename SG::HandleClassifier<T>::type htype;
148  }

◆ detStore()

const ServiceHandle<StoreGateSvc>& AthCommonDataStore< AthCommonMsg< AlgTool > >::detStore ( ) const
inlineinherited

The standard StoreGateSvc/DetectorStore Returns (kind of) a pointer to the StoreGateSvc.

Definition at line 95 of file AthCommonDataStore.h.

95 { return m_detStore; }

◆ evtStore() [1/2]

ServiceHandle<StoreGateSvc>& AthCommonDataStore< AthCommonMsg< AlgTool > >::evtStore ( )
inlineinherited

The standard StoreGateSvc (event store) Returns (kind of) a pointer to the StoreGateSvc.

Definition at line 85 of file AthCommonDataStore.h.

85 { return m_evtStore; }

◆ evtStore() [2/2]

const ServiceHandle<StoreGateSvc>& AthCommonDataStore< AthCommonMsg< AlgTool > >::evtStore ( ) const
inlineinherited

The standard StoreGateSvc (event store) Returns (kind of) a pointer to the StoreGateSvc.

Definition at line 90 of file AthCommonDataStore.h.

90 { return m_evtStore; }

◆ extendWithSegment()

bool Muon::MuPatCandidateTool::extendWithSegment ( MuPatTrack can,
MuPatSegment segInfo,
std::unique_ptr< Trk::Track > &  track 
) const

extend a track candidate with a segment

Parameters
[in]canthe MuPatTrack to be extended
[in]trackthe new track, ownership is passed to the candidate
[in]segthe MuPatSegment to be added, ownership is NOT passed!
[out]trueif any segment was removed from the track, false if not

Definition at line 94 of file MuPatCandidateTool.cxx.

94  {
95  // add segment to candidate
96  can.addSegment(&segInfo, track);
98  }

◆ extraDeps_update_handler()

void AthCommonDataStore< AthCommonMsg< AlgTool > >::extraDeps_update_handler ( Gaudi::Details::PropertyBase &  ExtraDeps)
protectedinherited

Add StoreName to extra input/output deps as needed.

use the logic of the VarHandleKey to parse the DataObjID keys supplied via the ExtraInputs and ExtraOuputs Properties to add the StoreName if it's not explicitly given

◆ initialize()

StatusCode Muon::MuPatCandidateTool::initialize ( )
overridevirtual

initialize method, method taken from bass-class AlgTool

Definition at line 38 of file MuPatCandidateTool.cxx.

38  {
39  ATH_CHECK(m_idHelperSvc.retrieve());
40  ATH_CHECK(m_mdtRotCreator.retrieve());
41  if (!m_cscRotCreator.empty()) {
42  if (!m_idHelperSvc->hasCSC())
44  "The current layout does not have any CSC chamber but you gave a CscRotCreator, ignoring it, but double-check "
45  "configuration");
46  else
47  ATH_CHECK(m_cscRotCreator.retrieve());
48  }
49  ATH_CHECK(m_compClusterCreator.retrieve());
50  ATH_CHECK(m_hitHandler.retrieve());
51  ATH_CHECK(m_edmHelperSvc.retrieve());
52  ATH_CHECK(m_printer.retrieve());
53  ATH_CHECK(m_segmentSelector.retrieve());
54 
55  return StatusCode::SUCCESS;
56  }

◆ inputHandles()

virtual std::vector<Gaudi::DataHandle*> AthCommonDataStore< AthCommonMsg< AlgTool > >::inputHandles ( ) const
overridevirtualinherited

Return this algorithm's input handles.

We override this to include handle instances from key arrays if they have not yet been declared. See comments on updateVHKA.

◆ interfaceID()

static const InterfaceID& Muon::MuPatCandidateTool::interfaceID ( )
inlinestatic

access to tool interface

Definition at line 66 of file MuPatCandidateTool.h.

66  {
67  static const InterfaceID IID_MuPatCandidateTool("Muon::MuPatCandidateTool", 1, 0);
68  return IID_MuPatCandidateTool;
69  }

◆ msg() [1/2]

MsgStream& AthCommonMsg< AlgTool >::msg ( ) const
inlineinherited

Definition at line 24 of file AthCommonMsg.h.

24  {
25  return this->msgStream();
26  }

◆ msg() [2/2]

MsgStream& AthCommonMsg< AlgTool >::msg ( const MSG::Level  lvl) const
inlineinherited

Definition at line 27 of file AthCommonMsg.h.

27  {
28  return this->msgStream(lvl);
29  }

◆ msgLvl()

bool AthCommonMsg< AlgTool >::msgLvl ( const MSG::Level  lvl) const
inlineinherited

Definition at line 30 of file AthCommonMsg.h.

30  {
31  return this->msgLevel(lvl);
32  }

◆ outputHandles()

virtual std::vector<Gaudi::DataHandle*> AthCommonDataStore< AthCommonMsg< AlgTool > >::outputHandles ( ) const
overridevirtualinherited

Return this algorithm's output handles.

We override this to include handle instances from key arrays if they have not yet been declared. See comments on updateVHKA.

◆ print() [1/5]

std::string Muon::MuPatCandidateTool::print ( const MuPatCandidateBase candidate,
int  level = 0 
) const

Definition at line 501 of file MuPatCandidateTool.cxx.

501  {
502  const MuPatSegment* seg = dynamic_cast<const MuPatSegment*>(&candidate);
503  if (seg) return print(*seg, level);
504 
505  const MuPatTrack* track = dynamic_cast<const MuPatTrack*>(&candidate);
506  if (track) return print(*track, level);
507 
508  return "Unknown candidate type";
509  }

◆ print() [2/5]

std::string Muon::MuPatCandidateTool::print ( const MuPatSegment segment,
int  level = 0 
) const

print the measurements on the track to string

This really belongs in MuonEDMPrinterTool in package MuonRecHelperTools. However, due to the tight tag collecting policy for release 15.5.0, this change is not likely to get accepted there. To be moved there as soon as release 16 is open

Definition at line 456 of file MuPatCandidateTool.cxx.

456  {
457  std::ostringstream oss;
458  oss << segment.name << ": " << m_printer->print(*segment.segment) << " q " << segment.quality;
459  if (level == 0) return oss.str();
460 
461  if (segment.hitList().size() >= 2) {
462  DistanceAlongParameters distCal{};
463  oss << " length " << distCal(segment.hitList().front(), segment.hitList().back());
464  }
465  oss << std::endl << m_hitHandler->print(segment.hitList(), true, false, false);
466  return oss.str();
467  }

◆ print() [3/5]

std::string Muon::MuPatCandidateTool::print ( const MuPatTrack track,
int  level = 0 
) const

Definition at line 479 of file MuPatCandidateTool.cxx.

479  {
480  std::ostringstream oss;
481  oss << m_printer->print(track.track()) << std::endl << m_printer->printStations(track.track());
482 
483  if (level == 0) return oss.str();
484 
485  const std::vector<MuPatSegment*>& segs = track.segments();
486  oss << std::endl << print(segs, 0);
487 
488  return oss.str();
489  }

◆ print() [4/5]

std::string Muon::MuPatCandidateTool::print ( const std::vector< MuPatSegment * > &  segments,
int  level = 0 
) const

Definition at line 469 of file MuPatCandidateTool.cxx.

469  {
470  std::vector<MuPatSegment*>::const_iterator it = segments.begin();
471  std::vector<MuPatSegment*>::const_iterator it_end = segments.end();
472  std::ostringstream oss;
473  oss << " Segment candidate vector: " << segments.size();
474  for (; it != it_end; ++it) oss << std::endl << print(**it, level);
475 
476  return oss.str();
477  }

◆ print() [5/5]

std::string Muon::MuPatCandidateTool::print ( const std::vector< std::unique_ptr< MuPatTrack > > &  tracks,
int  level = 0 
) const

Definition at line 491 of file MuPatCandidateTool.cxx.

491  {
492  std::ostringstream oss;
493  oss << "MuPatTracks " << tracks.size() << std::endl;
494  std::vector<std::unique_ptr<MuPatTrack> >::const_iterator tit = tracks.begin();
495  std::vector<std::unique_ptr<MuPatTrack> >::const_iterator tit_end = tracks.end();
496  for (; tit != tit_end; ++tit) oss << " " << print(**tit, level) << std::endl;
497 
498  return oss.str();
499  }

◆ readoutElements()

std::set< const MuonGM::MuonReadoutElement * > Muon::MuPatCandidateTool::readoutElements ( const MuPatCandidateBase entry) const

get list of the readout elements of the hits on the entry

Definition at line 429 of file MuPatCandidateTool.cxx.

429  {
430  std::set<const MuonGM::MuonReadoutElement*> roEls;
431 
432  MuPatHitCit it = entry.hitList().begin();
433  MuPatHitCit it_end = entry.hitList().end();
434  for (; it != it_end; ++it) {
435  if (!(*it)->info().id.is_valid()) continue;
436  // only want MDT or CSC detEls
437  if (!m_idHelperSvc->isMdt((*it)->info().id) && !m_idHelperSvc->isCsc((*it)->info().id)) continue;
438 
439  const Trk::MeasurementBase& meas = (*it)->measurement();
440  const Trk::RIO_OnTrack* rot = dynamic_cast<const Trk::RIO_OnTrack*>(&meas);
441  if (!rot) {
442  const CompetingMuonClustersOnTrack* crot = dynamic_cast<const CompetingMuonClustersOnTrack*>(&meas);
443  if (crot) {
444  const std::vector<const MuonClusterOnTrack*>& rots = crot->containedROTs();
445  if (!rots.empty()) rot = rots.front();
446  }
447  }
448  if (rot) {
449  const MuonGM::MuonReadoutElement* roEl = dynamic_cast<const MuonGM::MuonReadoutElement*>(rot->detectorElement());
450  if (roEl) roEls.insert(roEl);
451  }
452  }
453  return roEls;
454  }

◆ recalculateCandidateSegmentContent()

bool Muon::MuPatCandidateTool::recalculateCandidateSegmentContent ( MuPatTrack candidate) const

recalculate the chamber indices on the candidate and reset them.

Return whether segment has been removed.

Definition at line 380 of file MuPatCandidateTool.cxx.

380  {
381  // loop over track and get the chambers on the track
382  const Trk::TrackStates* states = candidate.track().trackStateOnSurfaces();
383  if (!states) return false;
384 
385  std::set<MuonStationIndex::ChIndex> chambers;
386 
387  // loop over TSOSs
388  for (const Trk::TrackStateOnSurface* tsos : *states) {
389  // only look at measurements
390  if (!tsos->type(Trk::TrackStateOnSurface::Measurement) || tsos->type(Trk::TrackStateOnSurface::Outlier)) continue;
391 
392  // check whether state is a measurement
393  const Trk::MeasurementBase* meas = tsos->measurementOnTrack();
394  if (!meas) continue;
395 
396  // get chamber index
397  Identifier id = m_edmHelperSvc->getIdentifier(*meas);
398  if (!id.is_valid() || !m_idHelperSvc->isMuon(id)) continue;
399 
400  // don't include trigger hits
401  if (m_idHelperSvc->isTrigger(id)) continue;
402 
403  chambers.insert(m_idHelperSvc->chamberIndex(id));
404 
405  ATH_MSG_VERBOSE(" in recal " << m_idHelperSvc->toString(id));
406  }
407  if (msgLvl(MSG::VERBOSE)) {
408  ATH_MSG_VERBOSE(" recalculateCandidateSegmentContent, old chambers " << candidate.chambers().size() << " new chambers "
409  << chambers.size());
410  for (const MuonStationIndex::ChIndex& chit : candidate.chambers()) {
411  if (!chambers.count(chit)) { ATH_MSG_VERBOSE(" removing chamber index from candidate " << MuonStationIndex::chName(chit)); }
412  }
413  }
414 
415  // reset chamber content
416  bool bRemovedSegments = candidate.resetChambersOnCandidate(chambers);
417 
418  // recalculate hit list
419  candidate.hitList().clear();
420  m_hitHandler->create(candidate.track(), candidate.hitList());
421  // update the hit summary
422  updateHits(candidate, candidate.track().measurementsOnTrack()->stdcont());
423 
424  ATH_MSG_VERBOSE("Print content after recalculateCandidateSegmentContent() -- "<<m_hitHandler->print(candidate.hitList()));
425 
426  return bRemovedSegments;
427  }

◆ renounce()

std::enable_if_t<std::is_void_v<std::result_of_t<decltype(&T::renounce)(T)> > && !std::is_base_of_v<SG::VarHandleKeyArray, T> && std::is_base_of_v<Gaudi::DataHandle, T>, void> AthCommonDataStore< AthCommonMsg< AlgTool > >::renounce ( T &  h)
inlineprotectedinherited

Definition at line 380 of file AthCommonDataStore.h.

381  {
382  h.renounce();
383  PBASE::renounce (h);
384  }

◆ renounceArray()

void AthCommonDataStore< AthCommonMsg< AlgTool > >::renounceArray ( SG::VarHandleKeyArray handlesArray)
inlineprotectedinherited

remove all handles from I/O resolution

Definition at line 364 of file AthCommonDataStore.h.

364  {
365  handlesArray.renounce();
366  }

◆ sysInitialize()

virtual StatusCode AthCommonDataStore< AthCommonMsg< AlgTool > >::sysInitialize ( )
overridevirtualinherited

Perform system initialization for an algorithm.

We override this to declare all the elements of handle key arrays at the end of initialization. See comments on updateVHKA.

Reimplemented in DerivationFramework::CfAthAlgTool, AthCheckedComponent< AthAlgTool >, AthCheckedComponent<::AthAlgTool >, and asg::AsgMetadataTool.

◆ sysStart()

virtual StatusCode AthCommonDataStore< AthCommonMsg< AlgTool > >::sysStart ( )
overridevirtualinherited

Handle START transition.

We override this in order to make sure that conditions handle keys can cache a pointer to the conditions container.

◆ updateHits()

void Muon::MuPatCandidateTool::updateHits ( MuPatCandidateBase entry,
const MeasVec measurements,
bool  recreateMDT = false,
bool  recreateCSC = false,
bool  createComp = false 
) const
private

update hits for a MuPatCandidateBase

Definition at line 136 of file MuPatCandidateTool.cxx.

137  {
138  MeasVec etaHits{}, phiHits{}, fakePhiHits{}, allHits{};
139 
140  unsigned int nmdtHitsMl1{0}, nmdtHitsMl2{0}, ncscHitsEta{0}, ncscHitsPhi{0}, nrpcHitsEta{0}, nrpcHitsPhi{0}, ntgcHitsEta{0},
141  ntgcHitsPhi{0};
142 
143  entry.clearChambers(); // also clears stations and chamberIds
144 
145  bool hasEndcap{false}, hasSmall{false}, hasLarge{false}, hassloverlap{false}, previssmall{false};
147 
149 
150  // vector to store trigger hits in case we have special treatment for them
151  std::vector<const MuonClusterOnTrack*> triggerHitsPhi;
152  std::vector<const MuonClusterOnTrack*> triggerHitsEta;
153 
154  // loop over hits
155  bool is_first_meas = true;
156  for (const Trk::MeasurementBase* meas : measurements) {
157  // cppcheck-suppress invalidLifetime; false positive
158  Identifier id = m_edmHelperSvc->getIdentifier(*meas);
159  if (!id.is_valid()) {
160  fakePhiHits.push_back(meas);
161  continue;
162  }
163 
164  // skip ID hits
165  if (!m_idHelperSvc->isMuon(id)) continue;
166 
167  Identifier chId = m_idHelperSvc->chamberId(id);
168  MuonStationIndex::ChIndex chIndex = m_idHelperSvc->chamberIndex(chId);
169  MuonStationIndex::StIndex stIndex = m_idHelperSvc->stationIndex(chId);
170  if (!hasEndcap) hasEndcap = m_idHelperSvc->isEndcap(id);
171 
172  bool measuresPhi = false;
173 
174  bool isMdt = m_idHelperSvc->isMdt(id);
175  bool isCsc = m_idHelperSvc->isCsc(id);
176  bool isNSW = m_idHelperSvc->isMM(id) || m_idHelperSvc->issTgc(id);
177  // only add precision hits
178  if (isMdt || isCsc || isNSW) {
179  entry.addChamber(chIndex); // will also add stationIndex
180  entry.chamberIds().insert(chId);
181  }
182  if (isMdt) {
183  // if in MDT recreation mode, recreate MDT using ROT creator. Store the pointer as we have to delete it ourselfs.
184  if (recreateMDT) {
185  if ( !m_doMdtRecreation) {
187  " recreation of MDTs requiered although not configured via jobO, ignoring request. Please check jobO ");
188  } else {
189  const MdtDriftCircleOnTrack* mdt = dynamic_cast<const MdtDriftCircleOnTrack*>(meas);
190  if (!mdt) {
191  ATH_MSG_WARNING(" found MdtDriftCircleOnTrack without MDT identifier " << m_idHelperSvc->toString(id));
192  continue;
193  }
194  ATH_MSG_DEBUG(" recreating MdtDriftCircleOnTrack ");
195  std::unique_ptr<const MdtDriftCircleOnTrack> newMdt{
196  m_mdtRotCreator->createRIO_OnTrack(*mdt->prepRawData(), mdt->globalPosition())};
197  meas = newMdt.get();
198  entry.addToTrash(std::move(newMdt));
199  }
200  }
201 
202  const bool isSmall = m_idHelperSvc->isSmallChamber(id);
203  hasSmall |= isSmall;
204  hasLarge |= !isSmall;
205 
206  if (isSmall != previssmall && !is_first_meas && stIndex == prevstIndex) hassloverlap = true;
207 
208  is_first_meas = false;
209  previssmall = isSmall;
210  prevstIndex = stIndex;
211 
212  unsigned int ml = m_idHelperSvc->mdtIdHelper().multilayer(id);
213  nmdtHitsMl1 += (ml ==1);
214  nmdtHitsMl2 += (ml ==2);
215  } else {
216  measuresPhi = m_idHelperSvc->measuresPhi(id);
217 
218  const bool isRpc = m_idHelperSvc->isRpc(id);
219  const bool isTgc = m_idHelperSvc->isTgc(id);
220  nrpcHitsPhi += (measuresPhi && isRpc);
221  nrpcHitsEta += (!measuresPhi && isRpc);
222 
223  ntgcHitsPhi += (measuresPhi && isTgc);
224  ntgcHitsEta += (!measuresPhi && isTgc);
225 
226  ncscHitsPhi+= (measuresPhi && isCsc);
227  ncscHitsEta+= (!measuresPhi && isCsc);
228  if (isCsc && recreateCSC) {
229  const CscClusterOnTrack* csc = dynamic_cast<const CscClusterOnTrack*>(meas);
230  if (!csc) {
231  ATH_MSG_WARNING(" found CscClusterOnTrack without CSC identifier " << m_idHelperSvc->toString(id));
232  continue;
233  }
234  ATH_MSG_DEBUG(" recreating CscClusterOnTrack ");
235  std::unique_ptr<const MuonClusterOnTrack> newCsc{m_cscRotCreator->createRIO_OnTrack(*csc->prepRawData(), csc->globalPosition())};
236  meas = newCsc.get();
237  entry.addToTrash(std::move(newCsc));
238  }
239 
240 
241  // if selected create competing ROTs for trigger hits
242  if (createComp && (isRpc || isTgc)) {
243  if (measuresPhi && m_createCompetingROTsPhi) {
244  // cppcheck-suppress invalidLifetime; false positive
245  addCluster(*meas, triggerHitsPhi);
246  continue;
247  } else if (!measuresPhi && m_createCompetingROTsEta) {
248  // cppcheck-suppress invalidLifetime; false positive
249  addCluster(*meas, triggerHitsEta);
250  continue;
251  }
252  }
253  }
254 
255  // cppcheck-suppress invalidLifetime; false positive
256  allHits.push_back(meas);
257 
258  if (measuresPhi) {
259  // cppcheck-suppress invalidLifetime; false positive
260  phiHits.push_back(meas);
261  } else {
262  // cppcheck-suppress invalidLifetime; false positive
263  etaHits.push_back(meas);
264  }
265  }
266 
267  if (createComp) {
268  if (m_createCompetingROTsEta && !triggerHitsEta.empty()) createAndAddCompetingROTs(triggerHitsEta, etaHits, allHits, entry);
269  if (m_createCompetingROTsPhi && !triggerHitsPhi.empty()) createAndAddCompetingROTs(triggerHitsPhi, phiHits, allHits, entry);
270  }
271 
272  entry.nmdtHitsMl1 = nmdtHitsMl1;
273  entry.nmdtHitsMl2 = nmdtHitsMl2;
274  entry.ncscHitsEta = ncscHitsEta;
275  entry.ncscHitsPhi = ncscHitsPhi;
276  entry.nrpcHitsEta = nrpcHitsEta;
277  entry.nrpcHitsPhi = nrpcHitsPhi;
278  entry.ntgcHitsEta = ntgcHitsEta;
279  entry.ntgcHitsPhi = ntgcHitsPhi;
280  if (!triggerHitsEta.empty() && etaHits.empty()) ATH_MSG_WARNING("did not find any eta hits");
281  entry.setEtaHits(etaHits);
282  if (!triggerHitsPhi.empty() && phiHits.empty()) ATH_MSG_WARNING("did not find any phi hits");
283  entry.setPhiHits(phiHits);
284  entry.setFakePhiHits(fakePhiHits);
285  entry.setAllHits(allHits);
286  entry.hasEndcap(hasEndcap);
287  entry.hasSmallChamber(hasSmall);
288  entry.hasLargeChamber(hasLarge);
289  entry.hasSLOverlap(hassloverlap);
290  }

◆ updateTrack()

bool Muon::MuPatCandidateTool::updateTrack ( MuPatTrack candidate,
std::unique_ptr< Trk::Track > &  track 
) const

set the new track in the candidate, and update candidate contents.

Candidate takes ownership of track. Returns whether segments have been removed compared to the pre-existing list of segments.

Definition at line 113 of file MuPatCandidateTool.cxx.

113  {
114  candidate.updateTrack(track);
115  return recalculateCandidateSegmentContent(candidate);
116  }

◆ updateVHKA()

void AthCommonDataStore< AthCommonMsg< AlgTool > >::updateVHKA ( Gaudi::Details::PropertyBase &  )
inlineinherited

Definition at line 308 of file AthCommonDataStore.h.

308  {
309  // debug() << "updateVHKA for property " << p.name() << " " << p.toString()
310  // << " size: " << m_vhka.size() << endmsg;
311  for (auto &a : m_vhka) {
312  std::vector<SG::VarHandleKey*> keys = a->keys();
313  for (auto k : keys) {
314  k->setOwner(this);
315  }
316  }
317  }

Member Data Documentation

◆ m_compClusterCreator

ToolHandle<IMuonCompetingClustersOnTrackCreator> Muon::MuPatCandidateTool::m_compClusterCreator
private
Initial value:
{
this, "CompetingClustersCreator", "Muon::TriggerChamberClusterOnTrackCreator/TriggerChamberClusterOnTrackCreator",
"tool to create competing clusters on track"}

Definition at line 157 of file MuPatCandidateTool.h.

◆ m_createCompetingROTsEta

Gaudi::Property<bool> Muon::MuPatCandidateTool::m_createCompetingROTsEta {this, "CreateCompetingROTsEta", true}
private

Definition at line 169 of file MuPatCandidateTool.h.

◆ m_createCompetingROTsPhi

Gaudi::Property<bool> Muon::MuPatCandidateTool::m_createCompetingROTsPhi {this, "CreateCompetingROTsPhi", false}
private

Definition at line 168 of file MuPatCandidateTool.h.

◆ m_cscRotCreator

ToolHandle<IMuonClusterOnTrackCreator> Muon::MuPatCandidateTool::m_cscRotCreator
private
Initial value:
{
this, "CscRotCreator", "Muon::CscClusterOnTrackCreator/CscClusterOnTrackCreator", "tool to calibrate CSC hits"}

Definition at line 155 of file MuPatCandidateTool.h.

◆ m_detStore

StoreGateSvc_t AthCommonDataStore< AthCommonMsg< AlgTool > >::m_detStore
privateinherited

Pointer to StoreGate (detector store by default)

Definition at line 393 of file AthCommonDataStore.h.

◆ m_doCscRecreation

Gaudi::Property<bool> Muon::MuPatCandidateTool::m_doCscRecreation {this, "DoCscRecreation", true}
private

Definition at line 171 of file MuPatCandidateTool.h.

◆ m_doMdtRecreation

Gaudi::Property<bool> Muon::MuPatCandidateTool::m_doMdtRecreation {this, "DoMdtRecreation", false}
private

Definition at line 170 of file MuPatCandidateTool.h.

◆ m_edmHelperSvc

ServiceHandle<IMuonEDMHelperSvc> Muon::MuPatCandidateTool::m_edmHelperSvc
private
Initial value:
{this, "edmHelper", "Muon::MuonEDMHelperSvc/MuonEDMHelperSvc",
"Handle to the service providing the IMuonEDMHelperSvc interface"}

Definition at line 161 of file MuPatCandidateTool.h.

◆ m_evtStore

StoreGateSvc_t AthCommonDataStore< AthCommonMsg< AlgTool > >::m_evtStore
privateinherited

Pointer to StoreGate (event store by default)

Definition at line 390 of file AthCommonDataStore.h.

◆ m_hitHandler

ToolHandle<MuPatHitTool> Muon::MuPatCandidateTool::m_hitHandler {this, "HitTool", "Muon::MuPatHitTool/MuPatHitTool", "Tool to manipulate hit lists"}
private

Definition at line 164 of file MuPatCandidateTool.h.

◆ m_idHelperSvc

ServiceHandle<Muon::IMuonIdHelperSvc> Muon::MuPatCandidateTool::m_idHelperSvc {this, "MuonIdHelperSvc", "Muon::MuonIdHelperSvc/MuonIdHelperSvc"}
private

Definition at line 160 of file MuPatCandidateTool.h.

◆ m_mdtRotCreator

ToolHandle<IMdtDriftCircleOnTrackCreator> Muon::MuPatCandidateTool::m_mdtRotCreator
private
Initial value:
{
this, "MdtRotCreator", "Muon::MdtDriftCircleOnTrackCreator/MdtDriftCircleOnTrackCreator", "tool to calibrate MDT hits"}

Definition at line 153 of file MuPatCandidateTool.h.

◆ m_printer

PublicToolHandle<MuonEDMPrinterTool> Muon::MuPatCandidateTool::m_printer {this, "MuonPrinterTool", "Muon::MuonEDMPrinterTool/MuonEDMPrinterTool"}
private

Definition at line 163 of file MuPatCandidateTool.h.

◆ m_segmentSelector

ToolHandle<Muon::IMuonSegmentSelectionTool> Muon::MuPatCandidateTool::m_segmentSelector
private
Initial value:
{
this, "SegmentSelector", "Muon::MuonSegmentSelectionTool/MuonSegmentSelectionTool", "Tool to resolve track ambiguities"}

Definition at line 165 of file MuPatCandidateTool.h.

◆ m_varHandleArraysDeclared

bool AthCommonDataStore< AthCommonMsg< AlgTool > >::m_varHandleArraysDeclared
privateinherited

Definition at line 399 of file AthCommonDataStore.h.

◆ m_vhka

std::vector<SG::VarHandleKeyArray*> AthCommonDataStore< AthCommonMsg< AlgTool > >::m_vhka
privateinherited

Definition at line 398 of file AthCommonDataStore.h.


The documentation for this class was generated from the following files:
grepfile.info
info
Definition: grepfile.py:38
xAOD::iterator
JetConstituentVector::iterator iterator
Definition: JetConstituentVector.cxx:68
Muon::MuonStationIndex::chName
static const std::string & chName(ChIndex index)
convert ChIndex into a string
Definition: MuonStationIndex.cxx:157
Muon::MuonStationIndex::StUnknown
@ StUnknown
Definition: MuonStationIndex.h:24
Muon::MuPatCandidateTool::print
std::string print(const MuPatSegment &segment, int level=0) const
print the measurements on the track to string
Definition: MuPatCandidateTool.cxx:456
TRTCalib_Extractor.hits
hits
Definition: TRTCalib_Extractor.py:35
Trk::MagneticFieldProperties
Definition: MagneticFieldProperties.h:31
AthCommonDataStore::declareProperty
Gaudi::Details::PropertyBase & declareProperty(Gaudi::Property< T > &t)
Definition: AthCommonDataStore.h:145
skel.it
it
Definition: skel.GENtoEVGEN.py:396
Muon::MuPatCandidateTool::m_mdtRotCreator
ToolHandle< IMdtDriftCircleOnTrackCreator > m_mdtRotCreator
Definition: MuPatCandidateTool.h:153
AthCommonDataStore< AthCommonMsg< AlgTool > >::m_evtStore
StoreGateSvc_t m_evtStore
Pointer to StoreGate (event store by default)
Definition: AthCommonDataStore.h:390
Muon::MuPatCandidateTool::m_cscRotCreator
ToolHandle< IMuonClusterOnTrackCreator > m_cscRotCreator
Definition: MuPatCandidateTool.h:155
AthCommonDataStore< AthCommonMsg< AlgTool > >::m_vhka
std::vector< SG::VarHandleKeyArray * > m_vhka
Definition: AthCommonDataStore.h:398
AthCommonMsg< AlgTool >::msgLvl
bool msgLvl(const MSG::Level lvl) const
Definition: AthCommonMsg.h:30
Trk::RIO_OnTrack
Definition: RIO_OnTrack.h:70
Muon::MuPatCandidateTool::MeasVec
std::vector< const Trk::MeasurementBase * > MeasVec
Definition: MuPatCandidateTool.h:51
read_hist_ntuple.t
t
Definition: read_hist_ntuple.py:5
ATH_MSG_VERBOSE
#define ATH_MSG_VERBOSE(x)
Definition: AthMsgStreamMacros.h:28
Muon::MuPatCandidateTool::m_createCompetingROTsEta
Gaudi::Property< bool > m_createCompetingROTsEta
Definition: MuPatCandidateTool.h:169
python.iconfTool.models.loaders.level
level
Definition: loaders.py:20
Muon::MuPatCandidateTool::m_doCscRecreation
Gaudi::Property< bool > m_doCscRecreation
Definition: MuPatCandidateTool.h:171
Muon::MuPatCandidateTool::createAndAddCompetingROTs
void createAndAddCompetingROTs(const std::vector< const MuonClusterOnTrack * > &rots, MeasVec &hits, MeasVec &allHits, MuPatCandidateBase &entry) const
create CompetingMuonClustersOnTracks from ROTs and add them to the MeasVec.
Definition: MuPatCandidateTool.cxx:308
SG::VarHandleKeyArray::setOwner
virtual void setOwner(IDataHandleHolder *o)=0
MuonGM::MuonReadoutElement
Base class for the XxxReadoutElement, with Xxx = Mdt, Rpc, Tgc, Csc.
Definition: MuonDetDescr/MuonReadoutGeometry/MuonReadoutGeometry/MuonReadoutElement.h:40
Trk::TrackStateOnSurface::Outlier
@ Outlier
This TSoS contains an outlier, that is, it contains a MeasurementBase/RIO_OnTrack which was not used ...
Definition: TrackStateOnSurface.h:122
IDTPMcnv.htype
htype
Definition: IDTPMcnv.py:27
TileDCSDataPlotter.tit
tit
Definition: TileDCSDataPlotter.py:890
python.utils.AtlRunQueryDQUtils.p
p
Definition: AtlRunQueryDQUtils.py:210
PlotPulseshapeFromCool.can
can
Definition: PlotPulseshapeFromCool.py:91
AthCommonDataStore
Definition: AthCommonDataStore.h:52
ATH_MSG_ERROR
#define ATH_MSG_ERROR(x)
Definition: AthMsgStreamMacros.h:33
Muon::MuPatCandidateTool::updateHits
void updateHits(MuPatCandidateBase &entry, const MeasVec &measurements, bool recreateMDT=false, bool recreateCSC=false, bool createComp=false) const
update hits for a MuPatCandidateBase
Definition: MuPatCandidateTool.cxx:136
Muon::MuPatHitCit
MuPatHitList::const_iterator MuPatHitCit
Definition: MuPatHit.h:27
beamspotman.n
n
Definition: beamspotman.py:731
endmsg
#define endmsg
Definition: AnalysisConfig_Ntuple.cxx:63
ATH_MSG_DEBUG
#define ATH_MSG_DEBUG(x)
Definition: AthMsgStreamMacros.h:29
urldecode::states
states
Definition: urldecode.h:39
Muon::MuPatCandidateTool::m_idHelperSvc
ServiceHandle< Muon::IMuonIdHelperSvc > m_idHelperSvc
Definition: MuPatCandidateTool.h:160
ATH_CHECK
#define ATH_CHECK
Definition: AthCheckMacros.h:40
AthCommonDataStore< AthCommonMsg< AlgTool > >::m_detStore
StoreGateSvc_t m_detStore
Pointer to StoreGate (detector store by default)
Definition: AthCommonDataStore.h:393
DataVector< const Trk::TrackStateOnSurface >
AthAlgTool::AthAlgTool
AthAlgTool()
Default constructor:
Muon::MuPatCandidateTool::m_segmentSelector
ToolHandle< Muon::IMuonSegmentSelectionTool > m_segmentSelector
Definition: MuPatCandidateTool.h:165
SG::VarHandleKeyArray::renounce
virtual void renounce()=0
SG::HandleClassifier::type
std::conditional< std::is_base_of< SG::VarHandleKeyArray, T >::value, VarHandleKeyArrayType, type2 >::type type
Definition: HandleClassifier.h:54
Trk::PrepRawData
Definition: PrepRawData.h:62
Trk::MeasurementBase
Definition: MeasurementBase.h:58
GetAllXsec.entry
list entry
Definition: GetAllXsec.py:132
Muon::MuPatCandidateTool::m_compClusterCreator
ToolHandle< IMuonCompetingClustersOnTrackCreator > m_compClusterCreator
Definition: MuPatCandidateTool.h:157
merge_scale_histograms.doc
string doc
Definition: merge_scale_histograms.py:9
Trk::TrackStateOnSurface
represents the track state (measurement, material, fit parameters and quality) at a surface.
Definition: TrackStateOnSurface.h:71
name
std::string name
Definition: Control/AthContainers/Root/debug.cxx:221
Muon::MuPatCandidateTool::m_printer
PublicToolHandle< MuonEDMPrinterTool > m_printer
Definition: MuPatCandidateTool.h:163
Muon::MuPatCandidateTool::m_edmHelperSvc
ServiceHandle< IMuonEDMHelperSvc > m_edmHelperSvc
Definition: MuPatCandidateTool.h:161
Muon::MuPatCandidateTool::m_createCompetingROTsPhi
Gaudi::Property< bool > m_createCompetingROTsPhi
Definition: MuPatCandidateTool.h:168
Muon::MuPatCandidateTool::m_doMdtRecreation
Gaudi::Property< bool > m_doMdtRecreation
Definition: MuPatCandidateTool.h:170
a
TList * a
Definition: liststreamerinfos.cxx:10
h
ATH_MSG_WARNING
#define ATH_MSG_WARNING(x)
Definition: AthMsgStreamMacros.h:32
AthCommonMsg< AlgTool >::msg
MsgStream & msg() const
Definition: AthCommonMsg.h:24
SG::VarHandleBase::vhKey
SG::VarHandleKey & vhKey()
Return a non-const reference to the HandleKey.
Definition: StoreGate/src/VarHandleBase.cxx:623
Muon::MuonStationIndex::ChIndex
ChIndex
enum to classify the different chamber layers in the muon spectrometer
Definition: MuonStationIndex.h:15
Muon::MuonStationIndex::StIndex
StIndex
enum to classify the different station layers in the muon spectrometer
Definition: MuonStationIndex.h:23
python.Bindings.keys
keys
Definition: Control/AthenaPython/python/Bindings.py:798
xAOD::track
@ track
Definition: TrackingPrimitives.h:512
Trk::RIO_OnTrack::detectorElement
virtual const TrkDetElementBase * detectorElement() const =0
returns the detector element, assoicated with the PRD of this class
python.Constants.VERBOSE
int VERBOSE
Definition: Control/AthenaCommon/python/Constants.py:14
Muon::MuPatCandidateTool::recalculateCandidateSegmentContent
bool recalculateCandidateSegmentContent(MuPatTrack &candidate) const
recalculate the chamber indices on the candidate and reset them.
Definition: MuPatCandidateTool.cxx:380
AthCommonDataStore::declareGaudiProperty
Gaudi::Details::PropertyBase & declareGaudiProperty(Gaudi::Property< T > &hndl, const SG::VarHandleKeyType &)
specialization for handling Gaudi::Property<SG::VarHandleKey>
Definition: AthCommonDataStore.h:156
Muon::MuPatCandidateTool::addCluster
void addCluster(const Trk::MeasurementBase &meas, std::vector< const MuonClusterOnTrack * > &rots) const
extract MuonClusterOnTrack('s) from measurement
Definition: MuPatCandidateTool.cxx:292
Trk::TrackStateOnSurface::Measurement
@ Measurement
This is a measurement, and will at least contain a Trk::MeasurementBase.
Definition: TrackStateOnSurface.h:101
fitman.k
k
Definition: fitman.py:528
NSWL1::PadTriggerAdapter::segment
Muon::NSW_PadTriggerSegment segment(const NSWL1::PadTrigger &data)
Definition: PadTriggerAdapter.cxx:5
Muon::MuPatCandidateTool::m_hitHandler
ToolHandle< MuPatHitTool > m_hitHandler
Definition: MuPatCandidateTool.h:164
Identifier
Definition: IdentifierFieldParser.cxx:14