ATLAS Offline Software
GradedTrack.cxx
Go to the documentation of this file.
1 /*
2  Copyright (C) 2002-2023 CERN for the benefit of the ATLAS collaboration
3 */
4 
7 #include "GaudiKernel/MsgStream.h"
8 #include <iostream>
9 #include <sys/types.h>
10 
13 
14 namespace Analysis {
15 
16  // GradedTrack::GradedTrack(const xAOD::TrackParticle* trk, TrackGrade grd) {
18  track(trk), grade(grd) {
19  // this->track = trk;
20  // this->grade = grd;
21  }
22 
24  }
25 
26  TrackGradePartition::TrackGradePartition(const std::string& definition,
27  const ITrackGradeFactory& trackGradeFactory) {
28 
29  const TrackGradesDefinition & myTrackGradesDefinition = trackGradeFactory.getTrackGradesDefinition();
30 
31  // parse definition to extract grades separated by + sign:
32  const std::string delim("+");
33  std::string::size_type sPos, sEnd, sLen;
34  sPos = definition.find_first_not_of(delim);
35  while ( sPos != std::string::npos ) {
36  sEnd = definition.find_first_of(delim, sPos);
37  if(sEnd==std::string::npos) sEnd = definition.length();
38  sLen = sEnd - sPos;
39  std::string grade = definition.substr(sPos,sLen);
40  // add new grade to this partition:
41  const TrackGrade* tgrade(myTrackGradesDefinition.getGrade(grade));
42  if (tgrade==0)
43  {
44  throw std::string("#BTAG# Error: the following grade ") + grade + std::string(" could not be found in the list from TrackGradeFactory ");
45  }
46  m_grades.push_back(TrackGrade(*tgrade));
47  sPos = definition.find_first_not_of(delim, sEnd);
48  }
49  }
50 
52  }
53 
54  void TrackGradePartition::add(const TrackGrade& grade) {
55  m_grades.push_back(grade);
56  }
57 
58  const std::vector<TrackGrade>& TrackGradePartition::grades() const {
59  return m_grades;
60  }
61 
62  const std::string TrackGradePartition::suffix() const {
63  std::string suf("");
64  for(uint i=0;i<m_grades.size();i++) {
65  if(0==i) {
66  suf += m_grades[i].gradeString();
67  } else {
68  suf += ("_" + m_grades[i].gradeString());
69  }
70  }
71  return suf;
72  }
73 
75  return m_grades.size();
76  }
77 
78  MsgStream& operator<<( MsgStream& out, const TrackGradePartition& part) {
79  out << "#BTAG# GradePartition: [ ";
80  for(int i=0;i<part.size();i++) out<<" "<<part.grades()[i].gradeString();
81  out << " ]";
82  return out;
83  }
84  std::ostream& operator<<( std::ostream& out, const TrackGradePartition& part) {
85  out << "#BTAG# GradePartition: [ ";
86  for(int i=0;i<part.size();i++) out<<" "<<part.grades()[i].gradeString();
87  out << " ]";
88  return out;
89  }
90 }
LArG4FSStartPointFilter.part
part
Definition: LArG4FSStartPointFilter.py:21
ITrackGradeFactory.h
Analysis::TrackGrade
Definition: TrackGrade.h:11
Analysis::TrackGradePartition::add
void add(const TrackGrade &)
Definition: GradedTrack.cxx:54
Analysis::TrackGradesDefinition::getGrade
const TrackGrade * getGrade(const std::string &) const
Definition: TrackGradesDefinition.cxx:59
Analysis::TrackGradesDefinition
Definition: TrackGradesDefinition.h:15
Analysis::TrackGradePartition
Definition: GradedTrack.h:43
python.AthDsoLogger.out
out
Definition: AthDsoLogger.py:71
Analysis::GradedTrack::GradedTrack
GradedTrack(const tracklink_t &, const TrackGrade &)
Definition: GradedTrack.cxx:17
uint
unsigned int uint
Definition: LArOFPhaseFill.cxx:20
GradedTrack.h
Analysis::TrackGradePartition::grades
const std::vector< TrackGrade > & grades() const
Definition: GradedTrack.cxx:58
Analysis::ITrackGradeFactory
Definition: ITrackGradeFactory.h:47
TrackGradesDefinition.h
lumiFormat.i
int i
Definition: lumiFormat.py:92
Analysis::TrackGradePartition::~TrackGradePartition
~TrackGradePartition()
Definition: GradedTrack.cxx:51
Analysis
The namespace of all packages in PhysicsAnalysis/JetTagging.
Definition: BTaggingCnvAlg.h:20
Analysis::TrackGradePartition::TrackGradePartition
TrackGradePartition()
Definition: GradedTrack.cxx:23
Analysis::TrackGradePartition::m_grades
std::vector< TrackGrade > m_grades
Definition: GradedTrack.h:53
Analysis::ITrackGradeFactory::getTrackGradesDefinition
virtual const TrackGradesDefinition & getTrackGradesDefinition() const =0
TrackGrade.h
Analysis::TrackGradePartition::size
int size() const
Definition: GradedTrack.cxx:74
Analysis::TrackGradePartition::suffix
const std::string suffix() const
Definition: GradedTrack.cxx:62
Analysis::operator<<
MsgStream & operator<<(MsgStream &out, const IPInfoBase &)
output.
Definition: IPInfoBase.cxx:47
xAOD::track
@ track
Definition: TrackingPrimitives.h:512