ATLAS Offline Software
JetIsolationTool.cxx
Go to the documentation of this file.
1 /*
2  Copyright (C) 2002-2024 CERN for the benefit of the ATLAS collaboration
3 */
4 
5 // JetIsolationTool.cxx
6 
10 //#include <sstream>
11 #include <format>
12 
13 using std::string;
14 using fastjet::PseudoJet;
15 
16 namespace jet {
17 
18  namespace JetIsolation {
19 
20  // **************************************************************************
21  // **************************************************************************
22  using FourMom_t = TLorentzVector;
23 
24  TVector3 unitVector(const FourMom_t& v){
25  TVector3 v3 = v.Vect();
26  return (1/v3.Mag())*v3;
27  }
28 
34  public:
35 
37  enum Kinematics {
39  };
40 
42  static constexpr std::array<std::string_view, 6> s_kname = {"Pt","PtPUsub" , "SumPt", "Par", "Perp", "P"};
43 
45  struct IsolationResult {
47  double isoSumPt = 0.0;
48  double isoArea = 0.;
49  };
50 
51  virtual ~IsolationCalculator() = default;
52 
53 
54  virtual string baseName() const {return "";}
55  virtual IsolationCalculator * clone(const xAOD::Jet* ) const {return nullptr;}
56  virtual void copyFrom( const IsolationCalculator* o, const xAOD::Jet*){
58  }
59 
60 
63  virtual IsolationResult jetIsolation(const xAOD::Jet*, std::vector<const xAOD::IParticle*> & ) const {
64  return {};
65  }
66 
67  bool scheduleKinematicCalculation(const std::string& kname){
68  auto it = std::ranges::find(s_kname, kname);
69  if( it != s_kname.end( )){
70  m_kinematics.push_back(static_cast<Kinematics>(it-s_kname.begin()) );
71  return true;
72  }
73  return false;
74  }
75 
76 
79  virtual std::vector<float>
80  calcIsolationVariables(const xAOD::Jet* jet, std::vector<const xAOD::IParticle*>& nearbyConstit) const {
81  IsolationResult result = jetIsolation(jet, nearbyConstit);
82  std::vector<float> calcVector;
83  float pt = jet->jetP4(xAOD::JetConstitScaleMomentum).pt();
84  static const SG::AuxElement::Accessor<float> areaAcc("ActiveArea");
85  float jetArea=0;
86  for(auto k : m_kinematics){
87  float v=-1;
88  switch( k ) {
89  case Pt:
90  v = result.isoP.Pt() / pt; break ;
91  case PtPUsub:
92  jetArea= areaAcc(*jet);
93  v = (result.isoP.Pt() - (result.isoArea-jetArea)*m_rho)/ (pt-jetArea*m_rho);
94  break;
95  case Perp:
96  v = result.isoP.Vect().Dot(unitVector(jet->p4())) /pt; break;
97  case SumPt:
98  v = result.isoSumPt; break;
99  case Par:
100  v = result.isoP.Vect().Perp(unitVector(jet->p4())) /pt ; break;
101  case P:
102  v = result.isoP.Vect().Mag()/pt; break ;
103  }
104  calcVector.push_back(v);
105  }
106  return calcVector;
107  }
108 
109  virtual
110  std::vector<std::string> calculationNames() const {
111  std::vector<std::string> v;
112  v.reserve(m_kinematics.size());
113  for(auto k : m_kinematics) {
114  v.emplace_back(baseName() + string(s_kname[k]));
115  }
116  return v;
117  }
118 
119 
120  void dump() const {
121  std::cout << "Isolation calculator "<< baseName() <<std::endl;
122  for(const auto& n : calculationNames()){
123  std::cout << " - "<< n << std::endl;
124  }
125  }
126 
127  void setEventDensity(float rho){
128  m_rho=rho;
129  }
130 
131  protected:
133  std::vector<Kinematics> m_kinematics;
135  float m_rho=-9999.; // initialized to obviously wrong value.
136  };
137 
138 
139  template<typename ISOCRITERIA>
141  public:
142 
143  IsolationCalculatorT(double param=0.) : m_iso(param) { }
144 
145  virtual IsolationResult
146  jetIsolation(const xAOD::Jet* jet, std::vector<const xAOD::IParticle*> &nearbyConstit) const {
148  double rap = jet->rapidity();
149  double phi = jet->phi();
150  for(const xAOD::IParticle* constit:nearbyConstit){
151  if ( m_iso.inIsolationArea(rap, phi, constit) ) {
152  result.isoP += constit->p4();
153  result.isoSumPt += constit->pt();
154  }
155  }
156  result.isoArea = m_iso.isoArea();
157  return result;
158  }
159 
160  virtual string baseName() const {return m_iso.name();}
161 
162  virtual IsolationCalculator * clone(const xAOD::Jet* j) const {
164  isoT->m_iso = m_iso;
165  isoT->m_iso.setup(j);
166  isoT->copyFrom(this,j);
167  return isoT;
168  }
169 
170  ISOCRITERIA m_iso;
171  };
172 
173 
178  IsolationAreaBase(double p, const string &n) : m_parameter(p), m_name(n){}
179 
180  bool inIsolationArea(double rap, double phi, const xAOD::IParticle* part) const {
181  // we use eta rather than rapidity for constituents, because the later can generate FPE (presumably in very low pt PFlow constit)
182  double dr2 = xAOD::P4Helpers::deltaR2(rap, phi, part->rapidity(), part->phi());
183  return dr2 < m_deltaRmax2;
184  }
185 
186  string name() const {
187  std::ostringstream oss; oss << m_name << int(10*m_parameter);
188  return oss.str();
189  }
190 
191  double isoArea() const{
192  return m_deltaRmax2*M_PI;
193  }
194 
195  double m_parameter;
196  string m_name;
197  double m_deltaRmax2 = 0.0;
198 
199  };
200 
201 
202 
203  // here we define a short cut to declare implementations of IsolationAreaBase classes.
204  // In most cases, only a definition of the max deltaR is enough to specify the area, hence these shortcuts.
205  // 1st parameter : class name
206  // 2nd parameter : code defining the max deltaR. Can use the variable 'param' representing the size parameter of this IsolationCalculator
207  // 3rd parameter (optional) : (re)-declaration of additional methods.
209 #define ISOAREA( calcName, deltaRcode , additionalDecl ) struct calcName : public IsolationAreaBase { \
210  calcName(double p) : IsolationAreaBase(p, #calcName){} \
211  virtual void setup(const xAOD::Jet* j) {double jetRadius=j->getSizeParameter(); double param = m_parameter; m_deltaRmax2=deltaRcode ; m_deltaRmax2*=m_deltaRmax2; (void)(param+jetRadius);} additionalDecl }
212 
213 
214  ISOAREA( IsoKR , jetRadius*param, ) ;
215  ISOAREA( IsoDelta, jetRadius+param, ) ;
216  ISOAREA( IsoFixedCone, param, ) ;
217  ISOAREA( IsoFixedArea, sqrt(jetRadius*jetRadius+param*M_1_PI) , ) ;
218 
219  // For Iso6To8 we need to redefine inIsolationArea
220  ISOAREA( Iso6To8, 0.8 , bool inIsolationArea(double rap, double phi, const xAOD::IParticle* constit)const ; ) ;
221  bool Iso6To8::inIsolationArea(double rap, double phi, const xAOD::IParticle* constit) const {
222  double dr2 = xAOD::P4Helpers::deltaR2(rap, phi, constit->rapidity(), constit->phi());
223  return ( (dr2<0.8*0.8) && (dr2>0.6*0.6) );
224  }
225 
226 
227  IsolationCalculator *createCalulator(const std::string& n, double parameter){
228 
229  if( n == "IsoKR" ) return new IsolationCalculatorT<IsoKR>( parameter);
230  if( n == "IsoDelta" ) return new IsolationCalculatorT<IsoDelta>( parameter);
231  if( n == "IsoFixedCone" ) return new IsolationCalculatorT<IsoFixedCone>( parameter);
232  if( n == "IsoFixedArea" ) return new IsolationCalculatorT<IsoFixedArea>( parameter);
233  if( n == "Iso6To8" ) return new IsolationCalculatorT<Iso6To8>( parameter);
234 
235  return nullptr;
236  }
237 
238 
239  } // namespace JetIsolation
240 
242  void colonSplit(const string &in, string &s1, string &s2, string &s3){
243  s2=""; s3="";
244  std::stringstream str(in);
245  std::getline(str, s1, ':' );
246  std::getline(str, s2, ':');
247  std::getline(str, s3);
248  }
249 
250 
251 } // namespace jet
252 
253 using namespace jet::JetIsolation;
254 
255 //**********************************************************************
256 
258  : asg::AsgTool(name) {
259  declareInterface<IJetDecorator>(this);
260 }
261 
262 //**********************************************************************
263 
265 
266 //**********************************************************************
267 
269  ATH_MSG_DEBUG ("Initializing " << name() << "...");
270 
271  // a temporary map of isolation calculator
272  std::map<string, IsolationCalculator*> calcMap;
273 
274  size_t nmom = m_isolationCodes.size();
275  // decode each isolation calculations as entered by properties
276  for ( size_t i=0; i<nmom; ++i ) {
277  string isocriteria, param_s, kinematic;
278  // decode the string passed as a property :
279  jet::colonSplit(m_isolationCodes[i], isocriteria, param_s, kinematic);
280  if( (param_s.empty())||(kinematic.empty())) {
281  ATH_MSG_ERROR(" Can't extract parameter values or kinematic code from "<<m_isolationCodes[i]);
282  return StatusCode::FAILURE;
283  }
284  string calcId = isocriteria + param_s;
285  // isocriteria + param_s defines a calculator which can then calculate several kinematics.
286  // check if this (isocriteria + param_s ) calculator has already been defined. If not do it now.
287  IsolationCalculator*& isoC = calcMap[calcId];
288  if ( isoC == nullptr ) {
289  isoC = createCalulator( isocriteria, std::stod(param_s)*0.1 );
290  }
291  if( isoC == nullptr ) {
292  ATH_MSG_ERROR(" Unkown isolation criteria "<< isocriteria << " from "<< m_isolationCodes[i] );
293  return StatusCode::FAILURE;
294  }
295  // add this kinematic for this calculator
296  bool ok = isoC->scheduleKinematicCalculation( kinematic);
297  if(!ok) {
298  ATH_MSG_ERROR(" Unkown isolation kinematic "<< kinematic << " from "<< m_isolationCodes[i] );
299  return StatusCode::FAILURE;
300  }
301  }
302 
303  if(m_jetContainerName.empty()) {
304  ATH_MSG_ERROR("JetIsolationTool needs to have its input jet container configured!");
305  return StatusCode::FAILURE;
306  }
307 
308  // Fill the iso calculator vector from the map
309  // Also fill DecorHandleKeyArrays at the same time
310  int ncalc=0;
311  for ( const auto& pair : calcMap ){
312  m_isoCalculators.push_back(pair.second);
313  ATH_MSG_DEBUG("Will use iso calculation : "<< pair.second->baseName() << " and variables :" );
314 
315  for(const auto& kname: pair.second->calculationNames()){
316  ATH_MSG_DEBUG(" --> : "<< kname );
317  m_decorKeys.push_back(std::format("{}.{}", m_jetContainerName.value(), kname));
318  ncalc++;
319  }
320  }
321 
322 
323  ATH_MSG_INFO("Initialized JetIsolationTool " << name());
324  if ( m_inputConstitKey.empty() ) {
325  ATH_MSG_ERROR(" No input pseudojet collection supplied");
326  return StatusCode::FAILURE;
327  } else {
328  ATH_MSG_INFO(" Input pseudojet collection: " << m_inputConstitKey.key());
329  ATH_CHECK(m_inputConstitKey.initialize());
330  }
331  ATH_MSG_INFO(" Isolation calculations: " << m_isolationCodes);
332  ATH_MSG_DEBUG("Total num calculations="<<ncalc<< " ndecorations="<<m_decorKeys.size());
333 
334  ATH_CHECK(m_decorKeys.initialize());
335 
336  if(!m_rhoKey.empty()){
337  ATH_CHECK(m_rhoKey.initialize());
338  ATH_MSG_INFO(" Using EventDensity from: " << m_rhoKey.key());
339  }
340 
341  return StatusCode::SUCCESS;
342 }
343 
344 //**********************************************************************
345 
347 
348 
349  ATH_MSG_DEBUG("Modifying jets in container with size " << jets.size());
350  if ( jets.empty() ) return StatusCode::SUCCESS;
351 
352  // Fetch the input pseudojets.
353  auto inputConstits = SG::makeHandle(m_inputConstitKey);
354  ATH_MSG_DEBUG("Retrieved input count is " << inputConstits->size());
355 
356  // adapt the calculators to these jets (radius, input type, etc...)
357  // Since we're in a const method, we must create a copy of the calculators we own.
358  // We use the 1st jet, assuming all others in the container are similar.
359  std::vector<IsolationCalculator*> calculators; // the adapted calculators.
360  for( const IsolationCalculator * calc : m_isoCalculators ){
361  IsolationCalculator * cloned = calc->clone( jets[0] );
362  cloned->setEventDensity(0);
363  calculators.push_back( cloned );
364  }
365 
366  // Retrieve and set EventDensity if needed
367  if(!m_rhoKey.empty()){
368  double rho=0;
370  if (! rhRhoKey->getDensity( xAOD::EventShape::Density, rho ) ) {
371  ATH_MSG_FATAL("Could not retrieve xAOD::EventShape::Density from xAOD::EventShape "<< m_rhoKey.key());
372  return StatusCode::FAILURE;
373  }
374  ATH_MSG_DEBUG("Rho = "<< rho);
375  for( IsolationCalculator * calc : calculators ) calc->setEventDensity(rho);
376  }
377 
378  // This will hold all the constituents around a jet which are not constituents of the jet
379  std::vector<const xAOD::IParticle*> nearbyC;
380  nearbyC.reserve( inputConstits->size() );
381  const static SG::AuxElement::ConstAccessor<char> PVMatchedAcc("matchedToPV");
382  // Loop over jets in this collection.
383  for (const xAOD::Jet* jet : jets ) {
384 
385  nearbyC.clear();
386  size_t nRejected=0;
387  const std::vector< ElementLink< xAOD::IParticleContainer > >& constitEL = jet->constituentLinks();
388 
389  // Fill nearbyC: for now we take ALL constituents which not constituents of the jet.
390  // this is a lot and it may render subsequent iso calculation slower. If so it
391  // could be useful to use a fast look-up map to preselect constituents close to the jet (ex: within 2*jetRadius)
392  for(const xAOD::IParticle *part: (*inputConstits)){
393  if((part->e()<=0) || ( PVMatchedAcc.isAvailable(*part) && !PVMatchedAcc(*part) )){
394  nRejected++;
395  continue;
396  }
397  bool found = std::any_of(constitEL.begin(), constitEL.end(), [&part](const auto& link) { return part == *link; });
398  if(!found){
399  nearbyC.push_back(part);
400  }
401  }
402  if ( (nearbyC.size() + jet->numConstituents()+nRejected) != inputConstits->size() ) {
403  ATH_MSG_WARNING("Inconsistent number of jet constituents found in jet.");
404  }
405 
406  ATH_MSG_DEBUG(jet->index()<< " # outside jet: " << nearbyC.size() << ", # rejected :"<< nRejected
407  << ", in jet: "<< jet->numConstituents()
408  << ", total: "<< inputConstits->size() );
409 
410 
411  // loop over calculators, calculate isolation given the close-by particles not part of the jet.
412  int c=0;
413  for(auto * isoCalc:calculators){
414  // perform all calculations with this isoCalc
415  std::vector<float> results = isoCalc->calcIsolationVariables(jet, nearbyC);
416  // decorate the jet with the calculated values
417  for( float value: results ) {
419  ATH_MSG_DEBUG(" decor "<< decorHandle.decorKey() << " " << value << " "<<c);
420  decorHandle(*jet) = value;
421  }
422  }
423  }
424 
425  // clear calculators :
426  for ( IsolationCalculator* calc : calculators ) {
427  delete calc;
428  }
429 
430  ATH_MSG_DEBUG("done");
431  return StatusCode::SUCCESS;
432 }
433 
434 
435 //**********************************************************************
436 
438  ATH_MSG_DEBUG ("Finalizing " << name() << "...");
439  for( size_t i=0;i<m_isoCalculators.size(); i++){
440  delete m_isoCalculators[i];
441  }
442  return StatusCode::SUCCESS;
443 }
444 
LArG4FSStartPointFilter.part
part
Definition: LArG4FSStartPointFilter.py:21
jet::JetIsolation::IsolationCalculator::IsolationResult::isoSumPt
double isoSumPt
Definition: JetIsolationTool.cxx:47
xAOD::EventShape_v1::getDensity
bool getDensity(EventDensityID id, double &v) const
Get a density variable from the object.
Definition: EventShape_v1.cxx:135
jet::JetIsolation::IsolationCalculator::~IsolationCalculator
virtual ~IsolationCalculator()=default
jet::JetIsolation::IsolationCalculator::Perp
@ Perp
Definition: JetIsolationTool.cxx:38
jet::JetIsolation::IsolationCalculator::calcIsolationVariables
virtual std::vector< float > calcIsolationVariables(const xAOD::Jet *jet, std::vector< const xAOD::IParticle * > &nearbyConstit) const
Implement the calculation of isolation variables for this jet.
Definition: JetIsolationTool.cxx:80
jet::JetIsolation::createCalulator
IsolationCalculator * createCalulator(const std::string &n, double parameter)
Definition: JetIsolationTool.cxx:227
JetIsolationTool::m_decorKeys
SG::WriteDecorHandleKeyArray< xAOD::JetContainer > m_decorKeys
Definition: JetIsolationTool.h:120
verify_menu_config.results
results
Definition: verify_menu_config.py:67
ATH_MSG_FATAL
#define ATH_MSG_FATAL(x)
Definition: AthMsgStreamMacros.h:34
jet::JetIsolation::IsolationCalculator::m_kinematics
std::vector< Kinematics > m_kinematics
kinematics isolation variables to be computed
Definition: JetIsolationTool.cxx:133
get_generator_info.result
result
Definition: get_generator_info.py:21
jet::JetIsolation::IsolationCalculatorT::IsolationCalculatorT
IsolationCalculatorT(double param=0.)
Definition: JetIsolationTool.cxx:143
jet::JetIsolation::IsolationCalculator::jetIsolation
virtual IsolationResult jetIsolation(const xAOD::Jet *, std::vector< const xAOD::IParticle * > &) const
Compute the isolation 4-momentum from jet and jet inputs.
Definition: JetIsolationTool.cxx:63
vtune_athena.format
format
Definition: vtune_athena.py:14
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
CaloCellPos2Ntuple.int
int
Definition: CaloCellPos2Ntuple.py:24
SG::Accessor
Helper class to provide type-safe access to aux data.
Definition: Control/AthContainers/AthContainers/Accessor.h:68
JetIsolationTool::~JetIsolationTool
virtual ~JetIsolationTool()
Dtor.
JetIsolationTool.h
jet::JetIsolation::IsolationCalculator::calculationNames
virtual std::vector< std::string > calculationNames() const
Definition: JetIsolationTool.cxx:110
SG::ReadHandle
Definition: StoreGate/StoreGate/ReadHandle.h:70
xAODP4Helpers.h
xAOD::IParticle::rapidity
virtual double rapidity() const =0
The true rapidity (y) of the particle.
jet::JetIsolation::IsolationCalculator::P
@ P
Definition: JetIsolationTool.cxx:38
jet::JetIsolation::IsolationAreaBase::m_deltaRmax2
double m_deltaRmax2
Definition: JetIsolationTool.cxx:197
skel.it
it
Definition: skel.GENtoEVGEN.py:396
jet::JetIsolation::IsolationCalculator::m_rho
float m_rho
Value of the event density in case it is needed.
Definition: JetIsolationTool.cxx:135
asg
Definition: DataHandleTestTool.h:28
test_pyathena.pt
pt
Definition: test_pyathena.py:11
M_PI
#define M_PI
Definition: ActiveFraction.h:11
athena.value
value
Definition: athena.py:124
SG::ConstAccessor
Helper class to provide constant type-safe access to aux data.
Definition: ConstAccessor.h:55
xAOD::P4Helpers::deltaR2
double deltaR2(double rapidity1, double phi1, double rapidity2, double phi2)
from bare rapidity,phi
Definition: xAODP4Helpers.h:111
xAOD::IParticle
Class providing the definition of the 4-vector interface.
Definition: Event/xAOD/xAODBase/xAODBase/IParticle.h:41
jet::JetIsolation::FourMom_t
TLorentzVector FourMom_t
Definition: JetIsolationTool.cxx:22
jet::JetIsolation::IsolationCalculatorT
Definition: JetIsolationTool.cxx:140
jet::JetIsolation::IsolationAreaBase::m_parameter
double m_parameter
Definition: JetIsolationTool.cxx:195
SG::makeHandle
SG::ReadCondHandle< T > makeHandle(const SG::ReadCondHandleKey< T > &key, const EventContext &ctx=Gaudi::Hive::currentContext())
Definition: ReadCondHandle.h:270
xAOD::EventShape_v1::Density
@ Density
Definition: EventShape_v1.h:47
xAOD::JetConstitScaleMomentum
@ JetConstitScaleMomentum
Definition: JetTypes.h:29
jet::JetIsolation::IsolationCalculator::setEventDensity
void setEventDensity(float rho)
Definition: JetIsolationTool.cxx:127
python.utils.AtlRunQueryDQUtils.p
p
Definition: AtlRunQueryDQUtils.py:210
jet
Definition: JetCalibTools_PlotJESFactors.cxx:23
ATH_MSG_ERROR
#define ATH_MSG_ERROR(x)
Definition: AthMsgStreamMacros.h:33
JetIsolationTool::m_inputConstitKey
SG::ReadHandleKey< xAOD::IParticleContainer > m_inputConstitKey
Definition: JetIsolationTool.h:117
lumiFormat.i
int i
Definition: lumiFormat.py:85
CaloCluster.h
jet::JetIsolation::IsolationAreaBase::name
string name() const
Definition: JetIsolationTool.cxx:186
beamspotman.n
n
Definition: beamspotman.py:731
jet::JetIsolation::IsolationCalculator::Kinematics
Kinematics
Define the available isolation variables.
Definition: JetIsolationTool.cxx:37
jet::JetIsolation::IsolationCalculator::s_kname
static constexpr std::array< std::string_view, 6 > s_kname
names for isolation variables. Must match EXACTLY the enum.
Definition: JetIsolationTool.cxx:42
EL::StatusCode
::StatusCode StatusCode
StatusCode definition for legacy code.
Definition: PhysicsAnalysis/D3PDTools/EventLoop/EventLoop/StatusCode.h:22
jet::JetIsolation::IsolationCalculator::Pt
@ Pt
Definition: JetIsolationTool.cxx:38
ATH_MSG_DEBUG
#define ATH_MSG_DEBUG(x)
Definition: AthMsgStreamMacros.h:29
SG::WriteDecorHandle
Handle class for adding a decoration to an object.
Definition: StoreGate/StoreGate/WriteDecorHandle.h:100
jet::JetIsolation::IsolationAreaBase::inIsolationArea
bool inIsolationArea(double rap, double phi, const xAOD::IParticle *part) const
Definition: JetIsolationTool.cxx:180
JetIsolationTool::initialize
virtual StatusCode initialize() override
Dummy implementation of the initialisation function.
Definition: JetIsolationTool.cxx:268
ATH_CHECK
#define ATH_CHECK
Definition: AthCheckMacros.h:40
JetIsolationTool::finalize
virtual StatusCode finalize() override
Definition: JetIsolationTool.cxx:437
JetIsolationTool::m_isolationCodes
Gaudi::Property< std::vector< std::string > > m_isolationCodes
Definition: JetIsolationTool.h:114
jet::JetIsolation::IsolationAreaBase::isoArea
double isoArea() const
Definition: JetIsolationTool.cxx:191
DataVector
Derived DataVector<T>.
Definition: DataVector.h:794
jet::JetIsolation
Definition: JetIsolationTool.h:83
jet::JetIsolation::IsolationCalculatorT::m_iso
ISOCRITERIA m_iso
Definition: JetIsolationTool.cxx:170
JetIsolationTool::JetIsolationTool
JetIsolationTool(const std::string &myname)
Ctor.
Definition: JetIsolationTool.cxx:257
jet::JetIsolation::IsolationAreaBase::m_name
string m_name
Definition: JetIsolationTool.cxx:196
ReadCellNoiseFromCoolCompare.s3
s3
Definition: ReadCellNoiseFromCoolCompare.py:380
jet::JetIsolation::IsolationAreaBase
Definition: JetIsolationTool.cxx:177
name
std::string name
Definition: Control/AthContainers/Root/debug.cxx:228
jet::JetIsolation::IsolationAreaBase::IsolationAreaBase
IsolationAreaBase(double p, const string &n)
Definition: JetIsolationTool.cxx:178
jet::JetIsolation::IsolationCalculator::SumPt
@ SumPt
Definition: JetIsolationTool.cxx:38
jet::JetIsolation::IsolationCalculator
IsolationCalculator : base class for isolation calculations Implementations of this class encapsulate...
Definition: JetIsolationTool.cxx:33
jet::JetIsolation::IsolationCalculator::clone
virtual IsolationCalculator * clone(const xAOD::Jet *) const
Definition: JetIsolationTool.cxx:55
jet::JetIsolation::unitVector
TVector3 unitVector(const FourMom_t &v)
Definition: JetIsolationTool.cxx:24
jet::JetIsolation::IsolationCalculatorT::jetIsolation
virtual IsolationResult jetIsolation(const xAOD::Jet *jet, std::vector< const xAOD::IParticle * > &nearbyConstit) const
Compute the isolation 4-momentum from jet and jet inputs.
Definition: JetIsolationTool.cxx:146
jet::JetIsolation::IsolationCalculator::PtPUsub
@ PtPUsub
Definition: JetIsolationTool.cxx:38
python.PyAthena.v
v
Definition: PyAthena.py:154
xAOD::Jet_v1
Class describing a jet.
Definition: Jet_v1.h:57
jet::JetIsolation::IsolationCalculator::baseName
virtual string baseName() const
Definition: JetIsolationTool.cxx:54
jet::colonSplit
void colonSplit(const string &in, string &s1, string &s2, string &s3)
helper
Definition: JetIsolationTool.cxx:242
CondAlgsOpts.found
int found
Definition: CondAlgsOpts.py:101
jet::JetIsolation::IsolationCalculator::dump
void dump() const
Definition: JetIsolationTool.cxx:120
python.CaloScaleNoiseConfig.str
str
Definition: CaloScaleNoiseConfig.py:78
ATH_MSG_WARNING
#define ATH_MSG_WARNING(x)
Definition: AthMsgStreamMacros.h:32
SG::WriteDecorHandle::decorKey
const std::string & decorKey() const
Return the name of the decoration alias (CONT.DECOR).
ReadCellNoiseFromCoolCompare.s2
s2
Definition: ReadCellNoiseFromCoolCompare.py:379
jet::JetIsolation::IsolationCalculator::scheduleKinematicCalculation
bool scheduleKinematicCalculation(const std::string &kname)
Definition: JetIsolationTool.cxx:67
SG::ConstAccessor::isAvailable
bool isAvailable(const ELT &e) const
Test to see if this variable exists in the store.
jet::JetIsolation::IsolationCalculator::IsolationResult
Holds the 4-vector of all constituents contributing to isolation.
Definition: JetIsolationTool.cxx:45
jet::JetIsolation::IsolationCalculator::IsolationResult::isoP
FourMom_t isoP
Definition: JetIsolationTool.cxx:46
JetIsolationTool::m_rhoKey
SG::ReadHandleKey< xAOD::EventShape > m_rhoKey
Definition: JetIsolationTool.h:122
defineDB.jets
list jets
Definition: JetTagCalibration/share/defineDB.py:24
str
Definition: BTagTrackIpAccessor.cxx:11
JetIsolationTool::m_isoCalculators
std::vector< jet::JetIsolation::IsolationCalculator * > m_isoCalculators
the list of isolation calculation objects (they are actually used only as template objects from which...
Definition: JetIsolationTool.h:127
jet::JetIsolation::IsolationCalculator::Par
@ Par
Definition: JetIsolationTool.cxx:38
xAOD::IParticle::phi
virtual double phi() const =0
The azimuthal angle ( ) of the particle.
jet::JetIsolation::IsolationCalculator::copyFrom
virtual void copyFrom(const IsolationCalculator *o, const xAOD::Jet *)
Definition: JetIsolationTool.cxx:56
JetIsolationTool::m_jetContainerName
Gaudi::Property< std::string > m_jetContainerName
Definition: JetIsolationTool.h:115
jet::JetIsolation::IsolationCalculatorT::baseName
virtual string baseName() const
Definition: JetIsolationTool.cxx:160
beamspotnt.calc
calc
Definition: bin/beamspotnt.py:1252
jet::JetIsolation::IsolationCalculatorT::clone
virtual IsolationCalculator * clone(const xAOD::Jet *j) const
Definition: JetIsolationTool.cxx:162
python.compressB64.c
def c
Definition: compressB64.py:93
fitman.rho
rho
Definition: fitman.py:532
JetIsolationTool::decorate
virtual StatusCode decorate(const xAOD::JetContainer &jets) const override
Decorate a jet collection without otherwise modifying it.
Definition: JetIsolationTool.cxx:346
fitman.k
k
Definition: fitman.py:528
jet::JetIsolation::ISOAREA
ISOAREA(IsoKR, jetRadius *param,)
jet::JetIsolation::IsolationCalculator::IsolationResult::isoArea
double isoArea
Definition: JetIsolationTool.cxx:48