ATLAS Offline Software
LArRecoMaterialTool.h
Go to the documentation of this file.
1 /*
2  Copyright (C) 2002-2021 CERN for the benefit of the ATLAS collaboration
3 */
4 
5 // ***************************************************************************
6 //
7 // 3.8.2005 Creation of the tool by claire.bourdarios@cern.ch
8 //
9 // ***************************************************************************
10 
11 #ifndef LARDETDESCR_LARRECOMATERIALTOOL_H
12 #define LARDETDESCR_LARRECOMATERIALTOOL_H
13 
16 
17 //done in the interface : #include "CLHEP/Geometry/Transform3D.h"
18 
19 class CaloCell_ID;
20 class CaloDM_ID;
21 class IMessageSvc;
22 
23 #include "GeoModelKernel/GeoVPhysVol.h"
24 #include "GeoModelKernel/GeoLogVol.h"
25 
26 #include <string>
27 
28 //<<<<<< INCLUDES >>>>>>
29 
44  virtual public ICaloRecoMaterialTool
45 {
46 public:
47 
48  // Constructors:
49 
50  LArRecoMaterialTool(const std::string& type,
51  const std::string& name,
52  const IInterface* parent);
53 
55  static const InterfaceID& interfaceID( ) ;
56  virtual StatusCode initialize() override;
57  virtual StatusCode finalize() override;
58 
59  virtual
61  double& mass, double& volume,
62  double& x0, double& dEdx,
63  double& aveA, double& aveZ
64  ) const override;
65 
67  virtual
68  void get_default_material (double& density,
69  double& x0, double& dEdx,
70  double& aveA, double& aveZ
71  ) const override;
72 
73  void print() const override;
74 
75 private:
76 
80 
83  void ScanTree();
84 
88  double& mass, double& x0, double& dEdx,
89  double& aveA, double& aveZ);
90 
92  double& mass, double& x0, double& dEdx,
93  double& aveA, double& aveZ);
94 
96  double& mass, double& x0, double& dEdx,
97  double& aveA, double& aveZ);
98 
100  double& mass, double& x0, double& dEdx,
101  double& aveA, double& aveZ);
102 
104  double& mass, double& x0, double& dEdx,
105  double& aveA, double& aveZ);
106 
108  double& mass, double& x0, double& dEdx,
109  double& aveA, double& aveZ);
110 
112  void blendGeoVolume(GeoPVConstLink& geoVolLink,
113  std::vector<double>& volume,
114  std::vector<double>& mass,
115  std::vector<double>& x0,
116  std::vector<double>& dEdX,
117  std::vector<double>& aveA,
118  std::vector<double>& aveZ) const;
119 
121  void addMaterialFraction(const GeoLogVol& geoVol,
122  std::vector<double>& volume,
123  std::vector<double>& mass,
124  std::vector<double>& x0,
125  std::vector<double>& dEdX,
126  std::vector<double>& aveA,
127  std::vector<double>& aveZ) const;
128 
130  void averageFraction (std::vector<double>& volumeFractions,
131  std::vector<double>& massFractions,
132  std::vector<double>& x0Fractions,
133  std::vector<double>& dEdXFractions,
134  std::vector<double>& aveAFractions,
135  std::vector<double>& aveZFractions,
136  double& mass, double& volume,
137  double& x0, double& dEdx,
138  double& aveA, double& aveZ, double& rho );
139 
140  // mapping between ALIGNVOL and strings (need to retrieve StoredPV-s)
141  std::string map_av(CaloSubdetNames::ALIGNVOL alvol);
142 
143 
146 
147  // Store results per ALIGNVOL :
148  std::vector<CaloSubdetNames::ALIGNVOL> m_alignvol_number;
149  std::vector<double> m_alignvol_mass;
150  std::vector<double> m_alignvol_x0;
151  std::vector<double> m_alignvol_dEdX;
152  std::vector<double> m_alignvol_aveA;
153  std::vector<double> m_alignvol_aveZ;
154 
155  // intermediate vectors, cleared and filled within several methods :
156  std::vector<double> m_massFractions;
157  std::vector<double> m_volumeFractions;
158  std::vector<double> m_x0Fractions;
159  std::vector<double> m_dEdXFractions;
160  std::vector<double> m_averageAFractions;
161  std::vector<double> m_averageZFractions;
162 
163  std::vector<double> m_child_massFractions;
164  std::vector<double> m_child_volumeFractions;
165  std::vector<double> m_child_x0Fractions;
166  std::vector<double> m_child_dEdXFractions;
167  std::vector<double> m_child_averageAFractions;
168  std::vector<double> m_child_averageZFractions;
169  std::vector<double> m_child_Rho;
170  std::vector<double> m_child_Volume;
171  std::vector<double> m_child_Mass;
172 
173 };
174 
175 #endif // LARDETDESCR_LARMATERIALTOOL_H
176 
177 
178 
179 
180 
181 
LArRecoMaterialTool::m_child_averageZFractions
std::vector< double > m_child_averageZFractions
Definition: LArRecoMaterialTool.h:168
LArRecoMaterialTool::ScanEMEC
bool ScanEMEC(CaloSubdetNames::ALIGNVOL alvol, double &mass, double &x0, double &dEdx, double &aveA, double &aveZ)
Definition: LArRecoMaterialTool.cxx:674
LArRecoMaterialTool::m_alignvol_mass
std::vector< double > m_alignvol_mass
Definition: LArRecoMaterialTool.h:149
LArRecoMaterialTool::LArRecoMaterialTool
LArRecoMaterialTool(const std::string &type, const std::string &name, const IInterface *parent)
Definition: LArRecoMaterialTool.cxx:34
LArRecoMaterialTool::m_child_Mass
std::vector< double > m_child_Mass
Definition: LArRecoMaterialTool.h:171
LArRecoMaterialTool::m_dm_id
const CaloDM_ID * m_dm_id
Definition: LArRecoMaterialTool.h:145
LArRecoMaterialTool
This class implements the CaloDetDescr/ICaloRecoMaterialTool and provides the average materials neede...
Definition: LArRecoMaterialTool.h:45
LArRecoMaterialTool::m_child_Volume
std::vector< double > m_child_Volume
Definition: LArRecoMaterialTool.h:170
LArRecoMaterialTool::~LArRecoMaterialTool
~LArRecoMaterialTool()
Definition: LArRecoMaterialTool.cxx:75
LArRecoMaterialTool::m_averageZFractions
std::vector< double > m_averageZFractions
Definition: LArRecoMaterialTool.h:161
LArRecoMaterialTool::m_child_volumeFractions
std::vector< double > m_child_volumeFractions
Definition: LArRecoMaterialTool.h:164
LArRecoMaterialTool::m_calo_id
const CaloCell_ID * m_calo_id
Definition: LArRecoMaterialTool.h:144
LArRecoMaterialTool::ScanPS
bool ScanPS(CaloSubdetNames::ALIGNVOL alvol, double &mass, double &x0, double &dEdx, double &aveA, double &aveZ)
Definition: LArRecoMaterialTool.cxx:361
ICaloRecoMaterialTool
This (clean) interface is driven by 2 constraints :
Definition: ICaloRecoMaterialTool.h:36
dqt_zlumi_pandas.mass
mass
Definition: dqt_zlumi_pandas.py:170
LArRecoMaterialTool::ScanTree
void ScanTree()
Private method called at initialisation : fills all arrays by calling the "optimised" methods.
Definition: LArRecoMaterialTool.cxx:143
LArRecoMaterialTool::print
void print() const override
printout method
Definition: LArRecoMaterialTool.cxx:128
LArRecoMaterialTool::m_alignvol_aveZ
std::vector< double > m_alignvol_aveZ
Definition: LArRecoMaterialTool.h:153
LArRecoMaterialTool::ScanEMB
bool ScanEMB(CaloSubdetNames::ALIGNVOL alvol, double &mass, double &x0, double &dEdx, double &aveA, double &aveZ)
Definition: LArRecoMaterialTool.cxx:519
LArRecoMaterialTool::m_child_averageAFractions
std::vector< double > m_child_averageAFractions
Definition: LArRecoMaterialTool.h:167
LArRecoMaterialTool::m_child_x0Fractions
std::vector< double > m_child_x0Fractions
Definition: LArRecoMaterialTool.h:165
EL::StatusCode
::StatusCode StatusCode
StatusCode definition for legacy code.
Definition: PhysicsAnalysis/D3PDTools/EventLoop/EventLoop/StatusCode.h:22
LArRecoMaterialTool::m_alignvol_aveA
std::vector< double > m_alignvol_aveA
Definition: LArRecoMaterialTool.h:152
AthAlgTool.h
LArRecoMaterialTool::get_material
virtual bool get_material(CaloSubdetNames::ALIGNVOL alvol, double &mass, double &volume, double &x0, double &dEdx, double &aveA, double &aveZ) const override
the enum ALIGNVOL covers all LAr pieces, including cryostats
Definition: LArRecoMaterialTool.cxx:87
LArRecoMaterialTool::finalize
virtual StatusCode finalize() override
Definition: LArRecoMaterialTool.cxx:80
test_pyathena.parent
parent
Definition: test_pyathena.py:15
LArRecoMaterialTool::ScanFCAL
bool ScanFCAL(CaloSubdetNames::ALIGNVOL alvol, double &mass, double &x0, double &dEdx, double &aveA, double &aveZ)
Definition: LArRecoMaterialTool.cxx:870
CaloCell_ID
Helper class for offline cell identifiers.
Definition: CaloCell_ID.h:34
LArRecoMaterialTool::get_default_material
virtual void get_default_material(double &density, double &x0, double &dEdx, double &aveA, double &aveZ) const override
default material used to fill the envelope
Definition: LArRecoMaterialTool.cxx:113
LArRecoMaterialTool::m_child_Rho
std::vector< double > m_child_Rho
Definition: LArRecoMaterialTool.h:169
LArRecoMaterialTool::m_dEdXFractions
std::vector< double > m_dEdXFractions
Definition: LArRecoMaterialTool.h:159
LArRecoMaterialTool::m_massFractions
std::vector< double > m_massFractions
Definition: LArRecoMaterialTool.h:156
name
std::string name
Definition: Control/AthContainers/Root/debug.cxx:192
LArRecoMaterialTool::ScanCRYO
bool ScanCRYO(CaloSubdetNames::ALIGNVOL alvol, double &mass, double &x0, double &dEdx, double &aveA, double &aveZ)
Private optimised methods for each subsystem.
Definition: LArRecoMaterialTool.cxx:191
LArRecoMaterialTool::m_child_massFractions
std::vector< double > m_child_massFractions
Definition: LArRecoMaterialTool.h:163
LArRecoMaterialTool::m_averageAFractions
std::vector< double > m_averageAFractions
Definition: LArRecoMaterialTool.h:160
LArRecoMaterialTool::m_alignvol_dEdX
std::vector< double > m_alignvol_dEdX
Definition: LArRecoMaterialTool.h:151
LArRecoMaterialTool::blendGeoVolume
void blendGeoVolume(GeoPVConstLink &geoVolLink, std::vector< double > &volume, std::vector< double > &mass, std::vector< double > &x0, std::vector< double > &dEdX, std::vector< double > &aveA, std::vector< double > &aveZ) const
Private method to blend GeoLogVolume.
Definition: LArRecoMaterialTool.cxx:1048
LArRecoMaterialTool::map_av
std::string map_av(CaloSubdetNames::ALIGNVOL alvol)
Definition: LArRecoMaterialTool.cxx:1161
LArRecoMaterialTool::m_parseGeoModelForMaterial
bool m_parseGeoModelForMaterial
Private bool set at initialisation : decides if the GeoModel is parsed or bypassed.
Definition: LArRecoMaterialTool.h:79
LArRecoMaterialTool::ScanHEC
bool ScanHEC(CaloSubdetNames::ALIGNVOL alvol, double &mass, double &x0, double &dEdx, double &aveA, double &aveZ)
Definition: LArRecoMaterialTool.cxx:712
CaloDM_ID
Helper class for Calo Dead Material offline identifiers.
Definition: CaloDM_ID.h:102
python.CaloScaleNoiseConfig.type
type
Definition: CaloScaleNoiseConfig.py:78
LArRecoMaterialTool::m_child_dEdXFractions
std::vector< double > m_child_dEdXFractions
Definition: LArRecoMaterialTool.h:166
LArRecoMaterialTool::interfaceID
static const InterfaceID & interfaceID()
Definition: LArRecoMaterialTool.cxx:31
LArRecoMaterialTool::m_alignvol_x0
std::vector< double > m_alignvol_x0
Definition: LArRecoMaterialTool.h:150
AthAlgTool
Definition: AthAlgTool.h:26
ICaloRecoMaterialTool.h
LArRecoMaterialTool::m_x0Fractions
std::vector< double > m_x0Fractions
Definition: LArRecoMaterialTool.h:158
LArRecoMaterialTool::addMaterialFraction
void addMaterialFraction(const GeoLogVol &geoVol, std::vector< double > &volume, std::vector< double > &mass, std::vector< double > &x0, std::vector< double > &dEdX, std::vector< double > &aveA, std::vector< double > &aveZ) const
Private method to add material.
Definition: LArRecoMaterialTool.cxx:1069
LArRecoMaterialTool::averageFraction
void averageFraction(std::vector< double > &volumeFractions, std::vector< double > &massFractions, std::vector< double > &x0Fractions, std::vector< double > &dEdXFractions, std::vector< double > &aveAFractions, std::vector< double > &aveZFractions, double &mass, double &volume, double &x0, double &dEdx, double &aveA, double &aveZ, double &rho)
Private method to average results stored in private arrays.
Definition: LArRecoMaterialTool.cxx:1109
fitman.rho
rho
Definition: fitman.py:532
LArRecoMaterialTool::initialize
virtual StatusCode initialize() override
Definition: LArRecoMaterialTool.cxx:44
LArRecoMaterialTool::m_volumeFractions
std::vector< double > m_volumeFractions
Definition: LArRecoMaterialTool.h:157
CaloSubdetNames::ALIGNVOL
ALIGNVOL
LAr Alignable volumes.
Definition: CaloSubdetNames.h:36
LArRecoMaterialTool::m_alignvol_number
std::vector< CaloSubdetNames::ALIGNVOL > m_alignvol_number
Definition: LArRecoMaterialTool.h:148