13#include "GaudiKernel/PhysicalConstants.h"
18 const std::string& name,
19 const IInterface* parent )
45 if ( *std::min_element( sizes.begin(), sizes.end() ) != *std::max_element( sizes.begin(), sizes.end() ) ) {
46 ATH_MSG_ERROR(
"Missconfiguration, cut properties listed above ( when INFO ) have different dimensions shortest: " << *std::min_element( sizes.begin(), sizes.end() ) <<
" longest " << *std::max_element( sizes.begin(), sizes.end() ) );
47 return StatusCode::FAILURE;
52 return StatusCode::SUCCESS;
71 MONtrackPt, MONtrackEta,
72 MONtrackd0, MONtrackd0Sig,
73 MONtrackNPixHits, MONtrackNSCTHits,
74 MONtrackIsoPt, MONtrackAggrIsoPt
81 auto trackPt= (track)->pt();
91 auto trackEta=std::abs( (track)->p4().
Eta() );
102 auto trackd0= std::abs((track)->d0());
122 uint8_t trackNPixHits=0;
130 uint8_t trackNSCTHits=0;
162 float CumulativePT = 0.0;
164 for (
auto trackIter = AllTracks->
begin(); trackIter != AllTracks->
end(); ++trackIter){
167 if( (*trackIter)==track)
continue;
168 if (track->p4().DeltaR((*trackIter)->p4()) >
m_IsoDR[cutIndex] )
continue;
179 if (iterSCT<=2 )
continue;
185 CumulativePT+=(*trackIter)->pt();
186 if(CumulativePT>=
m_IsoPt[cutIndex]) {
187 MONtrackAggrIsoPt=CumulativePT;
194 if ((*trackIter)->pt() > MONtrackIsoPt ) {
195 MONtrackIsoPt=(*trackIter)->pt();
198 if( (*trackIter)->pt()>=
m_IsoPt[cutIndex] ) {
208 MONtrackAggrIsoPt=CumulativePT;
213 MONtrackNPixHits=trackNPixHits;
214 MONtrackNSCTHits=trackNSCTHits;
216 MONtrackEta= trackEta;
218 MONtrackd0Sig= trackd0Sig;
228 for (
auto i: input ) {
230 if ( i.previousDecisionsIDs.count(
m_decisionId.numeric() ) == 0 ) {
235 if ( objDecision ==
true ) {
240 return StatusCode::SUCCESS;
246 for (
auto idx: passing )
248 return StatusCode::SUCCESS;
256 for (
size_t cutIndex = 0; cutIndex <
m_multiplicity; ++ cutIndex ) {
257 size_t trkIndex{ 0 };
258 for (
auto trkIter = input.begin(); trkIter != input.end(); ++trkIter, ++trkIndex ) {
260 if ( trkIter->previousDecisionsIDs.count(
m_decisionId.numeric() ) == 0 ) {
265 passingSelection[cutIndex].push_back( trkIndex );
270 if ( passingSelection[cutIndex].
empty() ) {
271 ATH_MSG_DEBUG(
"No object passed selection " << cutIndex <<
" rejecting" );
272 return StatusCode::SUCCESS;
276 std::set<size_t> passingIndices;
292 return StatusCode::SUCCESS;
#define ATH_MSG_VERBOSE(x)
#define CHECK(...)
Evaluate an expression and check for errors.
Header file to be included by clients of the Monitored infrastructure.
static const Attributes_t empty
const_iterator end() const noexcept
Return a const_iterator pointing past the end of the collection.
const_iterator begin() const noexcept
Return a const_iterator pointing at the beginning of the collection.
Group of local monitoring quantities and retain correlation when filling histograms
Declare a monitored scalar variable.
Class describing a TrackParticle.
It used to be useful piece of code for replacing actual SG with other store of similar functionality ...
void elementsInUniqueCombinations(const Index2DVec &indices, std::set< size_t > &participants, const std::function< bool(const Index1DVec &)> &filter)
std::vector< Index1DVec > Index2DVec
void addDecisionID(DecisionID id, Decision *d)
Appends the decision (given as ID) to the decision object.
double d0significance(const xAOD::TrackParticle *tp, double d0_uncert_beam_spot_2)
TrackParticleContainer_v1 TrackParticleContainer
Definition of the current "TrackParticle container version".
@ numberOfSCTHits
number of hits in SCT [unit8_t].
@ numberOfPixelHits
these are the pixel hits, including the b-layer [unit8_t].