ATLAS Offline Software
JetIsolationTool.cxx
Go to the documentation of this file.
1 /*
2  Copyright (C) 2002-2023 CERN for the benefit of the ATLAS collaboration
3 */
4 
5 // JetIsolationTool.cxx
6 
10 #include <sstream>
11 
12 using std::string;
13 using fastjet::PseudoJet;
14 
15 namespace jet {
16 
17  namespace JetIsolation {
18 
19  using FourMom_t = TLorentzVector;
20 
23  public:
24 
26  enum Kinematics {
28  };
29 
31  static const string s_kname[4];
32 
35  struct IsolationResult {
36  double isoSumPt(){ return m_isoSumPt;}
37  double isoPar(const TVector3 &unitV){ return m_isoP.Vect().Dot(unitV);}
38  double isoPerp(const TVector3 &unitV){ return m_isoP.Vect().Perp(unitV);}
39  FourMom_t & isoP(){ return m_isoP;}
40 
42  double m_isoSumPt = 0.0;
43 
44  };
45 
46 
47  virtual ~IsolationCalculator() = default;
48 
49 
50  virtual string baseName() const {return "";}
51  virtual IsolationCalculator * clone(const xAOD::Jet* ) const {return nullptr;}
52  virtual void copyFrom( const IsolationCalculator* o, const xAOD::Jet*){
55  }
56 
57 
60  virtual IsolationResult jetIsolation(const xAOD::Jet*, std::vector<jet::ParticlePosition> & ) const {
61  return {};
62  }
63  virtual std::map<std::string, float>
64  calcIsolationAttributes(const xAOD::Jet* jet, std::vector<jet::ParticlePosition>& nearbyConstit) const {
65  IsolationResult result = jetIsolation(jet, nearbyConstit);
66  std::map<std::string, float> result_map;
67  for ( size_t i=0; i<m_kinematics.size(); ++i ) {
68  switch( m_kinematics[i] ) {
69  case Perp:
70  result_map.insert(std::pair<std::string, float>(s_kname[i], result.isoPerp(jet->p4().Vect()) ));
71  break;
72  case SumPt:
73  result_map.insert(std::pair<std::string, float>(s_kname[i], result.isoSumPt() ));
74  break;
75  case Par:
76  result_map.insert(std::pair<std::string, float>(s_kname[i], result.isoPar(jet->p4().Vect()) ));
77  break;
78  case P:
79  result_map.insert(std::pair<std::string, float>(s_kname[i], result.isoP().Vect().Mag() ));
80  break;
81  }
82  }
83  return result_map;
84  }
85 
86  bool scheduleKinematicCalculation(const std::string& kname){
87  for( size_t i=0; i<4 ;i++){
88  if( s_kname[i]==kname) {
89  m_kinematics.push_back( (Kinematics) i);
90  m_attNames.push_back( baseName()+kname );
91  return true;
92  }
93  }
94  return false;
95  }
96 
97 
98  void dump(){
99  std::cout << "Isolation calculator "<< baseName() <<std::endl;
100  for( size_t i =0 ; i<m_attNames.size(); i++){
101  std::cout << " - "<< m_attNames[i] << std::endl;
102  }
103  }
104 
105  protected:
106  std::vector<Kinematics> m_kinematics;
107  std::vector<string> m_attNames;
108  };
109 
110  const string IsolationCalculator::s_kname[4] = {"SumPt", "Par", "Perp", "P"};
111 
112 
115  return TLorentzVector(p.px(), p.py(), p.pz(), p.e());
116  }
117  double getPt(jet::ParticlePosition& p) const { return p.pt();}
118  };
119 
120  template<typename ISOCRITERIA, typename KINEMATICGETTER = PseudoJetKinematicGetter>
122  public:
123 
124  IsolationCalculatorT(double param=0.) : m_iso(param) { }
125 
126  virtual IsolationResult
127  jetIsolation(const xAOD::Jet* jet, std::vector<jet::ParticlePosition> &nearbyConstit) const {
129  result.m_isoSumPt = 0;
130  for ( size_t i=0 ; i<nearbyConstit.size(); ++i ) {
131  if ( m_iso.inIsolationArea(jet, nearbyConstit[i]) ) {
132  result.m_isoP += m_kine.getP(nearbyConstit[i]);
133  result.m_isoSumPt += m_kine.getPt(nearbyConstit[i]);
134  }
135  }
136  return result;
137  }
138 
139  virtual string baseName() const {return m_iso.name();}
140 
141  virtual IsolationCalculator * clone(const xAOD::Jet* j) const {
142  IsolationCalculator* iso;
143  auto* isoT= new IsolationCalculatorT();
144  isoT->m_iso = m_iso;
145  isoT->m_iso.setup(j);
146  isoT->m_kine = m_kine;
147  iso = isoT;
148  iso->copyFrom(this,j);
149  return iso;
150  }
151 
152  ISOCRITERIA m_iso;
153  KINEMATICGETTER m_kine;
154  };
155 
156 
161  IsolationAreaBase(double p, const string &n) : m_parameter(p), m_name(n){}
162 
164  double dr2 = JetDistances::deltaR(j->eta(), j->phi(), part.x(), part.y());
165  return dr2 < m_deltaRmax2;
166  }
167 
168  string name() const {
169  std::ostringstream oss; oss << m_name << int(10*m_parameter);
170  return oss.str();
171  }
172 
173  double m_parameter;
174  string m_name;
175  double m_deltaRmax2 = 0.0;
176 
177  };
178 
179 
180 
181  // here we define a short cut to declare implementation of IsolationAreaBase classes.
182  // In most cases, only a definition of the max deltaR is enough to specify the area, hence these shortcuts.
183  // 1st parameter : class name
184  // 2nd parameter : code defining the max deltaR
185  // 3rd parameter (optional) : (re)-declaration of additional methods.
187 #define ISOAREA( calcName, deltaRcode , additionalDecl ) struct calcName : public IsolationAreaBase { \
188  calcName(double p) : IsolationAreaBase(p, #calcName){} \
189  virtual void setup(const xAOD::Jet* j) {double jetRadius=j->getSizeParameter(); double param = m_parameter; m_deltaRmax2=deltaRcode ; m_deltaRmax2*=m_deltaRmax2; param=jetRadius*param;} additionalDecl }
190 
191 
192 
193  ISOAREA( IsoKR , jetRadius*param, ) ;
194  ISOAREA( IsoDelta, jetRadius+param, ) ;
195  ISOAREA( IsoFixedCone, param, ) ;
196  ISOAREA( IsoFixedArea, sqrt(jetRadius*jetRadius+param*M_1_PI) , ) ;
197 
198  // For Iso6To8 we need to redefine inIsolationArea
199  ISOAREA( Iso6To8, 0.8 , bool inIsolationArea(const xAOD::Jet* j, jet::ParticlePosition& constit)const ; ) ;
200  bool Iso6To8::inIsolationArea(const xAOD::Jet* j, jet::ParticlePosition& constit) const {
201  double dr2 = JetDistances::deltaR2(j->eta(), j->phi(), constit.x(), constit.y());
202  return ( (dr2<0.8*0.8) && (dr2>0.6*0.6) );
203  }
204 
205 
206  IsolationCalculator *createCalulator(const std::string& n, double parameter){
207 
208  if( n == "IsoKR" ) return new IsolationCalculatorT<IsoKR>( parameter);
209  if( n == "IsoDelta" ) return new IsolationCalculatorT<IsoDelta>( parameter);
210  if( n == "IsoFixedCone" ) return new IsolationCalculatorT<IsoFixedCone>( parameter);
211  if( n == "IsoFixedArea" ) return new IsolationCalculatorT<IsoFixedArea>( parameter);
212  if( n == "Iso6To8" ) return new IsolationCalculatorT<Iso6To8>( parameter);
213 
214  return nullptr;
215  }
216 
217 
218  } // namespace JetIsolation
219 
221  void colonSplit(const string &in, string &s1, string &s2, string &s3){
222  s2=""; s3="";
223  std::stringstream str(in);
224  std::getline(str, s1, ':' );
225  std::getline(str, s2, ':');
226  std::getline(str, s3);
227  }
228 
229 
230  bool isConstituent(const xAOD::IParticle* p,const xAOD::Jet* j){
231  // just need raw constituents.
232  for(size_t i = 0;i<j->numConstituents();i++){
233  if( p == j->rawConstituent(i) ) return true;
234  }
235  return false;
236  }
237 
238 } // namespace jet
239 
240 using namespace jet::JetIsolation;
241 
242 //**********************************************************************
243 
245  : asg::AsgTool(name) {
246  declareInterface<IJetDecorator>(this);
247 }
248 
249 //**********************************************************************
250 
252 
253 //**********************************************************************
254 
256  ATH_MSG_DEBUG ("Initializing " << name() << "...");
257 
258  // a temporary map of isolation calculator
259  std::map<string, IsolationCalculator*> calcMap;
260 
261  size_t nmom = m_isolationCodes.size();
262  // decode each isolation calculations as entered by properties
263  for ( size_t i=0; i<nmom; ++i ) {
264  string isocriteria, param_s, kinematic;
265  jet::colonSplit(m_isolationCodes[i], isocriteria, param_s, kinematic);
266  string calcId = isocriteria + param_s;
267  IsolationCalculator*& isoC = calcMap[calcId];
268  if ( isoC == nullptr ) {
269  isoC = createCalulator( isocriteria, std::stod(param_s)*0.1 );
270  }
271  if( isoC == nullptr ) {
272  ATH_MSG_ERROR(" Unkown isolation criteria "<< isocriteria << " from "<< m_isolationCodes[i] );
273  return StatusCode::FAILURE;
274  }
275  bool ok = isoC->scheduleKinematicCalculation( kinematic);
276  if(!ok) {
277  ATH_MSG_ERROR(" Unkown isolation kinematic "<< kinematic << " from "<< m_isolationCodes[i] );
278  return StatusCode::FAILURE;
279  }
280  }
281 
282  if(m_jetContainerName.empty()) {
283  ATH_MSG_ERROR("JetIsolationTool needs to have its input jet container configured!");
284  return StatusCode::FAILURE;
285  }
286 
287  // Fill the iso calculator vector from the map
288  // Also fill DecorHandleKeyArrays at the same time
289  for ( auto& pair : calcMap ){
290  m_isoCalculators.push_back(pair.second);
291  ATH_MSG_DEBUG("Will use iso calculation : "<< pair.second->baseName() );
292  pair.second->dump();
293 
294  m_perpKeys.emplace_back(m_jetContainerName + "." + pair.second->baseName() + "Perp");
295  m_sumPtKeys.emplace_back(m_jetContainerName + "." + pair.second->baseName() + "SumPt");
296  m_parKeys.emplace_back(m_jetContainerName + "." + pair.second->baseName() + "Par");
297  m_pKeys.emplace_back(m_jetContainerName + "." + pair.second->baseName() + "P");
298  }
299 
300  ATH_MSG_INFO("Initialized JetIsolationTool " << name());
301  if ( m_pjsin.empty() ) {
302  ATH_MSG_ERROR(" No input pseudojet collection supplied");
303  return StatusCode::FAILURE;
304  } else {
305  ATH_MSG_INFO(" Input pseudojet collection: " << m_pjsin.key());
307  }
308  ATH_MSG_INFO(" Isolation calculations: " << m_isolationCodes);
309 
311  ATH_CHECK(m_inputTypeKey.initialize());
312 
313  ATH_CHECK(m_perpKeys.initialize());
314  ATH_CHECK(m_sumPtKeys.initialize());
315  ATH_CHECK(m_parKeys.initialize());
316  ATH_CHECK(m_pKeys.initialize());
317 
318 
319  return StatusCode::SUCCESS;
320 }
321 
322 //**********************************************************************
323 
325 
327 
328  ATH_MSG_DEBUG("Modifying jets in container with size " << jets.size());
329  if ( jets.empty() ) return StatusCode::SUCCESS;
330 
331  // Fetch the input pseudojets.
332  auto pjsin = SG::makeHandle(m_pjsin);
333  const PseudoJetContainer* inputConstits = pjsin.get();
334  ATH_MSG_DEBUG("Retrieved input count is " << inputConstits->size());
335 
336  // adapt the calculators to these jets (radius, input type, etc...)
337  // Since we're in a const method, we must create a copy of the calculators we own.
338  // We use the 1st jet, assuming all others in the container are similar.
339  std::vector<IsolationCalculator*> calculators; // the adapted calculators.
340  for( const IsolationCalculator * calc : m_isoCalculators ){
341  IsolationCalculator * cloned = calc->clone( jets[0] );
342  calculators.push_back( cloned );
343  }
344 
345  // Loop over jets in this collection.
346  for (const xAOD::Jet* pjet : jets ) {
347 
348  // Check this jet has the same inputs.
349  // int jinp = inputTypeHandle(*pjet);
350  // This needs to be reimplemented when we decide how to better
351  // encode this information -- right now this can't be matched
352  // to the input PseudoJetContainer
353 
354  // Create jet position.
355  jet::ParticlePosition jetPos(pjet);
356 
357  // restrict to nearby particles which are NOT jet constituents
358  // (for the expected num of constituents per jet (~30), doing a naive loop is
359  // faster than using set objects)
360  std::vector<jet::ParticlePosition> nearbyC;
361  nearbyC.reserve( 30 ); // educated guess.
362 
363  ATH_MSG_VERBOSE("Jet eta=" << jetPos.x() << ", phi=" << jetPos.y());
364  for ( unsigned int ippj=0; ippj<inputConstits->size(); ++ippj ) {
365  const PseudoJet* ppj = &(inputConstits->casVectorPseudoJet()->at(ippj));
366  const xAOD::IParticle* ppar = nullptr;
367  string label = "none";
368  if ( ppj->has_user_info<jet::IConstituentUserInfo>() ) {
369  const auto& uin = ppj->user_info<jet::IConstituentUserInfo>();
370  ppar = uin.particle();
371  label = uin.label();
372  } else {
373  ATH_MSG_WARNING("Pseudojet does not have the expected user info.");
374  }
376  string msg = "Skipping";
377  bool found = false;
378  if ( ppar != nullptr ) {
379  for ( unsigned int icon=0; icon<pjet->numConstituents(); ++icon ) {
380  if ( ippj == 0 ) ATH_MSG_VERBOSE(" Jet con: " << long(pjet->rawConstituent(icon)));
381  if ( pjet->rawConstituent(icon) == ppar ) {
382  found = true;
383  break;
384  }
385  }
386  }
387  if ( ! found ) {
388  msg = "Keeping";
389  nearbyC.push_back(pos); // the constituent does not belong to jet
390  }
391  ATH_MSG_VERBOSE(" " << msg << " eta=" << pos.x() << ", phi=" << pos.y()
392  << " @" << long(ppar) << " " << label);
393  }
394  if ( nearbyC.size() + pjet->numConstituents() != inputConstits->size() ) {
395  ATH_MSG_WARNING("Inconsistent number of jet constituents found in jet.");
396  }
397 
398  ATH_MSG_DEBUG( " # outside jet: "
399  << nearbyC.size() << ", in jet: "<< pjet->numConstituents()
400  << ", total: "<< inputConstits->size() );
401 
402  std::map<std::string, const SG::WriteDecorHandleKeyArray<xAOD::JetContainer>* > decorKeyMap;
407 
408  // loop over calculators, calculate isolation given the close-by particles not part of the jet.
409  for ( size_t iCalc = 0; iCalc < calculators.size(); iCalc++ ) {
410  std::map<std::string, float> results = calculators.at(iCalc)->calcIsolationAttributes(pjet, nearbyC);
411  for( const auto& [var_name, value]: results ) {
412  SG::WriteDecorHandle<xAOD::JetContainer, float> decorHandle(decorKeyMap.at(var_name)->at(iCalc));
413  decorHandle(*pjet) = value;
414  }
415  }
416 
417  }
418 
419  // clear calculators :
420  for ( IsolationCalculator* calc : calculators ) {
421  delete calc;
422  }
423 
424  ATH_MSG_DEBUG("done");
425  return StatusCode::SUCCESS;
426 }
427 
428 //**********************************************************************
429 
431  ATH_MSG_DEBUG ("Finalizing " << name() << "...");
432  for( size_t i=0;i<m_isoCalculators.size(); i++){
433  delete m_isoCalculators[i];
434  }
435  return StatusCode::SUCCESS;
436 }
437 
LArG4FSStartPointFilter.part
part
Definition: LArG4FSStartPointFilter.py:21
jet::JetIsolation::IsolationCalculator::~IsolationCalculator
virtual ~IsolationCalculator()=default
jet::JetIsolation::IsolationCalculator::Perp
@ Perp
Definition: JetIsolationTool.cxx:27
jet::JetIsolation::createCalulator
IsolationCalculator * createCalulator(const std::string &n, double parameter)
Definition: JetIsolationTool.cxx:206
jet::JetIsolation::IsolationCalculatorT::baseName
virtual string baseName() const
Definition: JetIsolationTool.cxx:139
jet::JetIsolation::IsolationCalculatorT::jetIsolation
virtual IsolationResult jetIsolation(const xAOD::Jet *jet, std::vector< jet::ParticlePosition > &nearbyConstit) const
Compute the isolation momentum from jet and jet inputs.
Definition: JetIsolationTool.cxx:127
jet::JetIsolation::IsolationCalculatorT::m_iso
ISOCRITERIA m_iso
Definition: JetIsolationTool.cxx:152
jet::JetIsolation::IsolationCalculator::m_kinematics
std::vector< Kinematics > m_kinematics
Definition: JetIsolationTool.cxx:106
get_generator_info.result
result
Definition: get_generator_info.py:21
python.PerfMonSerializer.p
def p
Definition: PerfMonSerializer.py:743
ATH_MSG_INFO
#define ATH_MSG_INFO(x)
Definition: AthMsgStreamMacros.h:31
jet::JetIsolation::PseudoJetKinematicGetter
Definition: JetIsolationTool.cxx:113
JetIsolationTool::~JetIsolationTool
virtual ~JetIsolationTool()
Dtor.
JetIsolationTool.h
CheckAppliedSFs.var_name
var_name
Definition: CheckAppliedSFs.py:241
PlotCalibFromCool.label
label
Definition: PlotCalibFromCool.py:78
jet::JetIsolation::IsolationCalculator::P
@ P
Definition: JetIsolationTool.cxx:27
jet::JetIsolation::IsolationAreaBase::m_deltaRmax2
double m_deltaRmax2
Definition: JetIsolationTool.cxx:175
asg
Definition: DataHandleTestTool.h:28
JetIsolationTool::m_pKeys
SG::WriteDecorHandleKeyArray< xAOD::JetContainer > m_pKeys
Definition: JetIsolationTool.h:159
athena.value
value
Definition: athena.py:122
jet::JetIsolation::IsolationCalculatorT::clone
virtual IsolationCalculator * clone(const xAOD::Jet *j) const
Definition: JetIsolationTool.cxx:141
xAOD::Jet_v1::phi
virtual double phi() const
The azimuthal angle ( ) of the particle.
Definition: Jet_v1.cxx:54
jet::JetIsolation::IsolationCalculatorT::m_kine
KINEMATICGETTER m_kine
Definition: JetIsolationTool.cxx:153
JetIsolationTool::m_parKeys
SG::WriteDecorHandleKeyArray< xAOD::JetContainer > m_parKeys
Definition: JetIsolationTool.h:158
jet::JetIsolation::IsolationCalculator::IsolationResult::isoSumPt
double isoSumPt()
Definition: JetIsolationTool.cxx:36
PseudoJetContainer
Definition: PseudoJetContainer.h:48
ATH_MSG_VERBOSE
#define ATH_MSG_VERBOSE(x)
Definition: AthMsgStreamMacros.h:28
SG::VarHandleKey::key
const std::string & key() const
Return the StoreGate ID for the referenced object.
Definition: AthToolSupport/AsgDataHandles/Root/VarHandleKey.cxx:141
SG::VarHandleKey::empty
bool empty() const
Test if the key is blank.
Definition: AthToolSupport/AsgDataHandles/Root/VarHandleKey.cxx:150
xAOD::IParticle
Class providing the definition of the 4-vector interface.
Definition: Event/xAOD/xAODBase/xAODBase/IParticle.h:40
jet::JetIsolation::FourMom_t
TLorentzVector FourMom_t
Definition: JetIsolationTool.cxx:19
jet::JetIsolation::IsolationCalculatorT
Definition: JetIsolationTool.cxx:121
jet::JetIsolation::IsolationAreaBase::m_parameter
double m_parameter
Definition: JetIsolationTool.cxx:173
SG::makeHandle
SG::ReadCondHandle< T > makeHandle(const SG::ReadCondHandleKey< T > &key, const EventContext &ctx=Gaudi::Hive::currentContext())
Definition: ReadCondHandle.h:269
jet::JetIsolation::IsolationCalculator::jetIsolation
virtual IsolationResult jetIsolation(const xAOD::Jet *, std::vector< jet::ParticlePosition > &) const
Compute the isolation momentum from jet and jet inputs.
Definition: JetIsolationTool.cxx:60
JetIsolationTool::m_inputTypeKey
SG::ReadDecorHandleKey< xAOD::JetContainer > m_inputTypeKey
Definition: JetIsolationTool.h:155
jet
Definition: JetCalibTools_PlotJESFactors.cxx:23
jet::JetIsolation::IsolationCalculator::IsolationResult::isoPerp
double isoPerp(const TVector3 &unitV)
Definition: JetIsolationTool.cxx:38
ATH_MSG_ERROR
#define ATH_MSG_ERROR(x)
Definition: AthMsgStreamMacros.h:33
SG::ReadDecorHandle
Handle class for reading a decoration on an object.
Definition: StoreGate/StoreGate/ReadDecorHandle.h:94
jet::isConstituent
bool isConstituent(const xAOD::IParticle *p, const xAOD::Jet *j)
Definition: JetIsolationTool.cxx:230
jet::ParticlePosition::x
double x() const
Definition: JetIsolationTool.h:102
lumiFormat.i
int i
Definition: lumiFormat.py:92
CaloCluster.h
jet::JetIsolation::IsolationAreaBase::name
string name() const
Definition: JetIsolationTool.cxx:168
beamspotman.n
n
Definition: beamspotman.py:731
jet::JetIsolation::IsolationCalculator::Kinematics
Kinematics
Define the availble isolation variables.
Definition: JetIsolationTool.cxx:26
EL::StatusCode
::StatusCode StatusCode
StatusCode definition for legacy code.
Definition: PhysicsAnalysis/D3PDTools/EventLoop/EventLoop/StatusCode.h:22
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:99
jet::ParticlePosition
Definition: JetIsolationTool.h:95
JetIsolationTool::initialize
virtual StatusCode initialize() override
Dummy implementation of the initialisation function.
Definition: JetIsolationTool.cxx:255
jet::JetIsolation::IsolationCalculator::IsolationResult::m_isoP
FourMom_t m_isoP
Definition: JetIsolationTool.cxx:41
ATH_CHECK
#define ATH_CHECK
Definition: AthCheckMacros.h:40
JetIsolationTool::finalize
virtual StatusCode finalize() override
Definition: JetIsolationTool.cxx:430
JetIsolationTool::m_isolationCodes
Gaudi::Property< std::vector< std::string > > m_isolationCodes
Definition: JetIsolationTool.h:151
SG::VarHandleKey::initialize
StatusCode initialize(bool used=true)
If this object is used as a property, then this should be called during the initialize phase.
Definition: AthToolSupport/AsgDataHandles/Root/VarHandleKey.cxx:103
jet::JetIsolation::IsolationCalculator::IsolationResult::m_isoSumPt
double m_isoSumPt
Definition: JetIsolationTool.cxx:42
DataVector
Derived DataVector<T>.
Definition: DataVector.h:581
JetIsolationTool::m_sumPtKeys
SG::WriteDecorHandleKeyArray< xAOD::JetContainer > m_sumPtKeys
Definition: JetIsolationTool.h:157
jet::JetIsolation::IsolationAreaBase::inIsolationArea
bool inIsolationArea(const xAOD::Jet *j, jet::ParticlePosition &part) const
Definition: JetIsolationTool.cxx:163
jet::JetIsolation
Definition: JetIsolationTool.h:88
JetIsolationTool::JetIsolationTool
JetIsolationTool(const std::string &myname)
Ctor.
Definition: JetIsolationTool.cxx:244
xAOD::Jet_v1::eta
virtual double eta() const
The pseudorapidity ( ) of the particle.
Definition: Jet_v1.cxx:49
jet::JetIsolation::PseudoJetKinematicGetter::getP
const FourMom_t getP(jet::ParticlePosition &p) const
Definition: JetIsolationTool.cxx:114
jet::JetIsolation::IsolationCalculator::IsolationResult::isoP
FourMom_t & isoP()
Definition: JetIsolationTool.cxx:39
jet::JetIsolation::IsolationAreaBase::m_name
string m_name
Definition: JetIsolationTool.cxx:174
ReadCellNoiseFromCoolCompare.s3
s3
Definition: ReadCellNoiseFromCoolCompare.py:380
jet::JetIsolation::IsolationAreaBase
Definition: JetIsolationTool.cxx:160
name
std::string name
Definition: Control/AthContainers/Root/debug.cxx:192
jet::JetIsolation::IsolationAreaBase::IsolationAreaBase
IsolationAreaBase(double p, const string &n)
Definition: JetIsolationTool.cxx:161
xAOD::Jet_v1::rawConstituent
const IParticle * rawConstituent(size_t i) const
Direct access to constituents. WARNING expert use only.
Definition: Jet_v1.cxx:158
jet::JetIsolation::IsolationCalculator::SumPt
@ SumPt
Definition: JetIsolationTool.cxx:27
python.ami.results
def results
Definition: ami.py:386
jet::JetIsolation::IsolationCalculator
IsolationCalculator : base class for isolation calculations.
Definition: JetIsolationTool.cxx:22
jet::JetIsolation::IsolationCalculator::clone
virtual IsolationCalculator * clone(const xAOD::Jet *) const
Definition: JetIsolationTool.cxx:51
python.LumiBlobConversion.pos
pos
Definition: LumiBlobConversion.py:18
jet::JetIsolation::PseudoJetKinematicGetter::getPt
double getPt(jet::ParticlePosition &p) const
Definition: JetIsolationTool.cxx:117
jet::JetIsolation::IsolationCalculator::dump
void dump()
Definition: JetIsolationTool.cxx:98
xAOD::Jet_v1
Class describing a jet.
Definition: Jet_v1.h:57
jet::ParticlePosition::y
double y() const
Definition: JetIsolationTool.h:103
readCCLHist.int
int
Definition: readCCLHist.py:84
jet::JetIsolation::IsolationCalculator::baseName
virtual string baseName() const
Definition: JetIsolationTool.cxx:50
jet::colonSplit
void colonSplit(const string &in, string &s1, string &s2, string &s3)
helper
Definition: JetIsolationTool.cxx:221
CondAlgsOpts.found
int found
Definition: CondAlgsOpts.py:101
python.CaloScaleNoiseConfig.str
str
Definition: CaloScaleNoiseConfig.py:78
jet::IConstituentUserInfo
Definition: IConstituentUserInfo.h:26
ATH_MSG_WARNING
#define ATH_MSG_WARNING(x)
Definition: AthMsgStreamMacros.h:32
jet::JetIsolation::IsolationCalculatorT::IsolationCalculatorT
IsolationCalculatorT(double param=0.)
Definition: JetIsolationTool.cxx:124
PseudoJetContainer::size
std::size_t size() const
Definition: PseudoJetContainer.cxx:440
ReadCellNoiseFromCoolCompare.s2
s2
Definition: ReadCellNoiseFromCoolCompare.py:379
AthCommonMsg< AlgTool >::msg
MsgStream & msg() const
Definition: AthCommonMsg.h:24
jet::JetIsolation::IsolationCalculator::scheduleKinematicCalculation
bool scheduleKinematicCalculation(const std::string &kname)
Definition: JetIsolationTool.cxx:86
jet::JetIsolation::IsolationCalculator::calcIsolationAttributes
virtual std::map< std::string, float > calcIsolationAttributes(const xAOD::Jet *jet, std::vector< jet::ParticlePosition > &nearbyConstit) const
Definition: JetIsolationTool.cxx:64
PseudoJetContainer::casVectorPseudoJet
const std::vector< PseudoJet > * casVectorPseudoJet() const
Definition: PseudoJetContainer.cxx:135
jet::JetIsolation::IsolationCalculator::IsolationResult
Holds the 4-vector of all constituents contributing to isolation.
Definition: JetIsolationTool.cxx:35
defineDB.jets
list jets
Definition: JetTagCalibration/share/defineDB.py:24
str
Definition: BTagTrackIpAccessor.cxx:11
JetIsolationTool::m_pjsin
SG::ReadHandleKey< PseudoJetContainer > m_pjsin
Definition: JetIsolationTool.h:154
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:164
jet::JetIsolation::IsolationCalculator::IsolationResult::isoPar
double isoPar(const TVector3 &unitV)
Definition: JetIsolationTool.cxx:37
jet::JetIsolation::IsolationCalculator::Par
@ Par
Definition: JetIsolationTool.cxx:27
jet::JetIsolation::IsolationCalculator::copyFrom
virtual void copyFrom(const IsolationCalculator *o, const xAOD::Jet *)
Definition: JetIsolationTool.cxx:52
JetIsolationTool::m_jetContainerName
Gaudi::Property< std::string > m_jetContainerName
Definition: JetIsolationTool.h:152
xAOD::Jet_v1::numConstituents
size_t numConstituents() const
Number of constituents in this jets (this is valid even when reading a file where the constituents ha...
Definition: Jet_v1.cxx:153
JetIsolationTool::m_perpKeys
SG::WriteDecorHandleKeyArray< xAOD::JetContainer > m_perpKeys
Definition: JetIsolationTool.h:156
beamspotnt.calc
calc
Definition: bin/beamspotnt.py:1252
jet::JetIsolation::IsolationCalculator::m_attNames
std::vector< string > m_attNames
kinematics isolation vars to be computed
Definition: JetIsolationTool.cxx:107
jet::JetIsolation::IsolationCalculator::s_kname
static const string s_kname[4]
names for isolation variables
Definition: JetIsolationTool.cxx:31
JetIsolationTool::decorate
virtual StatusCode decorate(const xAOD::JetContainer &jets) const override
Decorate a jet collection without otherwise modifying it.
Definition: JetIsolationTool.cxx:324
JetDistances.h
jet::JetIsolation::ISOAREA
ISOAREA(IsoKR, jetRadius *param,)