ATLAS Offline Software
Loading...
Searching...
No Matches
PunchThroughG4Classifier.h
Go to the documentation of this file.
1/*
2 Copyright (C) 2002-2024 CERN for the benefit of the ATLAS collaboration
3*/
4
6// PunchThroughG4Classifier.h, (c) ATLAS Detector software
8
9#ifndef G4ATLASTOOLS_PUNCHTHROUGHG4CLASSIFIER_H
10#define G4ATLASTOOLS_PUNCHTHROUGHG4CLASSIFIER_H
11
12//
15
16#include <map>
17#include <memory> //for unique_ptr
18
19//LWTNN
20#include "lwtnn/LightweightGraph.hh"
21
22class PunchThroughG4Classifier : virtual public extends<AthAlgTool, IPunchThroughG4Classifier>{
23public:
24
26 PunchThroughG4Classifier(const std::string&,const std::string&,const IInterface*);
27
29 virtual ~PunchThroughG4Classifier() = default;
30
32 virtual StatusCode initialize() override;
34 virtual StatusCode finalize() override;
35
37 StatusCode initializeScaler(const std::string & scalerConfigFile);
38
40 StatusCode initializeNetwork(const std::string & networkConfigFile);
41
43 StatusCode initializeCalibrator(const std::string & calibratorConfigFile);
44
46 virtual double computePunchThroughProbability(const G4FastTrack& fastTrack, const double simE, const std::vector<double> & simEfrac) const override;
47
49 static std::map<std::string, std::map<std::string, double> > computeInputs(const G4FastTrack& fastTrack, const double simE, const std::vector<double> & simEfrac);
50
52 std::map<std::string, std::map<std::string, double> > scaleInputs(std::map<std::string, std::map<std::string, double> >& inputs) const;
53
55 double calibrateOutput(double& networkOutput) const;
56
57private:
59 std::unique_ptr<lwt::LightweightGraph> m_graph{};
60
62 double m_scalerMin{};
63 double m_scalerMax{};
64 std::map<std::string, double> m_scalerMinMap;
65 std::map<std::string, double> m_scalerMaxMap;
66
71 std::map<double, double> m_calibrationMap;
72
73 /*---------------------------------------------------------------------
74 * Properties
75 *---------------------------------------------------------------------*/
76 StringProperty m_scalerConfigFileName{this, "ScalerConfigFileName", "", ""};
77 StringProperty m_networkConfigFileName{this, "NetworkConfigFileName", "", ""};
78 StringProperty m_calibratorConfigFileName{this, "CalibratorConfigFileName", "", ""};
79
80}; // class PunchThroughG4Classifier
81
82#endif //G4ATLASTOOLS_PUNCHTHROUGHG4CLASSIFIER_H
virtual ~PunchThroughG4Classifier()=default
Destructor.
std::unique_ptr< lwt::LightweightGraph > m_graph
NN graph.
std::map< std::string, double > m_scalerMaxMap
virtual StatusCode initialize() override
AlgTool initialize method.
double m_scalerMin
input variable MinMaxScaler members
std::map< std::string, std::map< std::string, double > > scaleInputs(std::map< std::string, std::map< std::string, double > > &inputs) const
scale NN inputs using MinMaxScaler
std::string m_calibratorConfigFile
isotonic regressor calibrator members
std::map< double, double > m_calibrationMap
PunchThroughG4Classifier(const std::string &, const std::string &, const IInterface *)
Constructor.
std::map< std::string, double > m_scalerMinMap
StatusCode initializeCalibrator(const std::string &calibratorConfigFile)
isotonic regressor calibrator initialize method
virtual StatusCode finalize() override
AlgTool finalize method.
StatusCode initializeScaler(const std::string &scalerConfigFile)
input variable MinMaxScaler initialize method
StatusCode initializeNetwork(const std::string &networkConfigFile)
neural network initialize method
double calibrateOutput(double &networkOutput) const
calibrate NN output using isotonic regressor
static std::map< std::string, std::map< std::string, double > > computeInputs(const G4FastTrack &fastTrack, const double simE, const std::vector< double > &simEfrac)
calcalate NN inputs based on G4FastTrack and simulstate
virtual double computePunchThroughProbability(const G4FastTrack &fastTrack, const double simE, const std::vector< double > &simEfrac) const override
interface method to return probability prediction of punch through