ATLAS Offline Software
DenseEnvironmentsAmbiguityScoreProcessorTool.cxx
Go to the documentation of this file.
1 /*
2  Copyright (C) 2002-2023 CERN for the benefit of the ATLAS collaboration
3 */
4 
6 #include "TrackScoringTool.h"
11 #include "TrkTrack/TrackInfo.h"
13 
14 #include <map>
15 #include <iterator>
16 #include "TString.h"
17 
22 
23 //==================================================================================================
25  const std::string& n,
26  const IInterface* p )
27  :
28  AthAlgTool(t,n,p),
29  m_etaBounds{0.8, 1.6, 2.5,4.0},
30  m_stat(m_etaBounds)
31 {
32 
33  declareInterface<ITrackAmbiguityScoreProcessorTool>(this);
34  declareProperty("SplitClusterMap_old" , m_splitClusterMapKey_last);
35  declareProperty("SplitClusterMap_new" , m_splitClusterMapKey);
36  declareProperty("sharedProbCut" , m_sharedProbCut = 0.3);
37  declareProperty("sharedProbCut2" , m_sharedProbCut2 = 0.3);
38  declareProperty("etaBounds" , m_etaBounds,"eta intervals for internal monitoring");
39 
40 }
41 //==================================================================================================
42 
44 //==================================================================================================
45 
48  StatusCode sc = StatusCode::SUCCESS;
49  ATH_CHECK( m_scoringTool.retrieve());
50  ATH_CHECK( m_assoTool.retrieve()) ;
51  ATH_CHECK( m_assoToolNotGanged.retrieve( DisableTool{m_assoToolNotGanged.empty()} )) ;
52  ATH_CHECK( m_assoMapName.initialize(!m_assoMapName.key().empty()) );
53 
54  ATH_CHECK(m_splitProbTool.retrieve( DisableTool{m_splitProbTool.empty()} ));
55  ATH_CHECK(m_clusterSplitProbContainerIn.initialize(!m_clusterSplitProbContainerIn.key().empty()) );
56  ATH_CHECK(m_clusterSplitProbContainerOut.initialize(!m_clusterSplitProbContainerOut.key().empty()) );
57 
58  ATH_CHECK( m_splitClusterMapKey_last.initialize(!m_splitClusterMapKey_last.key().empty()) );
59  ATH_CHECK( m_splitClusterMapKey.initialize(!m_splitClusterMapKey.key().empty()) );
60 
61  ATH_CHECK(m_observerTool.retrieve(DisableTool{m_observerTool.empty()}));
62 
63  if (m_etaBounds.size() != Counter::nRegions) {
64  ATH_MSG_FATAL("There must be exactly " << (Counter::nRegions) << " eta bounds but "
65  << m_etaBounds.size() << " are set." );
66  return StatusCode::FAILURE;
67  }
68 
69  return sc;
70 }
71 //==================================================================================================
72 
75  return StatusCode::SUCCESS;
76 }
77 
78 void
80  if (msgLvl(MSG::INFO)) {
81  MsgStream &out=msg(MSG::INFO);
82  out << " -- statistics " << "\n";
83  std::lock_guard<std::mutex> lock( m_statMutex );
84  dumpStat(out);
85  out << endmsg;
86  }
87 }
88 
89 
90 //==================================================================================================
91 
95 void
97  Trk::TracksScores* trackScoreTrackMap) const{
98  const EventContext& ctx = Gaudi::Hive::currentContext();
99  InDet::PixelGangedClusterAmbiguities *splitClusterMap = nullptr;
100  if(!m_splitClusterMapKey.key().empty()){
101  if(!m_splitClusterMapKey_last.key().empty()){
102  SG::ReadHandle<InDet::PixelGangedClusterAmbiguities> splitClusterMapHandle_last(m_splitClusterMapKey_last,ctx);
103  if ( !splitClusterMapHandle_last.isValid() ){
104  ATH_MSG_ERROR("Could not read last splitClusterMap.");
105  }
106  splitClusterMap = new InDet::PixelGangedClusterAmbiguities(*splitClusterMapHandle_last);
107  }
108  else{
109  splitClusterMap = new InDet::PixelGangedClusterAmbiguities();
110  }
111  }
112 
114  if (!m_clusterSplitProbContainerIn.key().empty()) {
115  splitProbContainerIn = SG::ReadHandle( m_clusterSplitProbContainerIn, ctx);
116  if (!splitProbContainerIn.isValid()) {
117  ATH_MSG_ERROR( "Failed to get input cluster split probability container " << m_clusterSplitProbContainerIn.key());
118  }
119  }
120  std::unique_ptr<Trk::ClusterSplitProbabilityContainer> splitProbContainerCleanup(!m_clusterSplitProbContainerIn.key().empty()
121  ? std::make_unique<ClusterSplitProbabilityContainer>(*splitProbContainerIn)
122  : std::make_unique<ClusterSplitProbabilityContainer>());
124  Trk::ClusterSplitProbabilityContainer *splitProbContainer;
125 
126  // Have to write the ClusterSplitProbabilityContainer first, to allow child tools to already use this new container.
127  if (!m_clusterSplitProbContainerOut.key().empty()) {
128  splitProbContainerHandle = SG::WriteHandle<Trk::ClusterSplitProbabilityContainer>( m_clusterSplitProbContainerOut, ctx);
129  if (splitProbContainerHandle.record(std::move(splitProbContainerCleanup)).isFailure()) {
130  ATH_MSG_FATAL( "Failed to record output cluster split probability container " << m_clusterSplitProbContainerOut.key());
131  }
132  splitProbContainer=splitProbContainerHandle.ptr();
133  }
134  else {
135  splitProbContainer=splitProbContainerCleanup.get();
136  }
137 
138  addNewTracks(tracks, trackScoreTrackMap);
139  std::unique_ptr<Trk::PRDtoTrackMap> prdToTrackMap( m_assoToolNotGanged.isEnabled()
140  ? m_assoToolNotGanged->createPRDtoTrackMap()
141  : m_assoTool->createPRDtoTrackMap() );
142  overlappingTracks(trackScoreTrackMap, splitClusterMap, *splitProbContainer, *prdToTrackMap);
143  if (!m_assoMapName.key().empty()) {
144  if (SG::WriteHandle<Trk::PRDtoTrackMap>(m_assoMapName,ctx).record(
145  (m_assoToolNotGanged.isEnabled()
146  ? m_assoToolNotGanged->reduceToStorableMap(std::move(prdToTrackMap))
147  : m_assoTool->reduceToStorableMap(std::move(prdToTrackMap)) )).isFailure()) {
148  ATH_MSG_FATAL("Failed to add PRD to track association map " << m_assoMapName.key() << ".");
149  }
150  }
151  if(!m_splitClusterMapKey.key().empty()){
152  SG::WriteHandle<InDet::PixelGangedClusterAmbiguities> splitClusterMapHandle(m_splitClusterMapKey,ctx);
153  splitClusterMapHandle = std::unique_ptr<InDet::PixelGangedClusterAmbiguities>(splitClusterMap);
154  if( !splitClusterMapHandle.isValid() ){
155  ATH_MSG_ERROR("Could not record splitClusterMap.");
156  }
157  }
158 }
159 
160 
161 //==================================================================================================
162 void
164  Trk::TracksScores* trackScoreTrackMap) const{
165  Counter stat(m_etaBounds);
166  stat.newEvent();
167  std::unique_ptr<Trk::PRDtoTrackMap> prdToTrackMap( m_assoTool->createPRDtoTrackMap() );
168  PrdSignatureSet prdSigSet;
169  ATH_MSG_DEBUG ("Number of tracks at Input: "<<tracks.size());
170  const std::array<ScoreCategory, 3> categoryMapping {ScoreCategory::kNcandScoreZero, ScoreCategory::kNcandDouble, ScoreCategory::kNaccept};
171  constexpr bool dropDuplicateTracks{true};
172  int nZeroScore = 0;
173  int nDuplicates = 0;
174  int nToMap = 0;
175  for(const Track* pThisTrack : tracks) {
176  ATH_MSG_VERBOSE ("Processing track candidate "<<pThisTrack);
177  stat.incrementCounterByRegion(ScoreCategory::kNcandidates,pThisTrack); // @TODO should go to the score processor
178  TrackScore score = m_scoringTool->score(*pThisTrack);
179  const auto category =
181  dropDuplicateTracks,
182  m_assoTool, *prdToTrackMap,
183  prdSigSet);
184  if (category<categoryMapping.size()) {
185  stat.incrementCounterByRegion(categoryMapping[category],pThisTrack);
186  }
187  ATH_MSG_DEBUG(AmbiguityProcessor::debugMessage[category]);
188 
190  ATH_MSG_VERBOSE ("Track ("<< pThisTrack <<") has score "<<score);
191  trackScoreTrackMap->push_back(std::make_pair(pThisTrack, -score));
192  if (m_observerTool.isEnabled()) {
193  nToMap++;
194  }
195  } else if (m_observerTool.isEnabled() &&
197  int input_track_uid = AmbiguityProcessor::getUid();
198  m_observerTool->addInputTrack(input_track_uid, *pThisTrack);
199  m_observerTool->updateTrackMap(input_track_uid,
200  static_cast<double>(score),
203  nZeroScore++;
204  } else if (m_observerTool.isEnabled() &&
206  int input_track_uid = AmbiguityProcessor::getUid();
207  m_observerTool->addInputTrack(input_track_uid, *pThisTrack);
208  m_observerTool->updateTrackMap(input_track_uid,
209  static_cast<double>(score),
212  nDuplicates++;
213  }
214  }
215  {
216  std::lock_guard<std::mutex> lock(m_statMutex);
217  m_stat += stat;
218  }
219  if (m_observerTool.isEnabled()){
220  if ((unsigned int) (nZeroScore+nDuplicates+nToMap) != tracks.size()){
221  ATH_MSG_ERROR("(nZeroScore+nDuplicates+nToMap) = "<<nZeroScore+nDuplicates+nToMap<<" but tracks.size() = "<<tracks.size());
222  }
223  else{
224  ATH_MSG_DEBUG("Track observer too sanity check passed!");
225  }
226  }
227 }
228 
229 //==================================================================================================
230 void
232  const Trk::TrackParameters*> & clusterTrkPara,
233  InDet::PixelGangedClusterAmbiguities *splitClusterMap,
234  Trk::ClusterSplitProbabilityContainer &splitProbContainer) const
235 {
236 
237  // Recalculate the split prob with the use of the track parameters
238  InDet::PixelClusterSplitProb splitProb = m_splitProbTool->splitProbability( *clusterTrkPara.first, *clusterTrkPara.second );
239  // update the split prob information on the cluster -- the use of the split flag is now questionable -- possible itP will now indicate if the cluster is shared between multiple tracks
240  const InDet::PixelCluster* pixelCluster = clusterTrkPara.first;
241  if (msgLvl(MSG::DEBUG)) {
243  ? splitProbContainer.splitProbability(pixelCluster)
245 
246  ATH_MSG_DEBUG ( "---- "<< pixelCluster->globalPosition().perp()
247  <<" Updating split probs 1: " << pixelCluster->identify() << ": Old " << splitProbCurrent.splitProbability1() << " New " << splitProb.splitProbability(2)
248  <<" Probs 2: Old " << splitProbCurrent.splitProbability2() << " New " << splitProb.splitProbability(3)
249  << "\n"
250  << " --- pixelCluster: " << *pixelCluster
251  << "\n"
252  << " --- trk params: " << *clusterTrkPara.second );
253  }
255  splitProbNew = splitProbContainer.setSplitInformation(pixelCluster, splitProb.splitProbability(2), splitProb.splitProbability(3));
256 
257  if(splitClusterMap){
258  if( splitProbNew.splitProbability2() >= m_sharedProbCut2){
259  splitClusterMap->insert(std::make_pair( pixelCluster, pixelCluster ) );
260  splitClusterMap->insert(std::make_pair( pixelCluster, pixelCluster ) );
261  } else if ( splitProbNew.splitProbability1() >= m_sharedProbCut ){
262  splitClusterMap->insert(std::make_pair( pixelCluster, pixelCluster ) );
263  }
264  }
265 
266 }
267 
268 //==================================================================================================
269 void
271  InDet::PixelGangedClusterAmbiguities *splitClusterMap,
272  Trk::ClusterSplitProbabilityContainer &splitProbContainer,
273  Trk::PRDtoTrackMap &prdToTrackMap) const
274 {
275  const Trk::IPRDtoTrackMapTool *the_asso_tool = (m_assoToolNotGanged.isEnabled() ? &(*m_assoToolNotGanged) : &(*m_assoTool));
276  // Function currently does nothing useful except for printing debug information
277  ATH_MSG_DEBUG ("Starting to resolve overlapping tracks");
278  // Map to add all pixel clusters on track to
279  std::map< const InDet::PixelCluster*, const Trk::TrackParameters* > setOfPixelClustersOnTrack;
280  std::map< const InDet::PixelCluster*, const Trk::Track* > setOfPixelClustersToTrackAssoc;
281  // Fill pixel cluster into the above map
282  // Fill all PRD infromation into the association tool
283  for( const std::pair<const Track*, float>& scoredTracksItem : *scoredTracks ){
284  // clean it out to make sure not to many shared hits
285  ATH_MSG_VERBOSE ("--- Adding next track "<<scoredTracksItem.first
286  << ":" << (scoredTracksItem.first->trackParameters() ? scoredTracksItem.first->trackParameters()->front()->pT() : -1.)
287  << ", " << scoredTracksItem.first->measurementsOnTrack()->size()
288  <<"\t with score "<<-scoredTracksItem.second << " to PRD map");
289 
290  // This should only be done in region defined by Jets
291  // ..... for now let do the whole detector coudl be slow
292  if(the_asso_tool->addPRDs( prdToTrackMap, *scoredTracksItem.first ).isSuccess()){
293  ATH_MSG_VERBOSE("--- Added hits to the association tool");
294  } else {
295  ATH_MSG_VERBOSE("--- Failed to add hits to the association tool");
296  continue;
297  }
298  // get all prds on 'track'
299  const Trk::TrackStates* tsosVec = scoredTracksItem.first->trackStateOnSurfaces();
300  if(!tsosVec){
301  ATH_MSG_WARNING("TSOS vector does not exist");
302  continue;
303  }
304  ATH_MSG_VERBOSE("---> Looping over TSOS's to allow for cluster updates: "<< tsosVec->size() );
305  Trk::TrackStates::const_iterator tsos = tsosVec->begin();
306  for (; tsos != tsosVec->end(); ++tsos) {
307  const MeasurementBase* measurement = (*tsos)->measurementOnTrack();
308  if(!measurement || ! (*tsos)->trackParameters()){
309  ATH_MSG_VERBOSE("---- TSOS has either no measurement or parameters: "<< measurement << " " << (*tsos)->trackParameters() );
310  continue;
311  }
312  if (!measurement->type(Trk::MeasurementBaseType::RIO_OnTrack)) continue;
313  const Trk::RIO_OnTrack* rio = static_cast<const Trk::RIO_OnTrack*>(measurement);
315  const InDet::PixelCluster* pixel = static_cast<const InDet::PixelCluster*> ( rio->prepRawData() );
316  assert( pixel);
317  //Update the pixel split information if the element is unique (The second element of the pair indiciates if the element was inserted into the map)
318  auto ret = setOfPixelClustersOnTrack.insert(std::make_pair( pixel, (*tsos)->trackParameters() ));
319  if (ret.second && m_splitProbTool.isEnabled()) {
320  updatePixelSplitInformationForCluster( *(ret.first), splitClusterMap, splitProbContainer);
321  }
322  setOfPixelClustersToTrackAssoc.insert( std::make_pair( pixel, scoredTracksItem.first ) );
323  }
324  }
325  }
326  if (msgLvl(MSG::VERBOSE)) {
327  // now loop as long as map is not empty
328  std::vector< std::pair< const InDet::PixelCluster*, const Trk::Track* > > sorted;
329  sorted.reserve( setOfPixelClustersToTrackAssoc.size() );
330  for( const std::pair< const InDet::PixelCluster* const, const Trk::Track* > &pixelTrackItem : setOfPixelClustersToTrackAssoc ) {
331  sorted.emplace_back(pixelTrackItem );
332  }
333  std::sort( sorted.begin(), sorted.end(), [](const std::pair< const InDet::PixelCluster*, const Trk::Track* > &a,
334  const std::pair< const InDet::PixelCluster*, const Trk::Track* > &b) {
335  return a.first->getHashAndIndex().collHash() < b.first->getHashAndIndex().collHash()
336  || ( a.first->getHashAndIndex().collHash() == b.first->getHashAndIndex().collHash()
337  && a.first->getHashAndIndex().objIndex() < b.first->getHashAndIndex().objIndex() );
338  });
339  for (const std::pair< const InDet::PixelCluster*, const Trk::Track* > &pixelTrackItem : sorted) {
340  ATH_MSG_VERBOSE ("---- Checking if track shares pixel hits if other tracks: " << pixelTrackItem.first << " with R " << pixelTrackItem.first->globalPosition().perp() );
341  // find out how many tracks use this hit already
342  Trk::PRDtoTrackMap::ConstPrepRawDataTrackMapRange range = prdToTrackMap.onTracks( *pixelTrackItem.first );
343  int numberOfTracksWithThisPrd = std::distance(range.first,range.second);
344  if (msgLvl(MSG::VERBOSE)) {
345  TString tracks("---- number of tracks with this shared Prd: ");
346  tracks += numberOfTracksWithThisPrd;
347  for (Trk::IPRD_AssociationTool::ConstPRD_MapIt it =range.first; it != range.second;++it ){
348  tracks += " ";
349  tracks += Form( " %p",(void*)(it->second));
350  double pt = (it->second->trackParameters() ? it->second->trackParameters()->front()->pT() : -1);
351  tracks += Form(":%.3f", pt);
352  tracks += Form(",%i",static_cast<int>(it->second->measurementsOnTrack()->size()));
353  }
354  ATH_MSG_VERBOSE (tracks);
355  }
356  }
357  }
358 }
359 
360 void
362 {
363  auto parseFileName=[](const std::string & fullname){
364  auto dotPosition = fullname.rfind('.');
365  auto slashPosition = fullname.rfind('/');
366  auto stringLength = dotPosition - slashPosition;
367  return fullname.substr(slashPosition, stringLength);
368  };
369  std::streamsize ss = out.precision();
370  int iw=9;
371  out << "Output from ";
372  out << parseFileName(__FILE__);
373  out << "::";
374  out << __func__;
375  out << "\n";
376  out << "------------------------------------------------------------------------------------" << "\n";
377  out << " Number of events processed : "<< m_stat.globalCount(Counter::nEvents) << "\n";
378  if (m_stat.globalCount(Counter::nInvalidTracks)>0) {
379  out << " Number of invalid tracks : "<< m_stat.globalCount(Counter::nInvalidTracks) << "\n";
380  }
381  if (m_stat.globalCount(Counter::nTracksWithoutParam)>0) {
382  out << " Tracks without parameters : "<< m_stat.globalCount(Counter::nTracksWithoutParam) << "\n";
383  }
384  out << " statistics by eta range ------All---Barrel---Trans.-- Endcap-- Forwrd-- " << "\n";
385  out << "------------------------------------------------------------------------------------" << "\n";
386  out << m_stat.dumpRegions(" Number of candidates at input :", ScoreCategory::kNcandidates,iw);
387  out << m_stat.dumpRegions(" - candidates rejected score 0 :", ScoreCategory::kNcandScoreZero,iw);
388  out << m_stat.dumpRegions(" - candidates rejected as double :", ScoreCategory::kNcandDouble,iw);
389  out << "------------------------------------------------------------------------------------" << "\n";
390  out << std::setiosflags(std::ios::fixed | std::ios::showpoint) << std::setprecision(2)
391  << " definition: ( 0.0 < Barrel < " << m_etaBounds[Counter::iBarrel] << " < Transition < " << m_etaBounds[Counter::iTransi]
392  << " < Endcap < " << m_etaBounds[Counter::iEndcap] << " < Forward < " << m_etaBounds[Counter::iForwrd] << " )" << "\n";
393  out << "------------------------------------------------------------------------------------" << "\n";
394  out << std::setprecision(ss);
395 }
396 
PixelID.h
This is an Identifier helper class for the Pixel subdetector. This class is a factory for creating co...
ATH_MSG_FATAL
#define ATH_MSG_FATAL(x)
Definition: AthMsgStreamMacros.h:34
DataModel_detail::const_iterator
Const iterator class for DataVector/DataList.
Definition: DVLIterator.h:82
TrackScoringTool.h
python.PerfMonSerializer.p
def p
Definition: PerfMonSerializer.py:743
AmbiguityProcessor::TrackAccepted
@ TrackAccepted
Definition: AmbiguityProcessorUtility.h:24
TrackParameters.h
AmbiguityProcessor::categoriseTrack
TrackFilterCategory categoriseTrack(const Trk::Track &track, const Trk::TrackScore &score, const bool dropDuplicates, const AssociationTool &associate, AssociationMap &map, DuplicationCheckSet &set)
Definition: AmbiguityProcessorUtility.cxx:15
PowhegControl_ttHplus_NLO.ss
ss
Definition: PowhegControl_ttHplus_NLO.py:83
xAOD::addNewTracks
@ addNewTracks
Definition: TrackingPrimitives.h:461
Trk::PRDtoTrackMap::onTracks
PrepRawDataTrackMapRange onTracks(const PrepRawData &prd)
get the Tracks associated with this PrepRawData.
xAOD::trackScoreZero
@ trackScoreZero
Definition: TrackingPrimitives.h:476
InDet::PixelClusterSplitProb
Definition: PixelClusterSplitProb.h:25
Trk::ClusterSplitProbabilityContainer::setSplitInformation
ProbabilityInfo & setSplitInformation(const PrepRawData *cluster, float prob1, float prob2)
Definition: ClusterSplitProbabilityContainer.h:45
PixelCluster.h
Trk::PRDtoTrackMap
Definition: PRDtoTrackMap.h:17
InDet::PixelGangedClusterAmbiguities
std::multimap< const SiCluster *, const SiCluster *, ::InDet::compare_SiCluster > PixelGangedClusterAmbiguities
Definition: PixelGangedClusterAmbiguities.h:46
SG::ReadHandle
Definition: StoreGate/StoreGate/ReadHandle.h:70
AmbiguityProcessor::TrackIsDuplicate
@ TrackIsDuplicate
Definition: AmbiguityProcessorUtility.h:24
Trk::ClusterSplitProbabilityContainer::ProbabilityInfo
Definition: ClusterSplitProbabilityContainer.h:22
Trk::DenseEnvironmentsAmbiguityScoreProcessorTool::finalize
virtual StatusCode finalize() override final
Definition: DenseEnvironmentsAmbiguityScoreProcessorTool.cxx:74
Trk::IPRDtoTrackMapTool::addPRDs
virtual StatusCode addPRDs(Trk::PRDtoTrackMap &prd_to_track_map, const Track &track) const =0
Add the PRDs from this track to the store.
skel.it
it
Definition: skel.GENtoEVGEN.py:423
test_pyathena.pt
pt
Definition: test_pyathena.py:11
python.AthDsoLogger.out
out
Definition: AthDsoLogger.py:71
Trk::DenseEnvironmentsAmbiguityScoreProcessorTool::~DenseEnvironmentsAmbiguityScoreProcessorTool
virtual ~DenseEnvironmentsAmbiguityScoreProcessorTool()
Trk::RIO_OnTrack::rioType
virtual bool rioType(RIO_OnTrackType::Type type) const =0
Method checking the Rio On Track type.
Trk::RIO_OnTrack
Definition: RIO_OnTrack.h:70
read_hist_ntuple.t
t
Definition: read_hist_ntuple.py:5
ATH_MSG_VERBOSE
#define ATH_MSG_VERBOSE(x)
Definition: AthMsgStreamMacros.h:28
SCT_Cluster.h
AthenaPoolTestRead.sc
sc
Definition: AthenaPoolTestRead.py:27
Trk::DenseEnvironmentsAmbiguityScoreProcessorTool::overlappingTracks
void overlappingTracks(const TracksScores *scoreTrackMap, InDet::PixelGangedClusterAmbiguities *splitClusterMap, Trk::ClusterSplitProbabilityContainer &splitProbContainer, Trk::PRDtoTrackMap &prd_to_track_map) const
Find SiS Tracks that share hits in the track score map.
Definition: DenseEnvironmentsAmbiguityScoreProcessorTool.cxx:270
Trk::DenseEnvironmentsAmbiguityScoreProcessorTool::process
virtual void process(const TrackCollection &tracks, TracksScores *trackScoreTrackMap) const override final
Do actual processing of event.
Definition: DenseEnvironmentsAmbiguityScoreProcessorTool.cxx:96
ATH_MSG_ERROR
#define ATH_MSG_ERROR(x)
Definition: AthMsgStreamMacros.h:33
ActsUtils::dumpStat
void dumpStat(T_Stream &out, const Stat &stat)
Dump the given statistics object to the given output stream.
Definition: StatUtils.h:62
ret
T ret(T t)
Definition: rootspy.cxx:260
beamspotman.n
n
Definition: beamspotman.py:731
endmsg
#define endmsg
Definition: AnalysisConfig_Ntuple.cxx:63
EL::StatusCode
::StatusCode StatusCode
StatusCode definition for legacy code.
Definition: PhysicsAnalysis/D3PDTools/EventLoop/EventLoop/StatusCode.h:22
SG::WriteHandle::ptr
pointer_type ptr()
Dereference the pointer.
ATH_MSG_DEBUG
#define ATH_MSG_DEBUG(x)
Definition: AthMsgStreamMacros.h:29
ReweightUtils.category
category
Definition: ReweightUtils.py:15
DenseEnvironmentsAmbiguityScoreProcessorTool.h
Trk::DenseEnvironmentsAmbiguityScoreProcessorTool::dumpStat
void dumpStat(MsgStream &out) const
Definition: DenseEnvironmentsAmbiguityScoreProcessorTool.cxx:361
TrackCollection.h
plotBeamSpotVxVal.range
range
Definition: plotBeamSpotVxVal.py:195
Trk::TrackScore
float TrackScore
Definition: TrackScore.h:10
ATH_CHECK
#define ATH_CHECK
Definition: AthCheckMacros.h:40
nEvents
int nEvents
Definition: fbtTestBasics.cxx:77
AmbiguityProcessor::ScoreIsZero
@ ScoreIsZero
Definition: AmbiguityProcessorUtility.h:24
Trk::MeasurementBase::type
virtual bool type(MeasurementBaseType::Type type) const =0
Interface method checking the type.
TrackSummary.h
Trk::ParametersBase
Definition: ParametersBase.h:55
DataVector< Trk::Track >
beamspotman.stat
stat
Definition: beamspotman.py:266
Trk::IPRDtoTrackMapTool
Interface for handling the mapping between Trk::Track and Trk::PrepRawData.
Definition: IPRDtoTrackMapTool.h:38
SG::ReadHandle::isValid
virtual bool isValid() override final
Can the handle be successfully dereferenced?
DerivationFramework::TriggerMatchingUtils::sorted
std::vector< typename T::value_type > sorted(T begin, T end)
Helper function to create a sorted vector from an unsorted one.
IPRD_AssociationTool.h
Trk::IPRD_AssociationTool::ConstPRD_MapIt
PrepRawDataTrackMap::const_iterator ConstPRD_MapIt
Definition: IPRD_AssociationTool.h:45
Trk::MeasurementBase
Definition: MeasurementBase.h:58
SG::WriteHandle::isValid
virtual bool isValid() override final
Can the handle be successfully dereferenced?
TrackInfo.h
RIO_OnTrack.h
plotBeamSpotMon.b
b
Definition: plotBeamSpotMon.py:77
Trk::ClusterSplitProbabilityContainer
Container to associate Cluster with cluster splitting probabilities.
Definition: ClusterSplitProbabilityContainer.h:17
Trk::DenseEnvironmentsAmbiguityScoreProcessorTool::addNewTracks
void addNewTracks(const TrackCollection &tracks, TracksScores *trackScoreTrackMap) const
Add passed TrackCollection, and Trk::PrepRawData from tracks to caches.
Definition: DenseEnvironmentsAmbiguityScoreProcessorTool.cxx:163
Trk::DenseEnvironmentsAmbiguityScoreProcessorTool::PrdSignatureSet
std::set< PrdSignature > PrdSignatureSet
Definition: DenseEnvironmentsAmbiguityScoreProcessorTool.h:56
Trk::RIO_OnTrack::prepRawData
virtual const Trk::PrepRawData * prepRawData() const =0
returns the PrepRawData (also known as RIO) object to which this RIO_OnTrack is associated.
Trk::MeasurementBaseType::RIO_OnTrack
@ RIO_OnTrack
Definition: MeasurementBase.h:49
Trk::TracksScores
std::vector< std::pair< const Track *, float > > TracksScores
Definition: ITrackAmbiguityProcessorTool.h:18
taskman.nDuplicates
int nDuplicates
Definition: taskman.py:152
xAOD::score
@ score
Definition: TrackingPrimitives.h:513
InDet::PixelCluster
Definition: InnerDetector/InDetRecEvent/InDetPrepRawData/InDetPrepRawData/PixelCluster.h:49
DataVector::end
const_iterator end() const noexcept
Return a const_iterator pointing past the end of the collection.
Trk::DenseEnvironmentsAmbiguityScoreProcessorTool::DenseEnvironmentsAmbiguityScoreProcessorTool
DenseEnvironmentsAmbiguityScoreProcessorTool(const std::string &, const std::string &, const IInterface *)
Definition: DenseEnvironmentsAmbiguityScoreProcessorTool.cxx:24
Trk::pixelCluster
@ pixelCluster
Definition: MeasurementType.h:22
SG::WriteHandle
Definition: StoreGate/StoreGate/WriteHandle.h:76
xAOD::duplicateTrack
@ duplicateTrack
Definition: TrackingPrimitives.h:477
a
TList * a
Definition: liststreamerinfos.cxx:10
SG::WriteHandle::record
StatusCode record(std::unique_ptr< T > data)
Record a const object to the store.
ATH_MSG_WARNING
#define ATH_MSG_WARNING(x)
Definition: AthMsgStreamMacros.h:32
DEBUG
#define DEBUG
Definition: page_access.h:11
AmbiguityProcessor::getUid
int getUid()
Definition: AmbiguityProcessorUtility.cxx:60
declareProperty
#define declareProperty(n, p, h)
Definition: BaseFakeBkgTool.cxx:15
Track
Definition: TriggerChamberClusterOnTrackCreator.h:21
AmbiguityProcessorUtility.h
Trk::ClusterSplitProbabilityContainer::ProbabilityInfo::splitProbability1
float splitProbability1() const
Definition: ClusterSplitProbabilityContainer.h:24
Trk::ClusterSplitProbabilityContainer::splitProbability
const ProbabilityInfo & splitProbability(const PrepRawData *cluster) const
Definition: ClusterSplitProbabilityContainer.h:35
Trk::DenseEnvironmentsAmbiguityScoreProcessorTool::initialize
virtual StatusCode initialize() override final
Definition: DenseEnvironmentsAmbiguityScoreProcessorTool.cxx:47
python.Constants.VERBOSE
int VERBOSE
Definition: Control/AthenaCommon/python/Constants.py:14
AthAlgTool
Definition: AthAlgTool.h:26
Trk::DenseEnvironmentsAmbiguityScoreProcessorTool::statistics
void statistics() override
statistics output to be called by algorithm during finalize.
Definition: DenseEnvironmentsAmbiguityScoreProcessorTool.cxx:79
Trk::RIO_OnTrackType::PixelCluster
@ PixelCluster
Definition: RIO_OnTrack.h:57
Amg::distance
float distance(const Amg::Vector3D &p1, const Amg::Vector3D &p2)
calculates the distance between two point in 3D space
Definition: GeoPrimitivesHelpers.h:54
Trk::DenseEnvironmentsAmbiguityScoreProcessorTool::updatePixelSplitInformationForCluster
void updatePixelSplitInformationForCluster(const std::pair< const InDet::PixelCluster *const, const Trk::TrackParameters * > &clusterTrkPara, InDet::PixelGangedClusterAmbiguities *splitClusterMap, Trk::ClusterSplitProbabilityContainer &splitProbContainer) const
Update pixel split information based using the fitted track.
Definition: DenseEnvironmentsAmbiguityScoreProcessorTool.cxx:231
DataVector::size
size_type size() const noexcept
Returns the number of elements in the collection.
Trk::ClusterSplitProbabilityContainer::getNoSplitProbability
static const ProbabilityInfo & getNoSplitProbability()
Definition: ClusterSplitProbabilityContainer.h:33
python.AutoConfigFlags.msg
msg
Definition: AutoConfigFlags.py:7
Trk::ClusterSplitProbabilityContainer::ProbabilityInfo::splitProbability2
float splitProbability2() const
Definition: ClusterSplitProbabilityContainer.h:25
SiliconTech::pixel
@ pixel
Trk::PRDtoTrackMap::ConstPrepRawDataTrackMapRange
std::pair< PrepRawDataTrackMap::const_iterator, PrepRawDataTrackMap::const_iterator > ConstPrepRawDataTrackMapRange
Definition: PRDtoTrackMap.h:44
DataVector::begin
const_iterator begin() const noexcept
Return a const_iterator pointing at the beginning of the collection.
AmbiCounter
Definition: AmbiCounter.h:16
InDet::PixelClusterSplitProb::splitProbability
double splitProbability(unsigned int nParticles=2) const
return method : total split probability
Definition: PixelClusterSplitProb.h:60