ATLAS Offline Software
InDetProjHelper.h
Go to the documentation of this file.
1 /*
2  Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration
3 */
4 
5 
7 // //
8 // Header file for class InDetProjHelper //
9 // //
10 // Description: Helper class for calculating projections //
11 // of data to inner detector surfaces. //
12 // //
13 // Author: Thomas H. Kittelmann (Thomas.Kittelmann@cern.ch) //
14 // Initial version: February 2008 //
15 // //
17 
18 #ifndef INDETPROJHELPER_H
19 #define INDETPROJHELPER_H
20 
23 
26 
27 
28 #include <vector>
29 #include <set>
30 
31 
32 
33 
35 public:
36 
37  //Use one of the following to create an appropriate helper:
41  //(non-zero system pointers to let error messages appear in gui)
42 
43  virtual ~InDetProjHelper();
44 
45  InDetProjFlags::InDetProjPartsFlags setParts(InDetProjFlags::InDetProjPartsFlags);//returns old value
46  InDetProjFlags::InDetProjPartsFlags parts() const;
47 
48  //Clip path to volumes of the enabled detector parts, as given by the parts flag.
49  void clipPath( const std::vector<Amg::Vector3D >& path, Amg::SetVectorVector3D& resulting_subpaths ) const;
50 
51  void clipPath( const std::vector<Amg::Vector3D >& path,
52  Amg::SetVectorVector3D& resulting_subpaths_barrelA,
53  Amg::SetVectorVector3D& resulting_subpaths_barrelC,
54  Amg::SetVectorVector3D& resulting_subpaths_endcapA,
55  Amg::SetVectorVector3D& resulting_subpaths_endcapC ) const;
56 
57  //Clip path as above, and then project the resulting subpaths to surfaces as given by the current parts flag.
58  void projectPath( const std::vector<Amg::Vector3D >& path, Amg::SetVectorVector3D& resulting_projections ) const;
59  void projectPath( const std::vector<Amg::Vector3D >& path,
60  Amg::SetVectorVector3D& resulting_projections_barrelA,
61  Amg::SetVectorVector3D& resulting_projections_barrelC,
62  Amg::SetVectorVector3D& resulting_projections_endcapA,
63  Amg::SetVectorVector3D& resulting_projections_endcapC ) const;
64 
65  //To figure out which parts a given track crosses (this does NOT depend on the current InDetProjPartsFlags setting).
66  enum PartsFlag { NoParts = 0x00, BarrelA = 0x01, BarrelC = 0x02, EndCapA = 0x04, EndCapC = 0x08 };
67  Q_DECLARE_FLAGS(PartsFlags, PartsFlag)
68  PartsFlags touchedParts( const std::vector<Amg::Vector3D >& path ) const;
69 
70  //Fixme: Projection of points? Projection of driftcircle (get normal and point? Or just get transform?)
71 
73  const double& planeZ,
74  const double& planeRBegin,
75  const double& endcapZBegin,
76  const double& squeezeFactor );
77 
78 private:
79 
80  InDetProjHelper( double surfacethickness,
81  double data_disttosurface_epsilon,
82  double barrel_inner_radius,
83  double barrel_outer_radius,
84  double barrel_posneg_z,
85  double endcap_surface_z,
86  double endcap_surface_length,
87  double endcap_inner_radius,
88  double endcap_outer_radius,
89  double endcap_zasr_innerradius,
90  double endcap_zasr_endcapz_begin,
91  double endcap_zasr_squeezefact,
92  IVP1System* sys );
93 
94 
95 
96  class Imp;
97  Imp * m_d;
98 
99 };
100 
101 Q_DECLARE_OPERATORS_FOR_FLAGS(InDetProjHelper::PartsFlags)
102 
103 #endif
InDetProjHelper::parts
InDetProjFlags::InDetProjPartsFlags parts() const
Definition: InDetProjHelper.cxx:268
athena.path
path
python interpreter configuration --------------------------------------—
Definition: athena.py:128
InDetProjHelper::createPixelHelper
static InDetProjHelper * createPixelHelper(IVP1System *sys=0)
Definition: InDetProjHelper.cxx:32
InDetProjHelper::touchedParts
PartsFlags touchedParts(const std::vector< Amg::Vector3D > &path) const
Definition: InDetProjHelper.cxx:926
InDetProjHelper::createSCTHelper
static InDetProjHelper * createSCTHelper(IVP1System *sys=0)
Definition: InDetProjHelper.cxx:50
InDetProjHelper
Definition: InDetProjHelper.h:34
Amg::SetVectorVector3D
std::set< std::vector< Amg::Vector3D >, VectorVector3DComparer > SetVectorVector3D
Definition: GeoPrimitivesHelpers.h:36
InDetProjHelper::EndCapC
@ EndCapC
Definition: InDetProjHelper.h:66
mapkey::sys
@ sys
Definition: TElectronEfficiencyCorrectionTool.cxx:42
GeoPrimitives.h
InDetProjHelper::PartsFlag
PartsFlag
Definition: InDetProjHelper.h:66
IVP1System
Definition: IVP1System.h:36
python.utils.AtlRunQueryDQUtils.p
p
Definition: AtlRunQueryDQUtils.py:210
InDetProjHelper::BarrelC
@ BarrelC
Definition: InDetProjHelper.h:66
InDetProjHelper::BarrelA
@ BarrelA
Definition: InDetProjHelper.h:66
InDetProjHelper::projectPath
void projectPath(const std::vector< Amg::Vector3D > &path, Amg::SetVectorVector3D &resulting_projections) const
Definition: InDetProjHelper.cxx:819
InDetProjHelper::transformECPointToZPlane_specialZtoR
static void transformECPointToZPlane_specialZtoR(Amg::Vector3D &p, const double &planeZ, const double &planeRBegin, const double &endcapZBegin, const double &squeezeFactor)
Definition: InDetProjHelper.cxx:780
VP1HelperClassBase
Definition: VP1HelperClassBase.h:28
InDetProjHelper::clipPath
void clipPath(const std::vector< Amg::Vector3D > &path, Amg::SetVectorVector3D &resulting_subpaths) const
Definition: InDetProjHelper.cxx:274
InDetProjHelper::m_d
Imp * m_d
Definition: InDetProjHelper.h:96
VP1HelperClassBase.h
Amg::Vector3D
Eigen::Matrix< double, 3, 1 > Vector3D
Definition: GeoPrimitives.h:47
GeoPrimitivesHelpers.h
InDetProjFlags.h
InDetProjHelper::EndCapA
@ EndCapA
Definition: InDetProjHelper.h:66
InDetProjHelper::Imp
Definition: InDetProjHelper.cxx:86
InDetProjHelper::createTRTHelper
static InDetProjHelper * createTRTHelper(IVP1System *sys=0)
Definition: InDetProjHelper.cxx:68
InDetProjHelper::setParts
InDetProjFlags::InDetProjPartsFlags setParts(InDetProjFlags::InDetProjPartsFlags)
Definition: InDetProjHelper.cxx:196
InDetProjHelper::InDetProjHelper
InDetProjHelper(double surfacethickness, double data_disttosurface_epsilon, double barrel_inner_radius, double barrel_outer_radius, double barrel_posneg_z, double endcap_surface_z, double endcap_surface_length, double endcap_inner_radius, double endcap_outer_radius, double endcap_zasr_innerradius, double endcap_zasr_endcapz_begin, double endcap_zasr_squeezefact, IVP1System *sys)
Definition: InDetProjHelper.cxx:151
InDetProjHelper::~InDetProjHelper
virtual ~InDetProjHelper()
Definition: InDetProjHelper.cxx:190
InDetProjHelper::NoParts
@ NoParts
Definition: InDetProjHelper.h:66