ATLAS Offline Software
AFP_ProtonRecoAnalytical.h
Go to the documentation of this file.
1 /*
2 Copyright (C) 2002-2022 CERN for the benefit of the ATLAS collaboration
3 */
4 
5 #ifndef AFP_GLOBRECO_AFP_PROTONRECOANALYTICAL_H
6 #define AFP_GLOBRECO_AFP_PROTONRECOANALYTICAL_H
7 
10 
11 // FrameWork includes
12 #include "Gaudi/Property.h"
14 
15 // xAOD includes
16 #include "xAODForward/AFPProton.h"
19 #include "xAODForward/AFPTrack.h"
23 
24 #include <string>
25 #include <vector>
26 #include <memory>
27 #include <algorithm>
28 
29 
32 
33  public:
35  AFP_ProtonRecoAnalytical(const std::string& type, const std::string& name, const IInterface* parent);
36 
38 
40  StatusCode initialize() override;
41 
42  private:
43 
45  StatusCode configInfo() const;
46 
55  virtual
56  xAOD::AFPProton * reco(const xAOD::AFPTrack* trkNear, const xAOD::AFPTrack* trkFar, std::unique_ptr<xAOD::AFPProtonContainer>& outputContainer) const override;
57 
59  virtual
60  xAOD::AFPProton * reco (const xAOD::AFPTrack* trkFar, std::unique_ptr<xAOD::AFPProtonContainer>& outputContainer) const override;
61 
63  virtual
64  double chi2(double energy, double sx, double sy, const Measurement& my_measAFP) const override;
65 
67  double bisection(double (AFP_ProtonRecoAnalytical::*fun)(double,const Measurement&,std::vector<double>&, std::vector<double>&) const, const Measurement& my_measAFP, std::vector<double>& my_slopeCalculated, std::vector<double>& my_positionCalculated) const;
68 
71  double bothStations(double energy,const Measurement& my_measAFP, std::vector<double>& my_slopeCalculated, std::vector<double>& my_positionCalculated) const;
72 
75  double singleStation(double energy, const Measurement& my_measAFP, std::vector<double>& my_slopeCalculated, std::vector<double>& my_positionCalculated) const;
76 
78  double calculateSlope(double energy, int XorY, std::vector<double>& my_slopeCalculated) const;
79 
82  double calculateXslope(double energy, std::vector<double>& my_slopeCalculated) const;
83 
86  double calculateYslope(double energy, std::vector<double>& my_slopeCalculated) const;
87 
89  std::unique_ptr<AFP::Parameterization> m_parametrization;
90 
92  double m_distanceBetweenStations = 0.0; // [m]
93 
95  Gaudi::Property<std::string> m_parametrizationFileName{this, "parametrizationFileName", "none.txt", "Name of the file containing parameterization"};
96 
98  double m_parametrizationPosition = 0.0; // [m]
99 
101  double m_parametrizationEnergy = 0.0; // [GeV]
102 };
103 
104 
105 #endif
AFP_ProtonRecoAnalytical::m_parametrization
std::unique_ptr< AFP::Parameterization > m_parametrization
Pointer to parameterization.
Definition: AFP_ProtonRecoAnalytical.h:89
AFP_ProtonRecoAnalytical::calculateYslope
double calculateYslope(double energy, std::vector< double > &my_slopeCalculated) const
Calculates initial vertical slope Calls calculateSlope(energy, 1)
Definition: AFP_ProtonRecoAnalytical.cxx:242
AFP_ProtonRecoAnalytical::m_parametrizationPosition
double m_parametrizationPosition
Position for which parameterization was performed.
Definition: AFP_ProtonRecoAnalytical.h:98
AFPTrackContainer.h
generateReferenceFile.fun
fun
Definition: generateReferenceFile.py:18
xAOD::AFPTrack_v2
Class representing a track reconstructed in AFP.
Definition: AFPTrack_v2.h:37
fitman.sy
sy
Definition: fitman.py:524
AFP_ProtonRecoAnalytical::calculateXslope
double calculateXslope(double energy, std::vector< double > &my_slopeCalculated) const
Calculates initial horizontal slope Calls calculateSlope(energy, 0)
Definition: AFP_ProtonRecoAnalytical.cxx:236
AFP_ProtonRecoAnalytical::bisection
double bisection(double(AFP_ProtonRecoAnalytical::*fun)(double, const Measurement &, std::vector< double > &, std::vector< double > &) const, const Measurement &my_measAFP, std::vector< double > &my_slopeCalculated, std::vector< double > &my_positionCalculated) const
Calculates root of given function.
Definition: AFP_ProtonRecoAnalytical.cxx:92
Parameterization.h
AFP_ProtonRecoAnalytical::chi2
virtual double chi2(double energy, double sx, double sy, const Measurement &my_measAFP) const override
Calculates chi2 for reconstructed proton.
Definition: AFP_ProtonRecoAnalytical.cxx:248
python.compressB64.sx
string sx
Definition: compressB64.py:96
AFP_ProtonRecoAnalytical
Tool for proton reconstruction by directly using transport parameterisation.
Definition: AFP_ProtonRecoAnalytical.h:31
AFP_ProtonRecoAnalytical::bothStations
double bothStations(double energy, const Measurement &my_measAFP, std::vector< double > &my_slopeCalculated, std::vector< double > &my_positionCalculated) const
Function obtained from parameterization equation.
Definition: AFP_ProtonRecoAnalytical.cxx:178
AFP_ProtonRecoBase.h
AFP_ProtonRecoBase::Measurement
Local class for storing tracks positions.
Definition: AFP_ProtonRecoBase.h:49
AFP_ProtonRecoAnalytical::m_parametrizationFileName
Gaudi::Property< std::string > m_parametrizationFileName
Name of the file containing parameterization.
Definition: AFP_ProtonRecoAnalytical.h:95
AFP_ProtonRecoBase
Base class for all proton reconstruction tools.
Definition: AFP_ProtonRecoBase.h:34
AFP_ProtonRecoAnalytical::reco
virtual xAOD::AFPProton * reco(const xAOD::AFPTrack *trkNear, const xAOD::AFPTrack *trkFar, std::unique_ptr< xAOD::AFPProtonContainer > &outputContainer) const override
Reconstructs single proton from pair of tracks.
Definition: AFP_ProtonRecoAnalytical.cxx:133
ParticleGun_FastCalo_ChargeFlip_Config.energy
energy
Definition: ParticleGun_FastCalo_ChargeFlip_Config.py:78
EL::StatusCode
::StatusCode StatusCode
StatusCode definition for legacy code.
Definition: PhysicsAnalysis/D3PDTools/EventLoop/EventLoop/StatusCode.h:22
AFPProton.h
test_pyathena.parent
parent
Definition: test_pyathena.py:15
AFP_ProtonRecoAnalytical::calculateSlope
double calculateSlope(double energy, int XorY, std::vector< double > &my_slopeCalculated) const
Calculates ininial slope based on measurements and reconstructed energy.
Definition: AFP_ProtonRecoAnalytical.cxx:218
AFP_ProtonRecoAnalytical::m_distanceBetweenStations
double m_distanceBetweenStations
Distance between near and far station.
Definition: AFP_ProtonRecoAnalytical.h:92
AFPProtonContainer.h
AFP_ProtonRecoAnalytical::m_parametrizationEnergy
double m_parametrizationEnergy
Parameterization energy.
Definition: AFP_ProtonRecoAnalytical.h:101
PathResolver.h
name
std::string name
Definition: Control/AthContainers/Root/debug.cxx:221
AFP_ProtonRecoAnalytical::~AFP_ProtonRecoAnalytical
~AFP_ProtonRecoAnalytical()=default
AFP_ProtonRecoAnalytical::configInfo
StatusCode configInfo() const
Definition: AFP_ProtonRecoAnalytical.cxx:15
AFPTrack.h
AFP_ProtonRecoAnalytical::singleStation
double singleStation(double energy, const Measurement &my_measAFP, std::vector< double > &my_slopeCalculated, std::vector< double > &my_positionCalculated) const
Function obtained from parameterization equation.
Definition: AFP_ProtonRecoAnalytical.cxx:205
AFPProtonRecoAlgID.h
Definitions of identification numbers of AFP proton reconstruction algorithms.
AFP_ProtonRecoAnalytical::AFP_ProtonRecoAnalytical
AFP_ProtonRecoAnalytical(const std::string &type, const std::string &name, const IInterface *parent)
Default constructor.
Definition: AFP_ProtonRecoAnalytical.cxx:8
python.CaloScaleNoiseConfig.type
type
Definition: CaloScaleNoiseConfig.py:78
xAOD::AFPProton_v1
Class representing a proton reconstructed in AFP.
Definition: AFPProton_v1.h:36
AFPProtonAuxContainer.h
AFP_ProtonRecoAnalytical::initialize
StatusCode initialize() override
Loads parameterization.
Definition: AFP_ProtonRecoAnalytical.cxx:33
AFPTrackAuxContainer.h