Loading [MathJax]/extensions/tex2jax.js
ATLAS Offline Software
All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Modules Pages
Public Member Functions | Private Attributes | List of all members
DerivationFramework::VertexCaloIsolation Class Reference

#include <VertexCaloIsolation.h>

Inheritance diagram for DerivationFramework::VertexCaloIsolation:
Collaboration diagram for DerivationFramework::VertexCaloIsolation:

Public Member Functions

 VertexCaloIsolation (const std::string &t, const std::string &n, const IInterface *p)
 
StatusCode initialize ()
 
StatusCode finalize ()
 
StatusCode addBranches () const
 
bool extrapolateTrack (TLorentzVector &extr_tp, const xAOD::IParticle &tp) const
 
bool extrapolateMuon (TLorentzVector &extr_tp, const xAOD::CaloCluster *cluster) const
 
xAOD::TrackParticlemakeSlyTrack (xAOD::TrackParticle &, const TLorentzVector &candidate, const xAOD::Vertex *vertex, xAOD::BPhysHelper::pv_type vertexType) const
 

Private Attributes

ToolHandle< xAOD::ICaloTopoClusterIsolationToolm_caloIsoTool
 
std::string m_trackContainerName
 
std::string m_vertexContainerName
 
std::string m_caloClusterContainerName
 
std::string m_cellContainerName
 
std::string m_muonContainerName
 
ToolHandle< Trk::IParticleCaloExtensionToolm_caloExtTool
 
std::vector< unsigned int > m_cones
 
std::vector< std::string > m_passFlags
 
float m_sigmaCaloNoiseCut
 Number of sigma for calo cell noise cut. More...
 
int m_vertexType
 

Detailed Description

Definition at line 47 of file VertexCaloIsolation.h.

Constructor & Destructor Documentation

◆ VertexCaloIsolation()

DerivationFramework::VertexCaloIsolation::VertexCaloIsolation ( const std::string &  t,
const std::string &  n,
const IInterface *  p 
)

Definition at line 59 of file VertexCaloIsolation.cxx.

61  :
62  base_class(t,n,p),
63  m_caloIsoTool("xAOD::CaloIsolationTool/CaloIsolationTool"),
64  m_trackContainerName("InDetTrackParticles"),
65  m_vertexContainerName("NONE"),
66  m_caloClusterContainerName("CaloCalTopoClusters"),
67  m_muonContainerName("Muons"),
68  m_caloExtTool("Trk::ParticleCaloExtensionTool/ParticleCaloExtensionTool"),
69  m_cones(),
71  m_vertexType(7)
72  {
73  ATH_MSG_DEBUG("in constructor");
74 
75  // Declare tools
76  declareProperty("CaloIsoTool" , m_caloIsoTool);
77  declareProperty("TrackContainer" , m_trackContainerName);
78  declareProperty("InputVertexContainer" , m_vertexContainerName);
79  declareProperty("CaloClusterContainer" , m_caloClusterContainerName);
80  declareProperty("ParticleCaloExtensionTool", m_caloExtTool);
81  declareProperty("MuonContainer", m_muonContainerName);
82  declareProperty("PassFlags" , m_passFlags);
83  declareProperty("IsolationTypes" , m_cones);
84  declareProperty("DoVertexTypes" , m_vertexType);
85 
86 
87 
88  }

Member Function Documentation

◆ addBranches()

StatusCode DerivationFramework::VertexCaloIsolation::addBranches ( ) const

Definition at line 129 of file VertexCaloIsolation.cxx.

129  {
130 
131 
132  // There is also the "MuonClusterCollection" which may already contain all the muon's clusters
133 
134  const xAOD::TrackParticleContainer* idTrackParticleContainer = NULL;
135  const xAOD::VertexContainer* vertexContainer = NULL;
136 
137  Rec::CaloCellCollector cellCollector; //To keep private dependence for this package it is used here
138 
139 
140  const xAOD::MuonContainer* muons = NULL;
141 
142 
143  //Load InDetTrackParticles
144  if(evtStore()->contains<xAOD::TrackParticleContainer>(m_trackContainerName)) {
145  CHECK( evtStore()->retrieve(idTrackParticleContainer, m_trackContainerName) );
146  }
147  else{ATH_MSG_ERROR("Failed loading IdTrackparticleContainer container");
148  return StatusCode::FAILURE;
149  }
150 
151  // load vertices
152  if(evtStore()->contains<xAOD::VertexContainer>(m_vertexContainerName)) {
153  CHECK( evtStore()->retrieve(vertexContainer, m_vertexContainerName) );
154  }
155  else{ATH_MSG_ERROR("Failed loading vertex container");
156  return StatusCode::FAILURE;
157  }
158 
159 
160  const xAOD::CaloClusterContainer* caloClusterContainer = NULL;
161  // load CaloCalTopoClusters
162  if(evtStore()->contains<xAOD::CaloClusterContainer>(m_caloClusterContainerName)) {
163  CHECK( evtStore()->retrieve(caloClusterContainer, m_caloClusterContainerName) );
164  }
165  else{ATH_MSG_ERROR("Failed loading vertex container");
166  return StatusCode::FAILURE;
167  }
168 
169 
170  //Retrieve muon container
171  if(evtStore()->contains<xAOD::MuonContainer>(m_muonContainerName)) {
172  CHECK( evtStore()->retrieve(muons, m_muonContainerName) );
173  }
174  else{ATH_MSG_ERROR("Failed loading muon contianer");
175  return StatusCode::FAILURE;
176  }
177 
178 
179 //-------------------------------------------------
180 
181  std::vector<xAOD::Iso::IsolationType> cones; cones.resize(m_cones.size());
182 
183 // for(unsigned int cone : m_cones)
184 // cones.push_back(xAOD::Iso::IsolationType(cone));
185 
186  for (unsigned int i =0; i< m_cones.size(); i++)
187  cones[i] = xAOD::Iso::IsolationType(m_cones[i]);
188 
189 
190 
191  //Loop over vertices
192  for(auto vertex : *vertexContainer){
193 
194  bool passed = false;
195  for(std::vector<std::string>::const_iterator flagItr = m_passFlags.begin(); flagItr!=m_passFlags.end(); ++flagItr) {
196  SG::AuxElement::Accessor<Char_t> flagAcc(*flagItr);
197  if(flagAcc.isAvailable(*vertex) && flagAcc(*vertex) != 0) {
198  passed = true;
199  break;
200  }
201  } // end of loop over flags
202  if(passed){
203  ATH_MSG_DEBUG("Entered loop over vertices");
204  if(vertex->trackParticleLinks().size() != 3)ATH_MSG_WARNING("Vertex without 3 tracks, it has "<< vertex->trackParticleLinks().size() <<" instead");
205 
206  TLorentzVector candidate;
207 
208  std::set<const xAOD::TrackParticle*> exclusionset;
209 
210  for(auto part : vertex->trackParticleLinks()){ //Loop over tracks linked to vertex
211  candidate += (*part)->p4();
212  exclusionset.insert( *part ); //If it crashes use the direct TP from the vertex
213  }
214 
215  //List of corrections: only the pileup correction is applied within the tool
216  xAOD::CaloCorrection corrlist;
217  corrlist.calobitset.set(static_cast<unsigned int>(xAOD::Iso::pileupCorrection));
218 
219 
220 
221  std::vector<const xAOD::Muon*> vtxMuons;
222  std::vector<TLorentzVector> extrVtxMuons ;
223  std::vector<const xAOD::CaloCluster*> vtxMuonCluster;
224 
225  std::vector<const xAOD::TrackParticle*> usedVtxTracks;
226  //The information whether we are missing some core-corrections in the final isolation value
227  map<xAOD::Iso::IsolationType, bool> is_reliable;
228 
229 
230  TLorentzVector muonref; //Place holder for the extrapolated position
231  //Load the caloclusters of the various muons (which you need to load from here)
232  const xAOD::MuonContainer* muons = 0;
233  CHECK( evtStore()->retrieve( muons, "Muons" ) );
234  for ( auto muon : *muons ) {
235  //I ask for all information to be fine before filling in an entry (so all containers will have the same -matching- objects)
236  if(muon->inDetTrackParticleLink().isValid() && exclusionset.find(*muon->inDetTrackParticleLink() ) != exclusionset.end() ){
237  const xAOD::CaloCluster* clus = muon->cluster();
238  if(clus && extrapolateMuon(muonref, clus)){
239  // have a muon, an extrapolation and a cluster (hurray)
240  vtxMuonCluster.push_back(clus);
241  vtxMuons.push_back(muon);
242  usedVtxTracks.push_back( *muon->inDetTrackParticleLink() );
243  extrVtxMuons.push_back(muonref);
244  }else{
245  ATH_MSG_DEBUG("Cannot find clusters. Would need a consistent set of Trk::Tracks to run extrapolation.");
246 
247  // //If working with the cluster failed, try extrapolating the track
248  // if(extrapolateTrack(muonref, *muon)){ //This does not use the muonic cluster, but uses both its tracks to determine a precise position
249  // vtxMuonCluster.push_back(clus); //Note clus can also be NULL (for if it's not in the cone there is no point to fret)
250  // vtxMuons.push_back(muon);
251  // usedVtxTracks.push_back( *muon->inDetTrackParticleLink() );
252  // extrVtxMuons.push_back(muonref);
253  //}
254  }
255  }
256  }
257 
258 
259  //What if there was a track and not a muon??
260  //Should be treated like the muon-without-cluster case
261 
262  if(vtxMuonCluster.size() !=3){ //remember that some of the ctxMuonCluster elements may be NULL
263  ATH_MSG_DEBUG( "Attempt at extrapolating the IDtrack" );
264 
265  //Attempt extrapolating the IDtrack for the missing cases
266  for(const xAOD::TrackParticle* missingTrk : exclusionset){
267  if(std::find(usedVtxTracks.begin(), usedVtxTracks.end(), missingTrk) == usedVtxTracks.end()){
268  if(extrapolateTrack(muonref, *missingTrk)){
269  vtxMuonCluster.push_back(NULL); //Null, for we didn't start from a muon
270  usedVtxTracks.push_back( missingTrk );
271  extrVtxMuons.push_back(muonref);
272  }
273  }
274  }
275 
276  //If there are still missing ones values cannot be guaranteed to be reliable
277  if(vtxMuonCluster.size() !=3){
278  ATH_MSG_DEBUG( "For this vertex there were less than 3 muons found (or extrapolated)" );
279  for(xAOD::Iso::IsolationType isoCone : cones) is_reliable[isoCone] = false;
280  }
281  }
282  else{
283  for(xAOD::Iso::IsolationType isoCone : cones)
284  is_reliable[isoCone] = true;
285  }
286 
287 
288  // Adapt this loop!
289 
290  for(unsigned int vertex_type = 0 ; vertex_type<= xAOD::BPhysHelper::PV_MIN_Z0 ; vertex_type++ ){
291 
292  if((m_vertexType & (1 << vertex_type ) ) == 0)continue; //Stop if the type of vertex is not required
293 
294  //This can be in an inside loop
295 
296  xAOD::BPhysHelper::pv_type this_type = static_cast<xAOD::BPhysHelper::pv_type>( vertex_type );
297 
298  xAOD::TrackParticle candidate_slyTrack;
299  makeSlyTrack(candidate_slyTrack, candidate, vertex, this_type);
300 
301 
303 
304  ATH_MSG_DEBUG("Check if the caloclus container has to be given or not... see line from 755 on of CaloIsolationTool");
305 
306  bool successful = m_caloIsoTool->caloTopoClusterIsolation(result, candidate_slyTrack, cones, corrlist, caloClusterContainer);
307  if( !successful ) {
308  ATH_MSG_DEBUG("Calculation of caloTopoClusterIsolation failed");
309  return StatusCode::FAILURE;
310  }
311 
312  // Make the extension to the calorimeter, as it is done inside the other tools...
313  TLorentzVector extr_candidate;
314  if( !extrapolateTrack(extr_candidate, candidate_slyTrack) ){
315  ATH_MSG_WARNING("Failure extrapolating the slyTrack "<<"pt="<<candidate_slyTrack.pt()<<" eta="<<candidate_slyTrack.eta()<<" phi="<<candidate_slyTrack.phi());
316  ATH_MSG_WARNING("Taking the original coordinates");
317  }
318 
319 
320  std::map<xAOD::Iso::IsolationType,float> coreCorrections;
321 
322  //See if this is inside the cone, to determine the correct correction ^^
323  for(xAOD::Iso::IsolationType isoType : cones){
324 
325  double conesize = xAOD::Iso::coneSize(isoType);
326  //check what is inside the cone
327  std::vector<xAOD::CaloCluster> clustersInCone;
328 
329  for(unsigned int j=0; j < vtxMuonCluster.size(); j++){
330  auto mucluster = vtxMuonCluster[j];
331  // I should use the propagated values here, though the variation is very small, coming from the vertex position
332  float dr=extrVtxMuons[j].DeltaR(extr_candidate);
333 
334 
335 
336  ATH_MSG_DEBUG("Cone size: "<<conesize<<" dr="<<dr);
337  ATH_MSG_DEBUG(extrVtxMuons[j].Eta() <<" - "<<extr_candidate.Eta()<<" and "<<extrVtxMuons[j].Phi() <<" - "<<extr_candidate.Phi());
338 
339  if( dr < conesize ){ //This makes a copy, such that I can remove some cells if needed
340 
341 
342  //here do the check for the cluster, if it should go in, then prevent and set the bad for this cone
343  if(mucluster != NULL) clustersInCone.push_back( xAOD::CaloCluster(*mucluster) );
344  else is_reliable[isoType] = false;
345 
346 
347 
348  }
349  }
350 
351  // ATH_MSG_DEBUG("Muon clusters in cone "<<xAOD::Iso::toString(isoType)<<" "<< clustersInCone.size());
352  // if( msgLvl(MSG::DEBUG) ){
353  // for(auto muon : vtxMuons)
354  // if(muon->isAvailable<float>("ET_Core")) ATH_MSG_DEBUG("ET_core stored inside: "<< muon->auxdataConst<float>("ET_Core") );
355  // }
356  //remove eventually doubles in cells
357  if(clustersInCone.size() == 2){
358  for(auto cell : clustersInCone[0]){
359  clustersInCone[1].removeCell(cell);
360  }
361  }
362  if(clustersInCone.size() == 3){
363  for(auto cell : clustersInCone[0]){
364  clustersInCone[1].removeCell(cell);
365  clustersInCone[2].removeCell(cell);
366  }
367  for(auto cell : clustersInCone[1]){
368  clustersInCone[2].removeCell(cell);
369  }
370  }
371 
372  //Calculate the core-correction
373  std::vector<float> etcore(4, 0.);
374  float coreCorr=0.;
375  for(auto cl : clustersInCone){
376  if(cl.size() != 0){ //Maybe two muons have a full cluster overlap??
377  ATH_MSG_DEBUG("Cells in this cluster: "<< cl.size());
378 
379  cellCollector.collectEtCore( cl, etcore, nullptr, m_sigmaCaloNoiseCut );
380  coreCorr += etcore[Rec::CaloCellCollector::ET_Core];
381  ATH_MSG_DEBUG("Their core-energy: "<< etcore[Rec::CaloCellCollector::ET_Core]);
382 
383  }
384  }
385 
386  //Store the core-correction
387  coreCorrections[isoType] = coreCorr;
388 
389  }
390 
391  //For a pion I have no such cone energy, do I? But then I should also see what the original vertex was
392  //If something is not a muon there is no way the calocluster was stored, I think
393  //Would need further study
394 
395 
396  //Collect all the required information
397  string ED("_EDcorr");
398  string core("_COREcorr");
399  string reliable("_isReliable");
400 
401 
402  string vtx_type[3] = {"SumPt", "A0", "Z0"};
403 
404  string vtx = vtx_type[ vertex_type ];
405 
406  ATH_MSG_DEBUG("Detailed: ");
407  for(unsigned int i=0; i< cones.size(); i++){
408  xAOD::Iso::IsolationType isoType = cones[i];
409  result.etcones[i] -= coreCorrections[isoType]; //Finish correcting the energy
410 
411 
412  // if(fabs(result.etcones[i]) < 0.1){
413  //
414  // ATH_MSG_INFO("Isolation: "<<xAOD::Iso::toString(isoType) ); // The name of the isolation
415  // ATH_MSG_ERROR(result.etcones[i]<<" + "<<(result.noncoreCorrections[xAOD::Iso::pileupCorrection])[i]<<" + "<<coreCorrections[isoType] );
416  // }
417 
418  //Here do the decoration (store all, and as well if three muons are found)
419 
420 
421  string variableName = xAOD::Iso::toString(isoType) + vtx; //I corrected for the closest vertex in A0
422  SG::AuxElement::Decorator<float> isolation(variableName);
423  isolation(*vertex) = result.etcones[i];
424 
425  isolation = SG::AuxElement::Decorator<float>(variableName + ED);
426  isolation(*vertex) = (result.noncoreCorrections[xAOD::Iso::pileupCorrection])[i];
427 
428  isolation = SG::AuxElement::Decorator<float>(variableName + core);
429  isolation(*vertex) = coreCorrections[isoType];
430 
431  //This variable contains the info whether 3 caloclusters have been found in the muons
432  //Future would be to see if their extrapolations are of interest anyhow (if not missing them is no issue)
433  //Fore some reason these seem to become chars (instead of bools) in the output
434  SG::AuxElement::Decorator<bool> reliability(variableName + reliable);
435  reliability(*vertex) = is_reliable[isoType];
436 
437  }
438  } //Loop over primaryVertex choice
439 
440  //Decorate the candidate with the new information
441 
442 
443 // return StatusCode::SUCCESS;
444 //
445 // ///////////////////////////////////
446 
447  }
448 
449 //END OF NEW PART
450  }//End of loop over vertices
451  return StatusCode::SUCCESS;
452  }

◆ extrapolateMuon()

bool DerivationFramework::VertexCaloIsolation::extrapolateMuon ( TLorentzVector &  extr_tp,
const xAOD::CaloCluster cluster 
) const

Definition at line 498 of file VertexCaloIsolation.cxx.

499  {
500  //auto cluster = mu->cluster(); //done outside
501  if(cluster){
502  float etaT = 0, phiT = 0;
503  int nSample = 0;
504  for(unsigned int i=0; i<CaloSampling::Unknown; i++) // dangerous?
505  {
506  auto s = static_cast<CaloSampling::CaloSample>(i);
507  if(!cluster->hasSampling(s)) continue;
508  //ATH_MSG_DEBUG("Sampling: " << i << "eta-phi (" << cluster->etaSample(s) << ", " << cluster->phiSample(s) << ")");
509  etaT += cluster->etaSample(s);
510  phiT += cluster->phiSample(s);
511  nSample++;
512  }
513  if(nSample>0){
514 
515  extr_tp.SetPtEtaPhiE(1., etaT/nSample, phiT/nSample, 10.); //Using the three-vector constructor
516  return true ;
517 
518  }else{
519  ATH_MSG_WARNING("Muon calo cluster is empty????");
520  return false;
521  }
522  }else{
523  ATH_MSG_WARNING("Muon calo cluster not found. Calo extension can not be obtained!!!");
524  return false;
525  }
526  }

◆ extrapolateTrack()

bool DerivationFramework::VertexCaloIsolation::extrapolateTrack ( TLorentzVector &  extr_tp,
const xAOD::IParticle tp 
) const

Definition at line 457 of file VertexCaloIsolation.cxx.

457  {
458  extr_tp = tp.p4(); //Pre-set the output TLorentzVector to the input's 4-momentum
459  ATH_MSG_ERROR("VertexCaloIsolation::extrapolateTrack needs to be rewritten because of changes to the caloExtension");
460  throw std::runtime_error("VertexCaloIsolation::extrapolateTrack needs to be rewritten because of changes to the caloExtension");
461 /*
462 
463 
464  const Trk::CaloExtension* caloExtension = 0;
465  if(!m_caloExtTool->caloExtension(tp,caloExtension)){
466  ATH_MSG_WARNING("Can not get caloExtension.");
467  return false;
468  }
469 
470  const std::vector<const Trk::CurvilinearParameters*>& intersections = caloExtension->caloLayerIntersections();
471  if (intersections.size()>0) {
472  Amg::Vector3D avePoint(0,0,0);
473  for (unsigned int i = 0; i < intersections.size(); ++i){
474  const Amg::Vector3D& point = intersections[i]->position();
475  avePoint += point;
476  }
477  avePoint = (1./intersections.size())*avePoint;
478 
479 
480  extr_tp.SetPtEtaPhiE(1., avePoint.eta(), avePoint.phi(), 10.); //Using the three-vector constructor
481  //eta = avePoint.eta();
482  //phi = avePoint.phi();
483  ATH_MSG_DEBUG("Successfully extrapolated candidate eta/phi : "<<tp.eta()<<"/"<<tp.phi()<<" --> "<< extr_tp.Eta()<<"/"<<extr_tp.Phi());
484 
485  }
486  else{ //This is very unlikely, it happens if a few cases in MC
487  ATH_MSG_WARNING("Candidate extrapolation failed. Keeping track's eta/phi values");
488  return false;
489 
490  }
491 
492  return true;
493 */
494 
495  }

◆ finalize()

StatusCode DerivationFramework::VertexCaloIsolation::finalize ( )

Definition at line 121 of file VertexCaloIsolation.cxx.

122  {
123  // everything all right
124  return StatusCode::SUCCESS;
125  }

◆ initialize()

StatusCode DerivationFramework::VertexCaloIsolation::initialize ( )

Definition at line 92 of file VertexCaloIsolation.cxx.

93  {
94 
95  ATH_MSG_DEBUG("in initialize()");
96 
97  // retrieve CaloIsolationTool
98  CHECK( m_caloIsoTool.retrieve() );
99 
100  // retrieve CaloIsolationTool
101  CHECK( m_caloExtTool.retrieve() );
102 
103  //Check that flags were given to tag the correct vertices
104  if(m_passFlags.empty()){
105  ATH_MSG_WARNING("As no pass-flags are given, no vertices will be decorated");
106  }
107 
108  // Control the IsolationType sequence
109  if(m_cones.empty()){
110  m_cones.push_back(xAOD::Iso::etcone40);
111  m_cones.push_back(xAOD::Iso::etcone30);
112  m_cones.push_back(xAOD::Iso::etcone20);
113  }
114 
115  return StatusCode::SUCCESS;
116 
117  }

◆ makeSlyTrack()

xAOD::TrackParticle & DerivationFramework::VertexCaloIsolation::makeSlyTrack ( xAOD::TrackParticle candidate_slyTrack,
const TLorentzVector &  candidate,
const xAOD::Vertex vertex,
xAOD::BPhysHelper::pv_type  vertexType 
) const

Definition at line 529 of file VertexCaloIsolation.cxx.

529  {
530 
531  candidate_slyTrack.makePrivateStore();
532  candidate_slyTrack.setDefiningParameters(0, 0., candidate.Phi(), candidate.Theta(), 0. ); // avoided q/p = 1./candidate.P()
533 
534  //I should set the correct d0 and z0, while setting momentum to enormous, to obtain a straight line
535  //I fear that q/p == 0 might cause some divide by 0, though.
536 
537  //Somewhere this information will be checked, so I need to provide it
538  SG::AuxElement::Decorator<uint8_t> hypothesis("particleHypothesis");
539  hypothesis(candidate_slyTrack) = xAOD::undefined; //Value 99 as none of the common types (muon, pion, kaon, etc.)
540  SG::AuxElement::Decorator<std::vector<float> > covmat( "definingParametersCovMatrix" );
541  covmat(candidate_slyTrack) = std::vector<float>(25, 0.); // I am saying that there are no errors on my parameters
542  //The precision goes down a bit, but it's a matter of 10e-7 with our values of interest
543 
544  xAOD::BPhysHelper vertex_h(vertex); //Use the BPhysHelper to access vertex quantities
545 
547  vx(candidate_slyTrack) = vertex_h.pv(vertexType)->x();
548 
550  vy(candidate_slyTrack) = vertex_h.pv(vertexType)->y();
551 
553  vz(candidate_slyTrack) = vertex_h.pv(vertexType)->z();
554  //The precision goes down a bit, but it's a matter of 10e-7 with our values of interest
555 
556  return candidate_slyTrack;
557 
558 
559  }

Member Data Documentation

◆ m_caloClusterContainerName

std::string DerivationFramework::VertexCaloIsolation::m_caloClusterContainerName
private

Definition at line 66 of file VertexCaloIsolation.h.

◆ m_caloExtTool

ToolHandle<Trk::IParticleCaloExtensionTool> DerivationFramework::VertexCaloIsolation::m_caloExtTool
private

Definition at line 69 of file VertexCaloIsolation.h.

◆ m_caloIsoTool

ToolHandle<xAOD::ICaloTopoClusterIsolationTool> DerivationFramework::VertexCaloIsolation::m_caloIsoTool
private

Definition at line 63 of file VertexCaloIsolation.h.

◆ m_cellContainerName

std::string DerivationFramework::VertexCaloIsolation::m_cellContainerName
private

Definition at line 67 of file VertexCaloIsolation.h.

◆ m_cones

std::vector<unsigned int> DerivationFramework::VertexCaloIsolation::m_cones
private

Definition at line 70 of file VertexCaloIsolation.h.

◆ m_muonContainerName

std::string DerivationFramework::VertexCaloIsolation::m_muonContainerName
private

Definition at line 68 of file VertexCaloIsolation.h.

◆ m_passFlags

std::vector<std::string> DerivationFramework::VertexCaloIsolation::m_passFlags
private

Definition at line 71 of file VertexCaloIsolation.h.

◆ m_sigmaCaloNoiseCut

float DerivationFramework::VertexCaloIsolation::m_sigmaCaloNoiseCut
private

Number of sigma for calo cell noise cut.

Definition at line 75 of file VertexCaloIsolation.h.

◆ m_trackContainerName

std::string DerivationFramework::VertexCaloIsolation::m_trackContainerName
private

Definition at line 64 of file VertexCaloIsolation.h.

◆ m_vertexContainerName

std::string DerivationFramework::VertexCaloIsolation::m_vertexContainerName
private

Definition at line 65 of file VertexCaloIsolation.h.

◆ m_vertexType

int DerivationFramework::VertexCaloIsolation::m_vertexType
private

Definition at line 77 of file VertexCaloIsolation.h.


The documentation for this class was generated from the following files:
LArG4FSStartPointFilter.part
part
Definition: LArG4FSStartPointFilter.py:21
python.PyKernel.retrieve
def retrieve(aClass, aKey=None)
Definition: PyKernel.py:110
xAOD::TrackParticle_v1::pt
virtual double pt() const override final
The transverse momentum ( ) of the particle.
Definition: TrackParticle_v1.cxx:73
GetLCDefs::Unknown
@ Unknown
Definition: GetLCDefs.h:21
xAOD::muon
@ muon
Definition: TrackingPrimitives.h:196
python.SystemOfUnits.s
int s
Definition: SystemOfUnits.py:131
get_generator_info.result
result
Definition: get_generator_info.py:21
xAOD::BPhysHelper
Definition: BPhysHelper.h:71
ReadCellNoiseFromCool.cell
cell
Definition: ReadCellNoiseFromCool.py:53
TrigCompositeUtils::passed
bool passed(DecisionID id, const DecisionIDContainer &idSet)
checks if required decision ID is in the set of IDs in the container
Definition: TrigCompositeUtilsRoot.cxx:117
find
std::string find(const std::string &s)
return a remapped string
Definition: hcg.cxx:135
SG::Accessor
Helper class to provide type-safe access to aux data.
Definition: Control/AthContainers/AthContainers/Accessor.h:68
xAOD::Iso::toString
std::string toString(const IsoType &iso)
Definition: IsolationHelpers.h:59
xAOD::TrackParticle_v1::eta
virtual double eta() const override final
The pseudorapidity ( ) of the particle.
Definition: TrackParticle_v1.cxx:77
DerivationFramework::VertexCaloIsolation::m_caloClusterContainerName
std::string m_caloClusterContainerName
Definition: VertexCaloIsolation.h:66
plotBeamSpotVxVal.covmat
covmat
Definition: plotBeamSpotVxVal.py:206
DerivationFramework::VertexCaloIsolation::m_vertexContainerName
std::string m_vertexContainerName
Definition: VertexCaloIsolation.h:65
xAOD::Iso::etcone40
@ etcone40
Definition: IsolationType.h:34
ParticleTest.tp
tp
Definition: ParticleTest.py:25
xAOD::TrackParticle_v1::setDefiningParameters
void setDefiningParameters(float d0, float z0, float phi0, float theta, float qOverP)
Set the defining parameters.
Definition: TrackParticle_v1.cxx:177
DerivationFramework::VertexCaloIsolation::m_caloIsoTool
ToolHandle< xAOD::ICaloTopoClusterIsolationTool > m_caloIsoTool
Definition: VertexCaloIsolation.h:63
xAOD::BPhysHelper::PV_MIN_Z0
@ PV_MIN_Z0
Definition: BPhysHelper.h:475
xAOD::Iso::etcone30
@ etcone30
Definition: IsolationType.h:33
python.TurnDataReader.dr
dr
Definition: TurnDataReader.py:112
read_hist_ntuple.t
t
Definition: read_hist_ntuple.py:5
DerivationFramework::VertexCaloIsolation::m_passFlags
std::vector< std::string > m_passFlags
Definition: VertexCaloIsolation.h:71
Rec::CaloCellCollector
Definition: CaloCellCollector.h:25
DerivationFramework::VertexCaloIsolation::m_trackContainerName
std::string m_trackContainerName
Definition: VertexCaloIsolation.h:64
DerivationFramework::VertexCaloIsolation::m_vertexType
int m_vertexType
Definition: VertexCaloIsolation.h:77
successful
bool successful(bool arg)
Definition: fbtTestBasics.cxx:36
DerivationFramework::VertexCaloIsolation::m_sigmaCaloNoiseCut
float m_sigmaCaloNoiseCut
Number of sigma for calo cell noise cut.
Definition: VertexCaloIsolation.h:75
xAOD::CaloCluster_v1
Description of a calorimeter cluster.
Definition: CaloCluster_v1.h:62
xAOD::CaloIsolation
Definition: IsolationCommon.h:22
python.utils.AtlRunQueryDQUtils.p
p
Definition: AtlRunQueryDQUtils.py:210
xAOD::BPhysHelper::pv_type
pv_type
: Enum type of the PV
Definition: BPhysHelper.h:475
ATH_MSG_ERROR
#define ATH_MSG_ERROR(x)
Definition: AthMsgStreamMacros.h:33
columnar::ContainerId::cluster
@ cluster
SG::Decorator
Helper class to provide type-safe access to aux data.
Definition: Decorator.h:59
DerivationFramework::VertexCaloIsolation::extrapolateMuon
bool extrapolateMuon(TLorentzVector &extr_tp, const xAOD::CaloCluster *cluster) const
Definition: VertexCaloIsolation.cxx:498
lumiFormat.i
int i
Definition: lumiFormat.py:85
CaloSampling::CaloSample
CaloSample
Definition: Calorimeter/CaloGeoHelpers/CaloGeoHelpers/CaloSampling.h:22
beamspotman.n
n
Definition: beamspotman.py:731
xAOD::Iso::etcone20
@ etcone20
Calorimeter isolation.
Definition: IsolationType.h:32
ATH_MSG_DEBUG
#define ATH_MSG_DEBUG(x)
Definition: AthMsgStreamMacros.h:29
xAOD::Iso::IsolationType
IsolationType
Overall enumeration for isolation types in xAOD files.
Definition: IsolationType.h:26
DerivationFramework::VertexCaloIsolation::extrapolateTrack
bool extrapolateTrack(TLorentzVector &extr_tp, const xAOD::IParticle &tp) const
Definition: VertexCaloIsolation.cxx:457
CHECK
#define CHECK(...)
Evaluate an expression and check for errors.
Definition: Control/AthenaKernel/AthenaKernel/errorcheck.h:422
Rec::CaloCellCollector::ET_Core
@ ET_Core
Definition: CaloCellCollector.h:29
DataVector
Derived DataVector<T>.
Definition: DataVector.h:794
Rec::CaloCellCollector::collectEtCore
void collectEtCore(const xAOD::CaloCluster &cluster, std::vector< float > &et_core, const CaloNoise *caloNoise, float sigmaNoiseCut=3.4) const
Definition: CaloCellCollector.cxx:259
DerivationFramework::VertexCaloIsolation::makeSlyTrack
xAOD::TrackParticle & makeSlyTrack(xAOD::TrackParticle &, const TLorentzVector &candidate, const xAOD::Vertex *vertex, xAOD::BPhysHelper::pv_type vertexType) const
Definition: VertexCaloIsolation.cxx:529
xAOD::vertexType
vertexType
Definition: Vertex_v1.cxx:166
SG::AuxElement::makePrivateStore
void makePrivateStore()
Create a new (empty) private store for this object.
Definition: AuxElement.cxx:192
Trk::vertex
@ vertex
Definition: MeasurementType.h:21
DerivationFramework::VertexCaloIsolation::m_caloExtTool
ToolHandle< Trk::IParticleCaloExtensionTool > m_caloExtTool
Definition: VertexCaloIsolation.h:69
ATH_MSG_WARNING
#define ATH_MSG_WARNING(x)
Definition: AthMsgStreamMacros.h:32
DerivationFramework::VertexCaloIsolation::m_cones
std::vector< unsigned int > m_cones
Definition: VertexCaloIsolation.h:70
xAOD::CaloCorrection
Definition: IsolationCommon.h:14
DerivationFramework::VertexCaloIsolation::m_muonContainerName
std::string m_muonContainerName
Definition: VertexCaloIsolation.h:68
xAOD::TrackParticle_v1
Class describing a TrackParticle.
Definition: TrackParticle_v1.h:43
xAOD::Iso::coneSize
float coneSize(IsolationConeSize type)
convert Isolation Size into cone size
Definition: IsolationHelpers.h:27
dq_make_web_display.cl
cl
print [x.__class__ for x in toList(dqregion.getSubRegions()) ]
Definition: dq_make_web_display.py:26
xAOD::undefined
@ undefined
Definition: TrackingPrimitives.h:206
Eta
@ Eta
Definition: RPCdef.h:8
xAOD::CaloCorrection::calobitset
Iso::IsolationCaloCorrectionBitset calobitset
Definition: IsolationCommon.h:15
xAOD::TrackParticle_v1::phi
virtual double phi() const override final
The azimuthal angle ( ) of the particle (has range to .)
xAOD::Iso::pileupCorrection
@ pileupCorrection
fully corrected
Definition: Event/xAOD/xAODPrimitives/xAODPrimitives/IsolationCorrection.h:35