ATLAS Offline Software
Public Member Functions | Protected Member Functions | Protected Attributes | Private Member Functions | Private Attributes | List of all members
TrigAFPDijetComboHypoTool Class Reference

#include <TrigAFPDijetComboHypoTool.h>

Inheritance diagram for TrigAFPDijetComboHypoTool:
Collaboration diagram for TrigAFPDijetComboHypoTool:

Public Member Functions

 TrigAFPDijetComboHypoTool (const std::string &type, const std::string &name, const IInterface *parent)
 
virtual ~TrigAFPDijetComboHypoTool ()
 
virtual StatusCode initialize () override
 
virtual StatusCode decide (Combo::LegDecisionsMap &passingLegs, const EventContext &ctx) const override
 retrieves the decisions associated to this decId, make their combinations and apply the algorithm More...
 
virtual HLT::Identifier decisionId () const
 retrieves this ComboHypoTool's chain's decision ID More...
 
StatusCode setLegMultiplicity (const Combo::MultiplicityReqMap &multiplicityRequiredMap)
 Sets the number of legs and the multiplicity required on each leg. More...
 
const std::vector< int > & legMultiplicity () const
 Gets the number of legs and the multiplicity required on each leg. More...
 
HLT::Identifier legDecisionId (size_t i) const
 Retrieves this ComboHypoTool's chain's decision ID for a given leg. More...
 
const std::vector< HLT::Identifier > & legDecisionIds () const
 Retrieves this ComboHypoTool's chain's decision IDs for all legs. More...
 
virtual StatusCode decideOnSingleObject (TrigCompositeUtils::Decision *, const std::vector< const TrigCompositeUtils::DecisionIDContainer * > &) const
 Alternate method called by BPhysics ComboHypoAlgs instead of the base method decide(...). More...
 

Protected Member Functions

StatusCode selectLegs (const Combo::LegDecisionsMap &IDCombMap, std::vector< std::vector< Combo::LegDecision >> &leg_decisions) const
 Creates the per-leg vectors of Decision objects starting from the initial LegDecision map, storing only those concerning this HypoTool's chain Pack the Decision objects in std::pair<DecisionID, ElementLink<Decision>> so the derived class' executeAlg function knows which leg each object is on. More...
 
void updateLegDecisionsMap (const std::vector< std::vector< Combo::LegDecision >> &passing_comb, Combo::LegDecisionsMap &passingLegs) const
 For when the tool accepts some/all combinations. More...
 
void eraseFromLegDecisionsMap (Combo::LegDecisionsMap &passingLegs) const
 For when the tool rejects all combinations. More...
 
void printDebugInformation (const Combo::LegDecisionsMap &passingLegs) const
 Print the output of the tool, after having removed failed Decision Objects. More...
 

Protected Attributes

Gaudi::Property< size_t > m_combinationsThresholdWarn
 
Gaudi::Property< size_t > m_combinationsThresholdBreak
 
Gaudi::Property< bool > m_modeOR
 
Gaudi::Property< bool > m_enableOverride
 

Private Member Functions

virtual bool executeAlg (const std::vector< Combo::LegDecision > &combination, const EventContext &ctx) const override
 Only a dummy implementation exists in ComboHypoToolBase. More...
 

Private Attributes

Gaudi::Property< std::string > m_protonTransportParamFileNameA {this,"protonTransportParamFileName1","final_parameterization_b1.txt","Name of the file with proton transport parameterization for A side"}
 Boolean corresponding to the decision to record the event based on the selection being met. More...
 
Gaudi::Property< std::string > m_protonTransportParamFileNameC {this,"protonTransportParamFileName2","final_parameterization_b2.txt","Name of the file with proton transport parameterization C side"}
 
ToolHandle< IAFPProtonTransportToolm_transportBeamA
 
ToolHandle< IAFPProtonTransportToolm_transportBeamC
 Proton transport parameterizaton object used in the proton position prediction for ATLAS C side. More...
 
Gaudi::Property< float > m_maxProtonDist {this,"maxProtonDist",2.0,"Cut on distance between measured and extrapolated proton"}
 Threshold for the radius distance between parameterization and measurements. More...
 
Gaudi::Property< float > m_maxProtonDiff_x {this,"maxProtonDiff_x",2.5,"Cut on x difference between measured and extrapolated proton"}
 Threshold for the x distance between parameterization and measurements. More...
 
Gaudi::Property< float > m_maxProtonDiff_y {this,"maxProtonDiff_y",2.5,"Cut on y difference between measured and extrapolated proton"}
 Threshold for the y distance between parameterization and measurements. More...
 
Gaudi::Property< float > m_beamEnergy {this,"beamEnergy",6500.0,"Energy of one beam i.e. half of centre-of-mass energy"}
 energy of one beam i.e. half of centre-of-mass energy More...
 
float m_totalEnergy = 2*m_beamEnergy
 beams centre-of-mass energy 2*m_beamEnergy More...
 
Gaudi::Property< float > m_protonPosShift_x {this,"protonPosShift_x",0.0,"Expected difference in x position between measured and predicted proton"}
 Shift in x position between parameterization and measurements. More...
 
Gaudi::Property< float > m_protonPosShift_y {this,"protonPosShift_y",0.0,"Expected difference in y position between measured and predicted proton"}
 Shif in y position between parameterization and measurements. More...
 
Gaudi::Property< float > m_alignmentCorrection_nearA {this,"alignmentCorrection_nearA",0.0,"Shift due to alignment in x for protons in near station A"}
 Beam alignment corrections in the x position of ATLAS A side. More...
 
Gaudi::Property< float > m_alignmentCorrection_nearC {this,"alignmentCorrection_nearC",0.0,"Shift due to alignment in x for protons in near station C"}
 Beam alignment corrections in the x position of ATLAS C side. More...
 
const float m_GeV = 0.001
 Variable to convert from MeV to GeV. More...
 
SG::ReadHandleKey< xAOD::AFPTrackContainerm_AFPtrackCollectionReadKey {this, "AFPTrackContainer", "HLT_AFPTrackContainer", "xAOD AFP track collection"}
 
ToolHandle< GenericMonitoringToolm_monTool { this, "MonTool", "", "Monitoring tool" }
 
HLT::Identifier m_decisionId
 The DecisionID of the chain, obtained from the Tool's name. More...
 
std::vector< HLT::Identifierm_legDecisionIds
 The DecisionIDs of the individual legs, derived from both m_decisionId and m_legMultiplicities. More...
 
std::vector< int > m_legMultiplicities
 The number of legs, and the required multiplicity on each leg. More...
 

Detailed Description

Definition at line 21 of file TrigAFPDijetComboHypoTool.h.

Constructor & Destructor Documentation

◆ TrigAFPDijetComboHypoTool()

TrigAFPDijetComboHypoTool::TrigAFPDijetComboHypoTool ( const std::string &  type,
const std::string &  name,
const IInterface *  parent 
)

Definition at line 17 of file TrigAFPDijetComboHypoTool.cxx.

19  m_transportBeamA("AFPProtonTransportTool/TransportBeamA", this),
20  m_transportBeamC("AFPProtonTransportTool/TransportBeamC", this)
21 {
22  declareProperty("TransportBeamA",m_transportBeamA,"Proton transport tool side A");
23  declareProperty("TransportBeamC",m_transportBeamC,"Proton transport tool side C");
24 }

◆ ~TrigAFPDijetComboHypoTool()

TrigAFPDijetComboHypoTool::~TrigAFPDijetComboHypoTool ( )
virtual

Definition at line 26 of file TrigAFPDijetComboHypoTool.cxx.

27 {
28 }

Member Function Documentation

◆ decide()

StatusCode ComboHypoToolBase::decide ( Combo::LegDecisionsMap passingLegs,
const EventContext &  ctx 
) const
overridevirtualinherited

retrieves the decisions associated to this decId, make their combinations and apply the algorithm

Parameters
[in]LegDecisionsMapthat lists all the passing decisions, to be updated by the tool depending on the outcome of executeAlg
[in]EventContext

Reimplemented in DisplacedJetRankComboHypoTool, TrigADComboHypoTool, and TrigComboHypoTool.

Definition at line 48 of file ComboHypoToolBase.cxx.

48  {
49  if (m_legMultiplicities.size() == 0) {
50  ATH_MSG_ERROR("ComboHypoTool for " << m_decisionId << " has not been properly configured. setLegMultiplicity should be called by the parent alg in initalize");
51  return StatusCode::FAILURE;
52  }
53 
54  // if no combinations passed, then exit
55  if (passingLegs.size() == 0) {
56  return StatusCode::SUCCESS;
57  }
58 
59  ATH_MSG_DEBUG("Looking for legs from " << decisionId() << " in the map. Map contains features for " << passingLegs.size() << " legs, which may be data for many chains.");
60 
61  // select the leg decisions from the map with this ID:
62  std::vector<std::vector<Combo::LegDecision>> legDecisions;
63  ATH_CHECK(selectLegs(passingLegs, legDecisions));
64 
65  for (size_t legIndex = 0; legIndex < m_legMultiplicities.size(); ++legIndex) {
66  // The static cast is because this gets read as a Gaudi property which only seems to work with vector<int> rather than vector<size_t>
67  if (legDecisions.at(legIndex).size() < static_cast<size_t>(m_legMultiplicities.at(legIndex))) {
68  ATH_MSG_DEBUG("Too few features are found for " << m_decisionId << " on leg " << legIndex <<", require:" << m_legMultiplicities.at(legIndex) << " have:" << legDecisions.at(legIndex).size());
69  ATH_MSG_DEBUG("This ComboHypoTool cannot run in this event, this chain **REJECTS** this event.");
70  eraseFromLegDecisionsMap(passingLegs);
71  if (msgLvl(MSG::DEBUG)) printDebugInformation(passingLegs);
72  return StatusCode::SUCCESS;
73  }
74  }
75 
76  // Create and initialise the combinations generator for the requirements of this chain, given the objects available in this event.
78  for (size_t legIndex = 0; legIndex < m_legMultiplicities.size(); ++legIndex) {
79  const size_t choose_any = m_legMultiplicities.at(legIndex);
80  const size_t out_of = legDecisions.at(legIndex).size();
81  nucg.add({out_of, choose_any});
82  ATH_MSG_DEBUG("For leg " << legIndex << " we will be choosing any " << choose_any << " Decision Objects out of " << out_of);
83  }
84 
85  std::vector<std::vector<Combo::LegDecision>> passingCombinations;
86 
87  size_t warnings = 0, iterations = 0;
88  do {
89 
90  const std::vector<size_t> combination = nucg();
91  ++nucg;
92  std::vector<Combo::LegDecision> combinationToCheck;
93 
94  size_t location_in_combination = 0;
95  for (size_t legIndex = 0; legIndex < m_legMultiplicities.size(); ++legIndex) {
96  // We loop over however many objects are required on the leg,
97  // but we take their index from the 'combination'. Hence 'object' is not used directly
98  for (size_t object = 0; object < static_cast<size_t>(m_legMultiplicities.at(legIndex)); ++object) {
99  const size_t objectIndex = combination.at(location_in_combination++);
100  combinationToCheck.push_back( legDecisions.at(legIndex).at(objectIndex) );
101  }
102  }
103 
104  ++iterations;
105 
106  try {
107  if (executeAlg(combinationToCheck, ctx)) {
108  ATH_MSG_DEBUG("Combination " << (iterations - 1) << " decided to be passing");
109  passingCombinations.push_back(combinationToCheck);
110  if (m_modeOR == true and m_enableOverride) {
111  break;
112  }
113  } else { // the combination failed
114  if (m_modeOR == false and m_enableOverride) {
115  break;
116  }
117  }
118  } catch (std::exception& e) {
119  ATH_MSG_ERROR(e.what());
120  return StatusCode::FAILURE;
121  }
122 
123  if ((iterations >= m_combinationsThresholdWarn && warnings == 0) or (iterations >= m_combinationsThresholdBreak)) {
124  ATH_MSG_WARNING("Have so far processed " << iterations << " combinations for " << m_decisionId << " in this event, " << passingCombinations.size() << " passing.");
125  ++warnings;
126  if (iterations >= m_combinationsThresholdBreak) {
127  ATH_MSG_WARNING("Too many combinations! Breaking the loop at this point.");
128  break;
129  }
130  }
131 
132  } while (nucg);
133 
134 
135  if (m_modeOR) {
136 
137  ATH_MSG_DEBUG("Passing " << passingCombinations.size() << " combinations out of " << iterations << ", "
138  << m_decisionId << (passingCombinations.size() ? " **ACCEPTS**" : " **REJECTS**") << " this event based on OR logic.");
139 
140  if (m_enableOverride) {
141  ATH_MSG_DEBUG("Note: stopped after the first successful combination due to the EnableOverride flag.");
142  }
143 
144  } else { // modeAND
145 
146  const bool passAll = (passingCombinations.size() == iterations);
147 
148  ATH_MSG_DEBUG("Passing " << passingCombinations.size() << " combinations out of " << iterations << ", "
149  << m_decisionId << (passAll ? " **ACCEPTS**" : " **REJECTS**") << " this event based on AND logic.");
150 
151  if (m_enableOverride) {
152  ATH_MSG_DEBUG("Note: stopped after the first failed combination due to the EnableOverride flag.");
153  }
154 
155  if (not passAll) {
156  passingCombinations.clear();
157  }
158 
159  }
160 
161  if (not passingCombinations.empty()) { // need partial erasure of the decsions (only those not present in any combination)
162  updateLegDecisionsMap(passingCombinations, passingLegs);
163  } else { // need complete erasure of input decisions
164  eraseFromLegDecisionsMap(passingLegs);
165  }
166 
167  if (msgLvl(MSG::DEBUG)) printDebugInformation(passingLegs);
168  return StatusCode::SUCCESS;
169 }

◆ decideOnSingleObject()

StatusCode ComboHypoToolBase::decideOnSingleObject ( TrigCompositeUtils::Decision ,
const std::vector< const TrigCompositeUtils::DecisionIDContainer * > &   
) const
virtualinherited

Alternate method called by BPhysics ComboHypoAlgs instead of the base method decide(...).

This function should be considered a specialist use-case only. It must be over-ridden to do anything useful.

Reimplemented in TrigMultiTrkComboHypoTool, and TrigBmumuxComboHypoTool.

Definition at line 283 of file ComboHypoToolBase.cxx.

283  {
284  ATH_MSG_ERROR("Do not use ComboHypoToolBase on its own, inherit this class and override decideOnSingleObject.");
285  ATH_MSG_ERROR("NOTE: Only if you are also supplying your own decide(...) implimentation, or similar.");
286  ATH_MSG_ERROR("NOTE: Most uses cases should only need to override executeAlg(...).");
287  return StatusCode::FAILURE;
288 }

◆ decisionId()

virtual HLT::Identifier ComboHypoToolBase::decisionId ( ) const
inlinevirtualinherited

retrieves this ComboHypoTool's chain's decision ID

Definition at line 41 of file ComboHypoToolBase.h.

41 { return m_decisionId; }

◆ eraseFromLegDecisionsMap()

void ComboHypoToolBase::eraseFromLegDecisionsMap ( Combo::LegDecisionsMap passingLegs) const
protectedinherited

For when the tool rejects all combinations.

Remove all Decision Objects from all the legs of this HypoTool's chain.

Definition at line 253 of file ComboHypoToolBase.cxx.

253  {
254  for (auto& it : passingLegs) {
255  DecisionID id = it.first;
256  if (id == m_decisionId or (isLegId(id) and getIDFromLeg(id) == m_decisionId)) {
257  const size_t nDecisionObjects = it.second.size();
258  it.second.clear();
259  ATH_MSG_VERBOSE("-- Removed " << nDecisionObjects << " from " << id);
260  }
261  }
262 }

◆ executeAlg()

bool TrigAFPDijetComboHypoTool::executeAlg ( const std::vector< Combo::LegDecision > &  combination,
const EventContext &  ctx 
) const
overrideprivatevirtual

Only a dummy implementation exists in ComboHypoToolBase.

This should be over-ridden by a derived class. The derived class should return a boolean pass/fail for each possible combination in the event. param[in] combination A single combination of objects to be discriminated against. Vector contains the required number of objects over all legs. Use the pair.first to tell which leg a given pair.second decision object belongs to in the current combination.

Reimplemented from ComboHypoToolBase.

Definition at line 79 of file TrigAFPDijetComboHypoTool.cxx.

80  {
81 
82  ATH_MSG_DEBUG("TrigAFPDijetComboHypoTool::executeAlg Executing algorithm");
83 
84  std::vector<ElementLink<xAOD::JetContainer>> selected_jets;
85 
86  // Expecting to run over chains with the signature HLT_afp_2jX, and hence to be supplied with three Decision Objects for each combination.
87  if(combination.size() != 3) ATH_MSG_ERROR("Number of leg decisions is not 3!");
88 
89  // One of these is the AFP Decision Object, which we ignore as we are fetching the AFP reconstruction directly from a ReadHandle.
90  // The other two should be Jet Decision Objects.
91  for(const auto& comb: combination){
92  const auto dec = comb.second;
93  const auto jet_link = TrigCompositeUtils::findLink<xAOD::JetContainer>(*dec, TrigCompositeUtils::featureString()).link;
94  if (jet_link.isValid()) {
95  selected_jets.push_back(jet_link);
96  }
97  }
98 
99  if(selected_jets.size() != 2){
100  ATH_MSG_ERROR("Expecting to combine exactly two jets, but instead found "
101  << selected_jets.size() << ". Will throw a runtime error");
102  throw std::runtime_error(
103  "Expecting to combine exactly two jets, but instead found " +
104  std::to_string(selected_jets.size()));
105  }
106 
107  // Get jet pair
108  auto jetLink1 = selected_jets[0]; // Need to check if jets are actually ordered in pT
109  auto jetLink2 = selected_jets[1];
110 
111  TLorentzVector jet1_vec = (*jetLink1)->p4();
112  TLorentzVector jet2_vec = (*jetLink2)->p4();
113  TLorentzVector dijet = jet1_vec + jet2_vec;
114 
115  // Calculate dijet quantities
116  auto dijetMass = Monitored::Scalar( "DijetMass" , -999.0 );
117  auto dijetRapidity = Monitored::Scalar( "DijetRapidity" , -999.0 );
118  dijetMass = dijet.M() * m_GeV;
119  ATH_MSG_DEBUG("AFP ComboHypo::DijetMass "<<dijetMass);
120  dijetRapidity = dijet.Rapidity();
121  Monitored::fill(m_monTool, dijetMass);
122  Monitored::fill(m_monTool, dijetRapidity);
123 
124  // Calculate relative energy loos
125  auto xiJet1 = Monitored::Scalar( "XiJet1" , -999.0 );
126  auto xiJet2 = Monitored::Scalar( "XiJet2" , -999.0 );
127  xiJet1 = exp(dijetRapidity) * dijetMass / m_totalEnergy;
128  xiJet2 = exp(-dijetRapidity) * dijetMass / m_totalEnergy;
129  Monitored::fill(m_monTool, xiJet1);
130  Monitored::fill(m_monTool, xiJet2);
131 
132  // Predict proton positions on AFP sides A and C
133  auto predictProtonAEnergy = Monitored::Scalar( "PredictProtonAEnergy" , -999.0 );
134  auto predictProtonCEnergy = Monitored::Scalar( "PredictProtonCEnergy" , -999.0 );
135  predictProtonAEnergy = m_beamEnergy * (1. - xiJet1); // Side A
136  predictProtonCEnergy = m_beamEnergy * (1. - xiJet2); // Side C
137  Monitored::fill(m_monTool, predictProtonAEnergy);
138  Monitored::fill(m_monTool, predictProtonCEnergy);
139 
140  // Side A position prediction
141  auto sideA_predictX = Monitored::Scalar( "SideA_predictX" , -999.0 );
142  auto sideA_predictY = Monitored::Scalar( "SideA_predictY" , -999.0 );
143  sideA_predictX = 1e3 * m_transportBeamA->x(0, 0, 0, 0, 0, predictProtonAEnergy) + m_protonPosShift_x;
144  sideA_predictY = 1e3 * m_transportBeamA->x(0, 0, 0, 0, 0, predictProtonAEnergy) + m_protonPosShift_y;
145  Monitored::fill(m_monTool, sideA_predictX);
146  Monitored::fill(m_monTool, sideA_predictY);
147 
148  // Side C position prediction
149  auto sideC_predictX = Monitored::Scalar( "SideC_predictX" , -999.0 );
150  auto sideC_predictY = Monitored::Scalar( "SideC_predictY" , -999.0 );
151  sideC_predictX = 1e3 * m_transportBeamC->x(0, 0, 0, 0, 0, predictProtonCEnergy) + m_protonPosShift_x;
152  sideC_predictY = 1e3 * m_transportBeamC->x(0, 0, 0, 0, 0, predictProtonCEnergy) + m_protonPosShift_y;
153  Monitored::fill(m_monTool, sideC_predictX);
154  Monitored::fill(m_monTool, sideC_predictY);
155 
156  // Retrieve AFP track container
158 
159  double sideA_minDist = 9e9;
160  double sideC_minDist = 9e9;
161 
162  int nearestTrackSideAId = 999;
163  int nearestTrackSideCId = 999;
164 
165  auto xDiff = Monitored::Scalar("XDiff",-999.0);
166  auto yDiff = Monitored::Scalar("YDiff",-999.0);
167  auto distance = Monitored::Scalar("distance",-999.0);
168 
169  // Find nearest track
170  for(auto track: (*tracksAFP)){
171 
172  xDiff = -999.0;
173  yDiff = -999.0;
174  distance = -999.0;
175 
176  // Side A
177  if(track->stationID() == 1){
178 
179  xDiff = sideA_predictX - (track->xLocal() + m_alignmentCorrection_nearA);
180  yDiff = sideA_predictY - track->yLocal();
181  distance = sqrt(xDiff * xDiff + yDiff * yDiff);
182 
183  if(distance < sideA_minDist){
184  sideA_minDist = distance;
185  nearestTrackSideAId = track->index();
186  }
187 
188  }else if(track->stationID() == 2){
189 
190  xDiff = sideC_predictX - (track->xLocal() + m_alignmentCorrection_nearC);
191  yDiff = sideC_predictY - track->yLocal();
192  distance = sqrt(xDiff * xDiff + yDiff * yDiff);
193 
194  if(distance < sideC_minDist){
195  sideC_minDist = distance;
196  nearestTrackSideCId = track->index();
197  }
198  }// End of if for choosing AFP station
199 
200  Monitored::fill(m_monTool, xDiff);
201  Monitored::fill(m_monTool, yDiff);
203 
204  }// End of loop over AFP track
205 
206  bool passRCutA = false;
207  bool passRCutC = false;
208 
209  bool passXYCutA = false;
210  bool passXYCutC = false;
211 
212  auto sideA_trackX = Monitored::Scalar("SideA_trackX",-999.0);
213  auto sideA_trackY = Monitored::Scalar("SideA_trackY",-999.0);
214  auto sideA_diffX = Monitored::Scalar("SideA_diffX",-999.0);
215  auto sideA_diffY = Monitored::Scalar("SideA_diffY",-999.0);
216 
217  auto sideC_trackX = Monitored::Scalar("SideC_trackX",-999.0);
218  auto sideC_trackY = Monitored::Scalar("SideC_trackY",-999.0);
219  auto sideC_diffX = Monitored::Scalar("SideC_diffX",-999.0);
220  auto sideC_diffY = Monitored::Scalar("SideC_diffY",-999.0);
221 
222  // Cuts on A side
223  if(nearestTrackSideAId != 999){
224 
225  sideA_trackX = tracksAFP.get()->at(nearestTrackSideAId)->xLocal() + m_alignmentCorrection_nearA;
226  sideA_trackY = tracksAFP.get()->at(nearestTrackSideAId)->yLocal();
227  sideA_diffX = sideA_predictX - sideA_trackX;
228  sideA_diffY = sideA_predictY - sideA_trackY;
229 
230  ATH_MSG_DEBUG("TrigAFPDijetComboHypoTool::execute sideA_diffX: " << sideA_diffX);
231 
232  if(sideA_minDist < m_maxProtonDist) passRCutA = true;
233 
234  if(fabs(sideA_diffX) < m_maxProtonDiff_x && fabs(sideA_diffY) < m_maxProtonDiff_y) passXYCutA = true;
235 
236  }else{
237  passRCutA = false;
238  passXYCutA = false;
239  }
240 
241  // Cuts on C side
242  if(nearestTrackSideCId != 999){
243 
244  sideC_trackX = tracksAFP.get()->at(nearestTrackSideCId)->xLocal() + m_alignmentCorrection_nearC;
245  sideC_trackY = tracksAFP.get()->at(nearestTrackSideCId)->yLocal();
246  sideC_diffX = sideC_predictX - sideC_trackX;
247  sideC_diffY = sideC_predictY - sideC_trackY;
248 
249  if(sideC_minDist < m_maxProtonDist) passRCutC = true;
250 
251  if(fabs(sideC_diffX) < m_maxProtonDiff_x && fabs(sideC_diffY) < m_maxProtonDiff_y) passXYCutC = true;
252 
253  }else{
254  passRCutC = false;
255  passXYCutC = false;
256  }
257 
258  Monitored::fill(m_monTool,sideA_trackX);
259  Monitored::fill(m_monTool,sideA_trackY);
260  Monitored::fill(m_monTool,sideA_diffX);
261  Monitored::fill(m_monTool,sideA_diffY);
262 
263  Monitored::fill(m_monTool,sideC_trackX);
264  Monitored::fill(m_monTool,sideC_trackY);
265  Monitored::fill(m_monTool,sideC_diffX);
266  Monitored::fill(m_monTool,sideC_diffY);
267 
268  bool pass = false;
269 
270  if(passRCutA && passRCutC && passXYCutA && passXYCutC) pass = true;
271 
272  return pass;
273 
274 }

◆ initialize()

StatusCode TrigAFPDijetComboHypoTool::initialize ( )
overridevirtual

Definition at line 30 of file TrigAFPDijetComboHypoTool.cxx.

30  {
31  ATH_MSG_INFO("Initialization. The correct configuration of this algorithm "
32  << "requires jets ordered in increasing energy");
33 
34  // Initialize collections
36 
37  if (!(m_monTool.name().empty())) {
38  ATH_CHECK( m_monTool.retrieve() );
39  ATH_MSG_DEBUG("m_monTool name: " << m_monTool);
40  }
41 
42  if(!(m_transportBeamA.name().empty())){
43  ATH_CHECK( m_transportBeamA.retrieve() );
44  ATH_MSG_DEBUG("m_transportBeamA name: " << m_transportBeamA);
45  }
46 
47  if(!(m_transportBeamC.name().empty())){
48  ATH_CHECK( m_transportBeamC.retrieve() );
49  ATH_MSG_DEBUG("m_transportBeamC name: " << m_transportBeamC);
50  }
51 
52  //Retrieving the parameterization file for A side
53  // By default it used file final_parameterization_b1.txt
54  ATH_MSG_DEBUG("Parameterization file for A side: "<< m_protonTransportParamFileNameA);
55  const std::string filePathA = PathResolver::find_file(m_protonTransportParamFileNameA, "DATAPATH");
56  ATH_MSG_DEBUG("Path to param file side A: "<<filePathA);
57  //Defining the parameterization object
58  m_transportBeamA->setParamFile(filePathA);
59  ATH_CHECK(m_transportBeamA->load());
60 
61  //Retrieving the parameterization file for C side
62  // By default it used file final_parameterization_b2.txt
63  ATH_MSG_DEBUG("Parameterization file for C side: "<< m_protonTransportParamFileNameC);
64  const std::string filePathC = PathResolver::find_file(m_protonTransportParamFileNameC, "DATAPATH");
65  ATH_MSG_DEBUG("Path to param file side C: "<<filePathC);
66  //Defining the parameterization object
67  m_transportBeamC->setParamFile(filePathC);
68  ATH_CHECK(m_transportBeamC->load());
69 
70  return StatusCode::SUCCESS;
71 }

◆ legDecisionId()

HLT::Identifier ComboHypoToolBase::legDecisionId ( size_t  i) const
inlineinherited

Retrieves this ComboHypoTool's chain's decision ID for a given leg.

Only populated for chains with more than one leg. For chains with one leg, use decisionId()

Definition at line 60 of file ComboHypoToolBase.h.

60 { return m_legDecisionIds.at(i); }

◆ legDecisionIds()

const std::vector<HLT::Identifier>& ComboHypoToolBase::legDecisionIds ( ) const
inlineinherited

Retrieves this ComboHypoTool's chain's decision IDs for all legs.

Only populated for chains with more than one leg. For chains with one leg, use decisionId()

Definition at line 66 of file ComboHypoToolBase.h.

66 { return m_legDecisionIds; }

◆ legMultiplicity()

const std::vector<int>& ComboHypoToolBase::legMultiplicity ( ) const
inlineinherited

Gets the number of legs and the multiplicity required on each leg.

Definition at line 54 of file ComboHypoToolBase.h.

54 { return m_legMultiplicities; }

◆ printDebugInformation()

void ComboHypoToolBase::printDebugInformation ( const Combo::LegDecisionsMap passingLegs) const
protectedinherited

Print the output of the tool, after having removed failed Decision Objects.

Restricted to the ComboHypoTool's chain's legs.

Definition at line 264 of file ComboHypoToolBase.cxx.

264  {
265  ATH_MSG_DEBUG("ComboHypoToolBase: End of " << m_decisionId << ", passing elements are: ");
266  for (const auto& [id, ELV] : passingLegs) {
267  // Only print for this chain
268  if (id == m_decisionId or (isLegId(id) and m_decisionId == getIDFromLeg(id))) {
269  ATH_MSG_DEBUG("-- " << HLT::Identifier(id) << " with " << ELV.size() << " elements");
270  for (const auto& EL : ELV) {
271  ATH_MSG_DEBUG("-- -- container:" << EL.dataID() << ", index:" << EL.index());
272  }
273  }
274  }
275 }

◆ selectLegs()

StatusCode ComboHypoToolBase::selectLegs ( const Combo::LegDecisionsMap IDCombMap,
std::vector< std::vector< Combo::LegDecision >> &  leg_decisions 
) const
protectedinherited

Creates the per-leg vectors of Decision objects starting from the initial LegDecision map, storing only those concerning this HypoTool's chain Pack the Decision objects in std::pair<DecisionID, ElementLink<Decision>> so the derived class' executeAlg function knows which leg each object is on.

Definition at line 172 of file ComboHypoToolBase.cxx.

173 {
174  /*
175  legDecisions: nested vector like:
176  [(leg0, el0), (leg0, el1), (leg0, el2), (leg0, el3)], <-- All leg0 objects are in legDecisions[0][X]
177  [(leg1, mu0), (leg1, mu1)] <-- All leg1 objects are in legDecisions[1][X]
178  We keep the legID in the std::pair inside the inner vector as these pairs will be flattened into a single vector
179  when individual combinations of objects are passed to executeAlg, pair.first then contains the leg, with pair.second containing the Decision Object.
180  */
181 
182  // Extract from IDCombMap the features for this chain. Wrap the features up in a pair along with their leg ID
183  for (size_t legIndex = 0; legIndex < m_legMultiplicities.size(); ++ legIndex) {
184 
185  // If the chain has more than one leg, then we have per-leg IDs. Otherwise we just use the chain's ID
186  const HLT::Identifier& legIdentifier = (m_legMultiplicities.size() > 1 ? m_legDecisionIds.at(legIndex) : m_decisionId);
187 
188  // Combo::LegDecision is a pair of <DecisionID, ElementLink<Decision>>
189  std::vector<Combo::LegDecision> decisionObjectsOnLeg;
190 
191  // Find physics objects on this leg. May be zero.
192  const Combo::LegDecisionsMap::const_iterator it = IDCombMap.find(legIdentifier.numeric());
193 
194  if (it != IDCombMap.end()) {
195  for (const ElementLink<DecisionContainer>& el : it->second) {
196  decisionObjectsOnLeg.emplace_back(legIdentifier, el);
197  }
198  }
199 
200  legDecisions.push_back(std::move(decisionObjectsOnLeg));
201  }
202 
203  if (msgLvl(MSG::DEBUG)) {
204  ATH_MSG_DEBUG("Getting " << legDecisions.size() << " legs to combine, for ID: " << decisionId());
205  size_t count = 0;
206  for (const auto& leg : legDecisions) {
207  ATH_MSG_DEBUG("Leg " << count++ << " --");
208  for (const auto& dEL : leg) {
209  ATH_MSG_DEBUG("-- " << HLT::Identifier(dEL.first) << " container:" << dEL.second.dataID() << ", index:" << dEL.second.index());
210  }
211  }
212  }
213  return StatusCode::SUCCESS;
214 }

◆ setLegMultiplicity()

StatusCode ComboHypoToolBase::setLegMultiplicity ( const Combo::MultiplicityReqMap multiplicityRequiredMap)
inherited

Sets the number of legs and the multiplicity required on each leg.

This should be called when the Tool is retrieved by its parent ComboHypo alg. This also sets the leg Decision IDs at the same time param[in] multiplicityRequiredMap: Mapping of chains to required multiplicity per leg.

Definition at line 16 of file ComboHypoToolBase.cxx.

16  {
17  const std::string nameOfToolsChain = m_decisionId.name();
18  const Combo::MultiplicityReqMap::const_iterator it = multiplicityRequiredMap.find(nameOfToolsChain);
19 
20  if (it == multiplicityRequiredMap.end()) {
21  ATH_MSG_ERROR("ComboHypoTool for " << m_decisionId << " could not find its required multiplcity data in the map supplied by its parent alg.");
22  return StatusCode::FAILURE;
23  }
24 
25  m_legMultiplicities = it->second;
26  if (m_legMultiplicities.size() == 0) {
27  ATH_MSG_ERROR("ComboHypoTool for " << m_decisionId << " was listed in the supplied multiplicityRequiredMap, but data was not supplied for any legs.");
28  return StatusCode::FAILURE;
29  }
30 
31  m_legDecisionIds.clear();
32  for (size_t i = 0; i < m_legMultiplicities.size(); ++i) {
33  if(m_legMultiplicities.at(i) < 0) {
34  ATH_MSG_ERROR("ComboHypoTool for " << m_decisionId << " has been configured with an impossible multiplicity requirement of " << m_legMultiplicities.at(i) << " on leg " << i);
35  return StatusCode::FAILURE;
36  }
37  ATH_MSG_DEBUG("ComboHypoTool for " << m_decisionId << " will require multiplicity " << m_legMultiplicities.at(i) << " on leg " << i);
38  if (m_legMultiplicities.size() > 1) { // We only have per-leg IDs when there is more than one leg
40  } else { // For one leg, just repete the chain's ID
41  m_legDecisionIds.push_back(m_decisionId);
42  }
43  }
44 
45  return StatusCode::SUCCESS;
46 }

◆ updateLegDecisionsMap()

void ComboHypoToolBase::updateLegDecisionsMap ( const std::vector< std::vector< Combo::LegDecision >> &  passing_comb,
Combo::LegDecisionsMap passingLegs 
) const
protectedinherited

For when the tool accepts some/all combinations.

Remove Decision Objects from legs of this HypoTool's chain which participated in NONE of combinations which were flagged as accepting the event.

Definition at line 216 of file ComboHypoToolBase.cxx.

216  {
217  if (msgLvl(MSG::DEBUG)) {
218  size_t count = 0;
219  for (const std::vector<Combo::LegDecision>& comb : passingComb) {
220  ATH_MSG_DEBUG("-- Passing combination " << count++ << " of " << passingComb.size());
221  for (const auto& [id, EL] : comb) {
222  ATH_MSG_DEBUG("-- -- " << HLT::Identifier(id) << " container:" << EL.dataID() << ", index:" << EL.index());
223  }
224  }
225  }
226 
227  // remove combinations that didn't pass from the final map passingLegs
228  for (auto& it : passingLegs) {
229  DecisionID legId = it.first;
230  if (not(legId == m_decisionId or (isLegId(legId) and getIDFromLeg(legId) == m_decisionId))) {
231  continue; // Some other chain, ignore it to get faster execution.
232  }
233  std::vector<ElementLink<DecisionContainer>> updatedDecisionObjectsOnLeg;
234  bool update = false;
235  // Loop over all passing combinations, and all Decision Objects in each passing combination. Find Decision Objects on this leg.
236  for (const std::vector<Combo::LegDecision>& comb : passingComb) {
237  for (const auto& [id, EL] : comb) {
238  // Check that this Decision Object is on the correct leg, and that we haven't collated it already from another combination.
239  if (id == legId and std::find(updatedDecisionObjectsOnLeg.begin(), updatedDecisionObjectsOnLeg.end(), EL) == updatedDecisionObjectsOnLeg.end()) {
240  ATH_MSG_VERBOSE("Keeping on leg " << HLT::Identifier(id) << " the Decision Object container:" << EL.dataID() << ", index:" << EL.index());
241  updatedDecisionObjectsOnLeg.push_back(EL);
242  update = true;
243  }
244  }
245  }
246  // only update those concerning this tool ID
247  if (update){
248  it.second = updatedDecisionObjectsOnLeg;
249  }
250  }
251 }

Member Data Documentation

◆ m_AFPtrackCollectionReadKey

SG::ReadHandleKey< xAOD::AFPTrackContainer > TrigAFPDijetComboHypoTool::m_AFPtrackCollectionReadKey {this, "AFPTrackContainer", "HLT_AFPTrackContainer", "xAOD AFP track collection"}
private

Definition at line 70 of file TrigAFPDijetComboHypoTool.h.

◆ m_alignmentCorrection_nearA

Gaudi::Property<float> TrigAFPDijetComboHypoTool::m_alignmentCorrection_nearA {this,"alignmentCorrection_nearA",0.0,"Shift due to alignment in x for protons in near station A"}
private

Beam alignment corrections in the x position of ATLAS A side.

Definition at line 63 of file TrigAFPDijetComboHypoTool.h.

◆ m_alignmentCorrection_nearC

Gaudi::Property<float> TrigAFPDijetComboHypoTool::m_alignmentCorrection_nearC {this,"alignmentCorrection_nearC",0.0,"Shift due to alignment in x for protons in near station C"}
private

Beam alignment corrections in the x position of ATLAS C side.

Definition at line 65 of file TrigAFPDijetComboHypoTool.h.

◆ m_beamEnergy

Gaudi::Property<float> TrigAFPDijetComboHypoTool::m_beamEnergy {this,"beamEnergy",6500.0,"Energy of one beam i.e. half of centre-of-mass energy"}
private

energy of one beam i.e. half of centre-of-mass energy

Definition at line 54 of file TrigAFPDijetComboHypoTool.h.

◆ m_combinationsThresholdBreak

Gaudi::Property<size_t> ComboHypoToolBase::m_combinationsThresholdBreak
protectedinherited
Initial value:
{this, "CombinationsThresholdBreak", 10000,
"Events processing this many combinations will generate a second WARNING message, and the loop over combinations will be terminated at this point."}

Definition at line 109 of file ComboHypoToolBase.h.

◆ m_combinationsThresholdWarn

Gaudi::Property<size_t> ComboHypoToolBase::m_combinationsThresholdWarn
protectedinherited
Initial value:
{this, "CombinationsThresholdWarn", 1000,
"Events processing this many combinations will generate a WARNING message."}

Definition at line 106 of file ComboHypoToolBase.h.

◆ m_decisionId

HLT::Identifier ComboHypoToolBase::m_decisionId
privateinherited

The DecisionID of the chain, obtained from the Tool's name.

Definition at line 122 of file ComboHypoToolBase.h.

◆ m_enableOverride

Gaudi::Property<bool> ComboHypoToolBase::m_enableOverride
protectedinherited
Initial value:
{this, "EnableOverride", false,
"Stops processing combinations as soon as a valid combination is found in OR mode, or as soon as an invalid combination is found in AND mode. This is to save CPU."}

Definition at line 115 of file ComboHypoToolBase.h.

◆ m_GeV

const float TrigAFPDijetComboHypoTool::m_GeV = 0.001
private

Variable to convert from MeV to GeV.

Definition at line 68 of file TrigAFPDijetComboHypoTool.h.

◆ m_legDecisionIds

std::vector<HLT::Identifier> ComboHypoToolBase::m_legDecisionIds
privateinherited

The DecisionIDs of the individual legs, derived from both m_decisionId and m_legMultiplicities.

Definition at line 123 of file ComboHypoToolBase.h.

◆ m_legMultiplicities

std::vector<int> ComboHypoToolBase::m_legMultiplicities
privateinherited

The number of legs, and the required multiplicity on each leg.

Definition at line 124 of file ComboHypoToolBase.h.

◆ m_maxProtonDiff_x

Gaudi::Property<float> TrigAFPDijetComboHypoTool::m_maxProtonDiff_x {this,"maxProtonDiff_x",2.5,"Cut on x difference between measured and extrapolated proton"}
private

Threshold for the x distance between parameterization and measurements.

Definition at line 50 of file TrigAFPDijetComboHypoTool.h.

◆ m_maxProtonDiff_y

Gaudi::Property<float> TrigAFPDijetComboHypoTool::m_maxProtonDiff_y {this,"maxProtonDiff_y",2.5,"Cut on y difference between measured and extrapolated proton"}
private

Threshold for the y distance between parameterization and measurements.

Definition at line 52 of file TrigAFPDijetComboHypoTool.h.

◆ m_maxProtonDist

Gaudi::Property<float> TrigAFPDijetComboHypoTool::m_maxProtonDist {this,"maxProtonDist",2.0,"Cut on distance between measured and extrapolated proton"}
private

Threshold for the radius distance between parameterization and measurements.

Definition at line 48 of file TrigAFPDijetComboHypoTool.h.

◆ m_modeOR

Gaudi::Property<bool> ComboHypoToolBase::m_modeOR
protectedinherited
Initial value:
{this, "ModeOR", true,
"Accepts based on the logical OR over all calls to executeAlg. If this flag is set to false then the logical AND is required instead."}

Definition at line 112 of file ComboHypoToolBase.h.

◆ m_monTool

ToolHandle<GenericMonitoringTool> TrigAFPDijetComboHypoTool::m_monTool { this, "MonTool", "", "Monitoring tool" }
private

Definition at line 73 of file TrigAFPDijetComboHypoTool.h.

◆ m_protonPosShift_x

Gaudi::Property<float> TrigAFPDijetComboHypoTool::m_protonPosShift_x {this,"protonPosShift_x",0.0,"Expected difference in x position between measured and predicted proton"}
private

Shift in x position between parameterization and measurements.

Definition at line 58 of file TrigAFPDijetComboHypoTool.h.

◆ m_protonPosShift_y

Gaudi::Property<float> TrigAFPDijetComboHypoTool::m_protonPosShift_y {this,"protonPosShift_y",0.0,"Expected difference in y position between measured and predicted proton"}
private

Shif in y position between parameterization and measurements.

Definition at line 60 of file TrigAFPDijetComboHypoTool.h.

◆ m_protonTransportParamFileNameA

Gaudi::Property<std::string> TrigAFPDijetComboHypoTool::m_protonTransportParamFileNameA {this,"protonTransportParamFileName1","final_parameterization_b1.txt","Name of the file with proton transport parameterization for A side"}
private

Boolean corresponding to the decision to record the event based on the selection being met.

Definition at line 38 of file TrigAFPDijetComboHypoTool.h.

◆ m_protonTransportParamFileNameC

Gaudi::Property<std::string> TrigAFPDijetComboHypoTool::m_protonTransportParamFileNameC {this,"protonTransportParamFileName2","final_parameterization_b2.txt","Name of the file with proton transport parameterization C side"}
private

Definition at line 40 of file TrigAFPDijetComboHypoTool.h.

◆ m_totalEnergy

float TrigAFPDijetComboHypoTool::m_totalEnergy = 2*m_beamEnergy
private

beams centre-of-mass energy 2*m_beamEnergy

Definition at line 55 of file TrigAFPDijetComboHypoTool.h.

◆ m_transportBeamA

ToolHandle<IAFPProtonTransportTool> TrigAFPDijetComboHypoTool::m_transportBeamA
private

Definition at line 43 of file TrigAFPDijetComboHypoTool.h.

◆ m_transportBeamC

ToolHandle<IAFPProtonTransportTool> TrigAFPDijetComboHypoTool::m_transportBeamC
private

Proton transport parameterizaton object used in the proton position prediction for ATLAS C side.

Definition at line 45 of file TrigAFPDijetComboHypoTool.h.


The documentation for this class was generated from the following files:
TrigAFPDijetComboHypoTool::m_transportBeamA
ToolHandle< IAFPProtonTransportTool > m_transportBeamA
Definition: TrigAFPDijetComboHypoTool.h:43
AllowedVariables::e
e
Definition: AsgElectronSelectorTool.cxx:37
TrigCompositeUtils::featureString
const std::string & featureString()
Definition: TrigCompositeUtils.h:420
TrigAFPDijetComboHypoTool::m_AFPtrackCollectionReadKey
SG::ReadHandleKey< xAOD::AFPTrackContainer > m_AFPtrackCollectionReadKey
Definition: TrigAFPDijetComboHypoTool.h:70
ComboHypoToolBase::printDebugInformation
void printDebugInformation(const Combo::LegDecisionsMap &passingLegs) const
Print the output of the tool, after having removed failed Decision Objects.
Definition: ComboHypoToolBase.cxx:264
TrigAFPDijetComboHypoTool::m_monTool
ToolHandle< GenericMonitoringTool > m_monTool
Definition: TrigAFPDijetComboHypoTool.h:73
TrigCompositeUtils::DecisionID
unsigned int DecisionID
Definition: TrigComposite_v1.h:27
TrigAFPDijetComboHypoTool::m_maxProtonDiff_x
Gaudi::Property< float > m_maxProtonDiff_x
Threshold for the x distance between parameterization and measurements.
Definition: TrigAFPDijetComboHypoTool.h:50
ComboHypoToolBase::eraseFromLegDecisionsMap
void eraseFromLegDecisionsMap(Combo::LegDecisionsMap &passingLegs) const
For when the tool rejects all combinations.
Definition: ComboHypoToolBase.cxx:253
ATH_MSG_INFO
#define ATH_MSG_INFO(x)
Definition: AthMsgStreamMacros.h:31
find
std::string find(const std::string &s)
return a remapped string
Definition: hcg.cxx:135
TrigAFPDijetComboHypoTool::m_protonPosShift_x
Gaudi::Property< float > m_protonPosShift_x
Shift in x position between parameterization and measurements.
Definition: TrigAFPDijetComboHypoTool.h:58
HLT::Identifier::numeric
TrigCompositeUtils::DecisionID numeric() const
numeric ID
Definition: TrigCompositeUtils/TrigCompositeUtils/HLTIdentifier.h:41
TrigAFPDijetComboHypoTool::m_protonPosShift_y
Gaudi::Property< float > m_protonPosShift_y
Shif in y position between parameterization and measurements.
Definition: TrigAFPDijetComboHypoTool.h:60
SG::ReadHandle
Definition: StoreGate/StoreGate/ReadHandle.h:67
ComboHypoToolBase::updateLegDecisionsMap
void updateLegDecisionsMap(const std::vector< std::vector< Combo::LegDecision >> &passing_comb, Combo::LegDecisionsMap &passingLegs) const
For when the tool accepts some/all combinations.
Definition: ComboHypoToolBase.cxx:216
HLT::NestedUniqueCombinationGenerator
An ensemble of UniqueCombinationGenerator API description.
Definition: TrigCompositeUtils/TrigCompositeUtils/Combinators.h:72
python.TrigCompositeUtils.isLegId
def isLegId(chainName)
Definition: DecisionHandling/python/TrigCompositeUtils.py:18
skel.it
it
Definition: skel.GENtoEVGEN.py:407
ComboHypoToolBase::executeAlg
virtual bool executeAlg(const std::vector< Combo::LegDecision > &combination, const EventContext &ctx) const
Only a dummy implementation exists in ComboHypoToolBase.
Definition: ComboHypoToolBase.cxx:278
TrigAFPDijetComboHypoTool::m_protonTransportParamFileNameA
Gaudi::Property< std::string > m_protonTransportParamFileNameA
Boolean corresponding to the decision to record the event based on the selection being met.
Definition: TrigAFPDijetComboHypoTool.h:38
ComboHypoToolBase::m_combinationsThresholdBreak
Gaudi::Property< size_t > m_combinationsThresholdBreak
Definition: ComboHypoToolBase.h:109
ATH_MSG_VERBOSE
#define ATH_MSG_VERBOSE(x)
Definition: AthMsgStreamMacros.h:28
drawFromPickle.exp
exp
Definition: drawFromPickle.py:36
python.CaloAddPedShiftConfig.type
type
Definition: CaloAddPedShiftConfig.py:42
ComboHypoToolBase::m_modeOR
Gaudi::Property< bool > m_modeOR
Definition: ComboHypoToolBase.h:112
XMLtoHeader.count
count
Definition: XMLtoHeader.py:84
ComboHypoToolBase::decisionId
virtual HLT::Identifier decisionId() const
retrieves this ComboHypoTool's chain's decision ID
Definition: ComboHypoToolBase.h:41
ComboHypoToolBase::m_legDecisionIds
std::vector< HLT::Identifier > m_legDecisionIds
The DecisionIDs of the individual legs, derived from both m_decisionId and m_legMultiplicities.
Definition: ComboHypoToolBase.h:123
TrigAFPDijetComboHypoTool::m_transportBeamC
ToolHandle< IAFPProtonTransportTool > m_transportBeamC
Proton transport parameterizaton object used in the proton position prediction for ATLAS C side.
Definition: TrigAFPDijetComboHypoTool.h:45
ComboHypoToolBase::m_enableOverride
Gaudi::Property< bool > m_enableOverride
Definition: ComboHypoToolBase.h:115
ATH_MSG_ERROR
#define ATH_MSG_ERROR(x)
Definition: AthMsgStreamMacros.h:33
CheckAppliedSFs.e3
e3
Definition: CheckAppliedSFs.py:264
lumiFormat.i
int i
Definition: lumiFormat.py:85
TrigAFPDijetComboHypoTool::m_beamEnergy
Gaudi::Property< float > m_beamEnergy
energy of one beam i.e. half of centre-of-mass energy
Definition: TrigAFPDijetComboHypoTool.h:54
ATH_MSG_DEBUG
#define ATH_MSG_DEBUG(x)
Definition: AthMsgStreamMacros.h:29
ComboHypoToolBase::m_combinationsThresholdWarn
Gaudi::Property< size_t > m_combinationsThresholdWarn
Definition: ComboHypoToolBase.h:106
calibdata.exception
exception
Definition: calibdata.py:495
test_pyathena.parent
parent
Definition: test_pyathena.py:15
HLT::NestedUniqueCombinationGenerator::add
void add(const UniqueCombinationGenerator &gen)
Definition: Combinators.cxx:83
compute_lumi.leg
leg
Definition: compute_lumi.py:95
ATH_CHECK
#define ATH_CHECK
Definition: AthCheckMacros.h:40
EL
This module defines the arguments passed from the BATCH driver to the BATCH worker.
Definition: AsgComponentFactories.h:16
python.getProblemFolderFromLogs.el
dictionary el
Definition: getProblemFolderFromLogs.py:48
HLT::Identifier
Definition: TrigCompositeUtils/TrigCompositeUtils/HLTIdentifier.h:19
Monitored::fill
void fill(const ToolHandle< GenericMonitoringTool > &tool, T &&... variables)
Definition: MonitoredGroup.h:128
ComboHypoToolBase::m_decisionId
HLT::Identifier m_decisionId
The DecisionID of the chain, obtained from the Tool's name.
Definition: ComboHypoToolBase.h:122
TrigAFPDijetComboHypoTool::m_totalEnergy
float m_totalEnergy
beams centre-of-mass energy 2*m_beamEnergy
Definition: TrigAFPDijetComboHypoTool.h:55
ComboHypoToolBase::selectLegs
StatusCode selectLegs(const Combo::LegDecisionsMap &IDCombMap, std::vector< std::vector< Combo::LegDecision >> &leg_decisions) const
Creates the per-leg vectors of Decision objects starting from the initial LegDecision map,...
Definition: ComboHypoToolBase.cxx:172
name
std::string name
Definition: Control/AthContainers/Root/debug.cxx:240
ActsTrk::to_string
std::string to_string(const DetectorType &type)
Definition: GeometryDefs.h:34
TrigCompositeUtils::createLegName
HLT::Identifier createLegName(const HLT::Identifier &chainIdentifier, size_t counter)
Generate the HLT::Identifier which corresponds to a specific leg of a given chain.
Definition: TrigCompositeUtilsRoot.cxx:166
ComboHypoToolBase::ComboHypoToolBase
ComboHypoToolBase(const std::string &type, const std::string &name, const IInterface *parent)
Definition: ComboHypoToolBase.cxx:10
TrigAFPDijetComboHypoTool::m_alignmentCorrection_nearA
Gaudi::Property< float > m_alignmentCorrection_nearA
Beam alignment corrections in the x position of ATLAS A side.
Definition: TrigAFPDijetComboHypoTool.h:63
ATH_MSG_WARNING
#define ATH_MSG_WARNING(x)
Definition: AthMsgStreamMacros.h:32
TrigAFPDijetComboHypoTool::m_maxProtonDist
Gaudi::Property< float > m_maxProtonDist
Threshold for the radius distance between parameterization and measurements.
Definition: TrigAFPDijetComboHypoTool.h:48
PathResolver::find_file
static std::string find_file(const std::string &logical_file_name, const std::string &search_path)
Definition: PathResolver.cxx:183
DEBUG
#define DEBUG
Definition: page_access.h:11
TrigAFPDijetComboHypoTool::m_maxProtonDiff_y
Gaudi::Property< float > m_maxProtonDiff_y
Threshold for the y distance between parameterization and measurements.
Definition: TrigAFPDijetComboHypoTool.h:52
HLT::Identifier::name
std::string name() const
reports human redable name
Definition: HLTIdentifier.cxx:12
pickleTool.object
object
Definition: pickleTool.py:29
TrigCompositeUtils::getIDFromLeg
HLT::Identifier getIDFromLeg(const HLT::Identifier &legIdentifier)
Generate the HLT::Identifier which corresponds to the chain name from the leg name.
Definition: TrigCompositeUtilsRoot.cxx:180
xAOD::track
@ track
Definition: TrackingPrimitives.h:513
ComboHypoToolBase::m_legMultiplicities
std::vector< int > m_legMultiplicities
The number of legs, and the required multiplicity on each leg.
Definition: ComboHypoToolBase.h:124
Monitored::Scalar
Declare a monitored scalar variable.
Definition: MonitoredScalar.h:34
TrigAFPDijetComboHypoTool::m_alignmentCorrection_nearC
Gaudi::Property< float > m_alignmentCorrection_nearC
Beam alignment corrections in the x position of ATLAS C side.
Definition: TrigAFPDijetComboHypoTool.h:65
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
WriteBchToCool.update
update
Definition: WriteBchToCool.py:67
TrigAFPDijetComboHypoTool::m_protonTransportParamFileNameC
Gaudi::Property< std::string > m_protonTransportParamFileNameC
Definition: TrigAFPDijetComboHypoTool.h:40
TrigAFPDijetComboHypoTool::m_GeV
const float m_GeV
Variable to convert from MeV to GeV.
Definition: TrigAFPDijetComboHypoTool.h:68