|
ATLAS Offline Software
|
Go to the documentation of this file.
8 ISvcLocator* pSvcLocator ) :
16 return StatusCode::SUCCESS;
44 ATH_MSG_ERROR(
"JetAttribute 'xAOD::JetAttribute::LArQuality' is not available." );
50 ATH_MSG_ERROR(
"JetAttribute 'xAOD::JetAttribute::Timing' is not available." );
56 ATH_MSG_ERROR(
"JetAttribute 'xAOD::JetAttribute::HECQuality' is not available." );
62 ATH_MSG_ERROR(
"JetAttribute 'xAOD::JetAttribute::NegativeE' is not available." );
66 std::vector< float > SumPtTrkPt1000;
68 ATH_MSG_ERROR(
"JetAttribute 'xAOD::JetAttribute::SumPtTrkPt1000' is not available." );
71 float chf = SumPtTrkPt1000.size() > 0 ? SumPtTrkPt1000.at(0)/
jet->pt() : -1;
75 ATH_MSG_ERROR(
"JetAttribute 'xAOD::JetAttribute::EMFrac' is not available." );
81 ATH_MSG_ERROR(
"JetAttribute 'xAOD::JetAttribute::HECFrac' is not available." );
85 float fracSamplingMax = 0;
87 ATH_MSG_ERROR(
"JetAttribute 'xAOD::JetAttribute::FracSamplingMax' is not available." );
91 if ( hecf > 0.5 && fabs( hecq ) > 0.5 )
return false;
93 if ( emf > 0.95 && fabs( jetQuality ) > 0.8 && fabs(
jet->eta() ) < 2.8 )
return false;
94 if ( fabs( jetTime ) > 25 )
return false;
95 if ( emf < 0.05 && chf < 0.05 && fabs(
jet->eta() ) < 2 )
return false;
96 if ( emf< 0.05 && fabs(
jet->eta() ) >= 2 )
return false;
97 if ( fracSamplingMax > 0.99 && fabs(
jet->eta() ) < 2 )
return false;
103 const std::string&
jetType )
const {
105 if (
jet->isAvailable<
float >(
"Jvt" ) ==
false ) {
110 float jvt =
jet->auxdata<
float >(
"Jvt" );
111 double jvtCut = 0.59;
112 if (
jetType ==
"AntiKt4EMPFlowJets" )
117 if ( fabs(
jet->eta() ) >= 2.4 )
127 if ( vertexContainer->
size() == 0 ) {
128 ATH_MSG_WARNING(
"Vertex Container has size 0! This can't be right!" );
132 for (
unsigned int i(0);
i<vertexContainer->
size();
i++ ) {
138 ATH_MSG_DEBUG(
"None of the vertexes in the vertex container is a primary vertex!" );
140 return vertexContainer->
at(0);
144 int matchedOffJetIndex = -1;
147 TLorentzVector onJet_4vec, offJet_4vec;
148 onJet_4vec.SetPtEtaPhiM(onJet->
pt(), onJet->
eta(), onJet->
phi(), onJet->
m());
153 offJet_4vec.SetPtEtaPhiM(offJet->
pt(), offJet->
eta(), offJet->
phi(), offJet->
m());
154 double deltaR = onJet_4vec.DeltaR( offJet_4vec );
157 if (
deltaR > 0.1 )
continue;
158 if (
deltaR < minDr || matchedOffJetIndex == -1 ) {
160 matchedOffJetIndex =
index;
164 ATH_MSG_DEBUG(
"matchedOffJetIndex: " << matchedOffJetIndex );
165 return matchedOffJetIndex;
bool passTriggerJetKinematicSelection(const xAOD::Jet *) const
Gaudi::Property< float > m_minJetEta
Gaudi::Property< float > m_minTrigJetPt
FTAGValidationAlgorithm()
bool passJetQualitySelection(const xAOD::Jet *) const
virtual double phi() const
The azimuthal angle ( ) of the particle.
::StatusCode StatusCode
StatusCode definition for legacy code.
Gaudi::Property< float > m_maxTrigJetEta
Gaudi::Property< float > m_minJetPt
StatusCode initialize(bool used=true)
If this object is used as a property, then this should be called during the initialize phase.
SG::ReadHandleKey< xAOD::EventInfo > m_eventInfoKey
virtual double eta() const
The pseudorapidity ( ) of the particle.
bool passJetJVTSelection(const xAOD::Jet *, const std::string &jetType="AntiKt4EMTopoJets") const
virtual ~FTAGValidationAlgorithm()
virtual double m() const
The invariant mass of the particle.
Class describing a Vertex.
#define ATH_MSG_WARNING(x)
const T * at(size_type n) const
Access an element, as an rvalue.
Gaudi::Property< float > m_maxJetEta
virtual double pt() const
The transverse momentum ( ) of the particle.
bool passJetKinematicSelection(const xAOD::Jet *) const
size_type size() const noexcept
Returns the number of elements in the collection.
virtual StatusCode initialize()
const xAOD::Vertex * getPrimaryVertex(const xAOD::VertexContainer *) const
int getMatchedOfflineJetIndex(const xAOD::Jet *, std::vector< const xAOD::Jet * >) const