ATLAS Offline Software
Loading...
Searching...
No Matches
PFMatchPositions.cxx
Go to the documentation of this file.
1/*
2 Copyright (C) 2002-2022 CERN for the benefit of the ATLAS collaboration
3*/
4
5/*
6 * PFMatchPositions.cxx
7 *
8 * Created on: 25.03.2014
9 * Author: tlodd
10 */
11
12#include <cassert>
13#include <iostream>
14
17
18namespace PFMatch {
19
20/* Track position providers */
21
23 eflowEtaPhiPosition etaphi = track->etaPhiInLayer(m_barrelLayer);
24 if (etaphi.getEta() == -999.){
25 etaphi = track->etaPhiInLayer(m_endcapLayer);
26 }
27 if (etaphi.getEta() == -999.){
28 etaphi = track->etaPhiInLayer(m_fcalLayer);
29 }
30 return etaphi;
31}
32
33
34/* Cluster position providers */
35
37 eflowEtaPhiPosition etaphi(cluster->eta(), cluster->phi());
38 return etaphi;
39}
40
42
44
45 /* Check the status to make sure this function only execute once since it is expensive. */
46 if(cluster->calVarianceStatus()) {
47 return {eflowEtaPhiPosition(cluster->etaMean(), cluster->phiMean()), cluster->etaVariance(), cluster->phiVariance()};
48 }
49 cluster->setCalVarianceStatus();
50
51
52 unsigned int nCells = cluster->nCells();
53
55 std::pair<double,double> width = widthCalc.getPFClusterCoordinateWidth(cluster->cellEta(),cluster->cellPhi(),cluster->eta(),cluster->phi(),nCells);
56
57 if (nCells > 1){
58 cluster->etaMean(widthCalc.getEtaMean());
59 cluster->phiMean(widthCalc.getPhiMean());
60 }
61 cluster->etaVariance(width.first);
62 cluster->phiVariance(width.second);
63
64 return {eflowEtaPhiPosition(widthCalc.getEtaMean(),widthCalc.getPhiMean()), width.first, width.second};
65
66
67
68}
69
70}
const double width
std::pair< double, double > getPFClusterCoordinateWidth(const std::vector< double > &eta, const std::vector< double > &phi, const double &clusterEta, const double &clusterPhi, unsigned int nCells)
EtaPhiWithVariance getPosition(ICluster *cluster) const
EtaPhi getPosition(ICluster *cluster) const
virtual double etaMean() const =0
virtual bool calVarianceStatus() const =0
virtual void setCalVarianceStatus()=0
virtual double phiMean() const =0
virtual unsigned int nCells() const =0
virtual double phiVariance() const =0
virtual const std::vector< double > & cellPhi() const =0
virtual const std::vector< double > & cellEta() const =0
virtual double phi() const =0
virtual double etaVariance() const =0
virtual double eta() const =0
double getEta() const
Definition eflowUtil.h:90