ATLAS Offline Software
Loading...
Searching...
No Matches
InDetProjHelper Class Reference

#include <InDetProjHelper.h>

Inheritance diagram for InDetProjHelper:
Collaboration diagram for InDetProjHelper:

Classes

class  Imp

Public Types

enum  PartsFlag {
  NoParts = 0x00 , BarrelA = 0x01 , BarrelC = 0x02 , EndCapA = 0x04 ,
  EndCapC = 0x08
}

Public Member Functions

virtual ~InDetProjHelper ()
InDetProjFlags::InDetProjPartsFlags setParts (InDetProjFlags::InDetProjPartsFlags)
InDetProjFlags::InDetProjPartsFlags parts () const
void clipPath (const std::vector< Amg::Vector3D > &path, Amg::SetVectorVector3D &resulting_subpaths) const
void clipPath (const std::vector< Amg::Vector3D > &path, Amg::SetVectorVector3D &resulting_subpaths_barrelA, Amg::SetVectorVector3D &resulting_subpaths_barrelC, Amg::SetVectorVector3D &resulting_subpaths_endcapA, Amg::SetVectorVector3D &resulting_subpaths_endcapC) const
void projectPath (const std::vector< Amg::Vector3D > &path, Amg::SetVectorVector3D &resulting_projections) const
void projectPath (const std::vector< Amg::Vector3D > &path, Amg::SetVectorVector3D &resulting_projections_barrelA, Amg::SetVectorVector3D &resulting_projections_barrelC, Amg::SetVectorVector3D &resulting_projections_endcapA, Amg::SetVectorVector3D &resulting_projections_endcapC) const
PartsFlags touchedParts (const std::vector< Amg::Vector3D > &path) const
void setSystemBasePointer (IVP1System *sys)
void message (const QString &) const
void message (const QStringList &, const QString &addtoend="") const
void message (const QString &addtostart, const QStringList &, const QString &addtoend="") const
void messageDebug (const QString &) const
void messageDebug (const QStringList &, const QString &addtoend="") const
void messageDebug (const QString &addtostart, const QStringList &, const QString &addtoend="") const
void messageVerbose (const QString &) const
void messageVerbose (const QStringList &, const QString &addtoend="") const
void messageVerbose (const QString &addtostart, const QStringList &, const QString &addtoend="") const
IVP1SystemsystemBase () const
const QString & helperClassName () const

Static Public Member Functions

static InDetProjHelpercreatePixelHelper (IVP1System *sys=0)
static InDetProjHelpercreateSCTHelper (IVP1System *sys=0)
static InDetProjHelpercreateTRTHelper (IVP1System *sys=0)
static void transformECPointToZPlane_specialZtoR (Amg::Vector3D &p, const double &planeZ, const double &planeRBegin, const double &endcapZBegin, const double &squeezeFactor)
static bool verbose ()
static void warnUndeletedInstances ()
static QString str (const QString &s)
static QString str (const char *c)
static QString str (const bool b)
static QString str (const QColor &)
static QString str (const SbColor &)
static QString str (const VP1Interval &)
static QString str (const SbVec2d &)
static QString str (const SbVec2f &)
static QString str (const SbVec2s &)
static QString str (const SbVec3d &)
static QString str (const SbVec3f &)
static QString str (const SbVec3s &)
static QString str (const SbVec4d &)
static QString str (const SbVec4f &)
static QString str (short int n)
static QString str (unsigned short int n)
static QString str (long n)
static QString str (ulong n)
static QString str (int n)
static QString str (uint n)
static QString str (qlonglong n)
static QString str (qulonglong n)
static QString str (const double &d)
static QString str (const float &f)
static QString str (const void *)
template<class T>
static QString str (const T *t)
template<class T>
static QString str (const QFlags< T > &f)
template<class T>
static QString str (const HepGeom::BasicVector3D< T > &t)
static QString str (const Amg::Vector3D &t)
template<class T>
static QString str (const QList< T > &t)

Protected Member Functions

void setHelperClassName (const QString &n)

Private Member Functions

 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)

Private Attributes

Impm_d
QString m_helpername
IVP1Systemm_system

Static Private Attributes

static const bool s_vp1verbose = VP1QtUtils::environmentVariableIsOn("VP1_VERBOSE_OUTPUT")

Detailed Description

Definition at line 34 of file InDetProjHelper.h.

Member Enumeration Documentation

◆ PartsFlag

Enumerator
NoParts 
BarrelA 
BarrelC 
EndCapA 
EndCapC 

Definition at line 66 of file InDetProjHelper.h.

Constructor & Destructor Documentation

◆ ~InDetProjHelper()

InDetProjHelper::~InDetProjHelper ( )
virtual

Definition at line 190 of file InDetProjHelper.cxx.

191{
192 delete m_d;
193}

◆ 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 )
private

Definition at line 151 of file InDetProjHelper.cxx.

164 : VP1HelperClassBase(sys,"InDetProjHelper"), m_d(new Imp)
165{
166 m_d->theclass = this;
167
168 m_d->surfacethickness = surfacethickness;
169 m_d->data_disttosurface_epsilon = data_disttosurface_epsilon;
170 m_d->barrel_inner_radius = barrel_inner_radius;
171 m_d->barrel_outer_radius = barrel_outer_radius;
172 m_d->barrel_posneg_z = barrel_posneg_z;
173 m_d->endcap_surface_z = endcap_surface_z;
174 m_d->endcap_surface_length = endcap_surface_length;
175 m_d->endcap_inner_radius = endcap_inner_radius;
176 m_d->endcap_outer_radius = endcap_outer_radius;
177 m_d->endcap_zasr_innerradius = endcap_zasr_innerradius;
178 m_d->endcap_zasr_endcapz_begin = endcap_zasr_endcapz_begin;
179 m_d->endcap_zasr_squeezefact = endcap_zasr_squeezefact;
180
182 m_d->covercyl_zmin = 0.0;
183 m_d->covercyl_zmax = 0.0;
184 m_d->covercyl_rmin = 0.0;
185 m_d->covercyl_rmax = 0.0;
186
187}
VP1HelperClassBase(IVP1System *sys=0, QString helpername="")

Member Function Documentation

◆ clipPath() [1/2]

void InDetProjHelper::clipPath ( const std::vector< Amg::Vector3D > & path,
Amg::SetVectorVector3D & resulting_subpaths ) const

Definition at line 274 of file InDetProjHelper.cxx.

276{
277 clipPath(path,resulting_subpaths,resulting_subpaths,resulting_subpaths,resulting_subpaths);
278}
void clipPath(const std::vector< Amg::Vector3D > &path, Amg::SetVectorVector3D &resulting_subpaths) const

◆ clipPath() [2/2]

void InDetProjHelper::clipPath ( const std::vector< Amg::Vector3D > & path,
Amg::SetVectorVector3D & resulting_subpaths_barrelA,
Amg::SetVectorVector3D & resulting_subpaths_barrelC,
Amg::SetVectorVector3D & resulting_subpaths_endcapA,
Amg::SetVectorVector3D & resulting_subpaths_endcapC ) const

Definition at line 281 of file InDetProjHelper.cxx.

286{
287 if (VP1Msg::verbose())
288 messageVerbose("clipPath(..) called. Input path has "+QString::number(path.size())+" points.");
289
290 resulting_subpaths_barrelA.clear();
291 resulting_subpaths_barrelC.clear();
292 resulting_subpaths_endcapA.clear();
293 resulting_subpaths_endcapC.clear();
294
295 //Fixme: If verbose - perform sanity check of input data (check for NAN's).
296 if (m_d->parts == InDetProjFlags::NoProjections ) {
297 if (VP1Msg::verbose())
298 messageVerbose("All projections currently off.");
299 return;
300 }
301 if ( path.size()<2 ) {
302 if (VP1Msg::verbose())
303 messageVerbose("Input path too short.");
304 return;
305 }
306
307 // Find the clipped path's in all of the enabled detector parts.
308
309 //For efficiency, we first clip the path to the smallest
310 //axis-aligned cylinder containing all of the projective volumes
311 Amg::SetVectorVector3D paths_clipped;
312 m_d->clipPathToHollowCylinder( path, paths_clipped,
313 m_d->covercyl_rmin, m_d->covercyl_rmax,
314 m_d->covercyl_zmin, m_d->covercyl_zmax );
315
316 if (paths_clipped.empty()) {
317 if (VP1Msg::verbose())
318 messageVerbose("Path entirely outside clip volumes.");
319 return;
320 }
321
322 const bool enabled_brlA = m_d->parts & InDetProjFlags::Barrel_AllPos;
323 const bool enabled_brlC = m_d->parts & InDetProjFlags::Barrel_AllNeg;
324 const bool enabled_ecA = m_d->parts & InDetProjFlags::EndCap_AllPos;
325 const bool enabled_ecC = m_d->parts & InDetProjFlags::EndCap_AllNeg;
326
327 //Special case: If exactly one of the four parts is enabled, we already have our result:
328 if ( ( (enabled_brlA?1:0) + (enabled_brlC?1:0) + (enabled_ecA?1:0) + (enabled_ecC?1:0) ) == 1 ) {
329 if (enabled_brlA) {
330 resulting_subpaths_barrelA = paths_clipped;
331 if (VP1Msg::verbose())
332 messageVerbose("clipPath(..) only brlA enabled. Returning.");
333 return;
334 }
335 if (enabled_brlC) {
336 resulting_subpaths_barrelC = paths_clipped;
337 if (VP1Msg::verbose())
338 messageVerbose("clipPath(..) only brlC enabled. Returning.");
339 return;
340 }
341 if (enabled_ecA) {
342 resulting_subpaths_endcapA = paths_clipped;
343 if (VP1Msg::verbose())
344 messageVerbose("clipPath(..) only ecA enabled. Returning.");
345 return;
346 }
347 if (enabled_ecC) {
348 resulting_subpaths_endcapC = paths_clipped;
349 if (VP1Msg::verbose())
350 messageVerbose("clipPath(..) only ecC enabled. Returning.");
351 return;
352 }
353 }
354
355
356 //For each of the segments, we then find its clipped parts inside
357 //the four detector volumes: BarrelA, BarrelC, EndCapA, EndCapC.
358 // Amg::SetVectorVector3D paths_brlA, paths_brlC, paths_ecA,paths_ecC;
359 Amg::SetVectorVector3D::const_iterator it, itE(paths_clipped.end());
360 for (it = paths_clipped.begin();it!=itE;++it) {
361 if ( enabled_brlA )
362 m_d->clipPathToHollowCylinder( *it, resulting_subpaths_barrelA, m_d->barrel_inner_radius, m_d->barrel_outer_radius, 0, m_d->barrel_posneg_z );
363 if ( enabled_brlC )
364 m_d->clipPathToHollowCylinder( *it, resulting_subpaths_barrelC, m_d->barrel_inner_radius, m_d->barrel_outer_radius, - m_d->barrel_posneg_z, 0 );
365 if ( enabled_ecA )
366 m_d->clipPathToHollowCylinder( *it, resulting_subpaths_endcapA, m_d->endcap_inner_radius, m_d->endcap_outer_radius,
367 m_d->endcap_surface_z - m_d->endcap_surface_length * 0.5, m_d->endcap_surface_z + m_d->endcap_surface_length * 0.5 );
368 if ( enabled_ecC )
369 m_d->clipPathToHollowCylinder( *it, resulting_subpaths_endcapC, m_d->endcap_inner_radius, m_d->endcap_outer_radius,
370 - m_d->endcap_surface_z - m_d->endcap_surface_length * 0.5, - m_d->endcap_surface_z + m_d->endcap_surface_length * 0.5 );
371 }
372
373 messageVerbose("clipPath(..) end.");
374 //Fixme: If verbose: sanity check on output!
375}
void messageVerbose(const QString &) const
static bool verbose()
Definition VP1Msg.h:31
std::set< std::vector< Amg::Vector3D >, VectorVector3DComparer > SetVectorVector3D
path
python interpreter configuration --------------------------------------—
Definition athena.py:128

◆ createPixelHelper()

InDetProjHelper * InDetProjHelper::createPixelHelper ( IVP1System * sys = 0)
static

Definition at line 32 of file InDetProjHelper.cxx.

33{
46 system );
47}
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)
static double pixel_endcap_outer_radius()
static double pixel_barrel_outer_radius()
static double surfacethickness()
static double pixel_data_disttosurface_epsilon()
static double pixel_barrel_posneg_z()
static double pixel_endcap_inner_radius()
static double pixel_endcap_zasr_endcapz_begin()
static double pixel_endcap_zasr_squeezefact()
static double pixel_barrel_inner_radius()
static double pixel_endcap_surface_length()
static double pixel_endcap_surface_z()
static double pixel_endcap_zasr_innerradius()

◆ createSCTHelper()

InDetProjHelper * InDetProjHelper::createSCTHelper ( IVP1System * sys = 0)
static

Definition at line 50 of file InDetProjHelper.cxx.

51{
64 system );
65}
static double sct_barrel_inner_radius()
static double sct_endcap_zasr_squeezefact()
static double sct_endcap_surface_z()
static double sct_endcap_zasr_innerradius()
static double sct_endcap_surface_length()
static double sct_endcap_outer_radius()
static double sct_barrel_posneg_z()
static double sct_data_disttosurface_epsilon()
static double sct_endcap_zasr_endcapz_begin()
static double sct_endcap_inner_radius()
static double sct_barrel_outer_radius()

◆ createTRTHelper()

InDetProjHelper * InDetProjHelper::createTRTHelper ( IVP1System * sys = 0)
static

Definition at line 68 of file InDetProjHelper.cxx.

69{
82 system );
83}
static double trt_endcap_surface_z()
static double trt_barrel_posneg_z()
static double trt_endcap_inner_radius()
static double trt_endcap_surface_length()
static double trt_endcap_zasr_squeezefact()
static double trt_barrel_outer_radius()
static double trt_endcap_zasr_endcapz_begin()
static double trt_data_disttosurface_epsilon()
static double trt_endcap_outer_radius()
static double trt_endcap_zasr_innerradius()
static double trt_barrel_inner_radius()

◆ helperClassName()

const QString & VP1HelperClassBase::helperClassName ( ) const
inlineinherited

Definition at line 51 of file VP1HelperClassBase.h.

51{ return m_helpername; }

◆ message() [1/3]

void VP1HelperClassBase::message ( const QString & str) const
inherited

Definition at line 49 of file VP1HelperClassBase.cxx.

50{
51 if (m_helpername.isEmpty()) {
52 if (m_system)
53 m_system->message(str);
54 else
55 std::cout<<VP1Msg::prefix_msg()<<" [nameless helper class]: "<<str.toStdString()<<std::endl;
56 } else {
57 if (m_system)
58 m_system->message("["+m_helpername+"] " + str);
59 else
60 std::cout<<VP1Msg::prefix_msg()<<" ["<<m_helpername.toStdString()<<"]: "<<str.toStdString()<<std::endl;
61 }
62}
static const char * prefix_msg()
Definition VP1Msg.h:56
static QString str(const QString &s)
Definition VP1String.h:49

◆ message() [2/3]

void VP1HelperClassBase::message ( const QString & addtostart,
const QStringList & l,
const QString & addtoend = "" ) const
inherited

Definition at line 131 of file VP1HelperClassBase.cxx.

132{
133 if (addtostart.isEmpty()) {
134 message(l,addtoend);
135 return;
136 }
137 if (addtoend.isEmpty()) {
138 for (const QString& s : l)
139 message(addtostart+s);
140 } else {
141 for (const QString& s : l)
142 message(addtostart+s+addtoend);
143 }
144}
void message(const QString &) const

◆ message() [3/3]

void VP1HelperClassBase::message ( const QStringList & l,
const QString & addtoend = "" ) const
inherited

Definition at line 91 of file VP1HelperClassBase.cxx.

92{
93 if (addtoend.isEmpty()) {
94 for (const QString& s : l)
95 message(s);
96 } else {
97 for (const QString& s : l)
98 message(s+addtoend);
99 }
100}

◆ messageDebug() [1/3]

void VP1HelperClassBase::messageDebug ( const QString & str) const
inherited

Definition at line 65 of file VP1HelperClassBase.cxx.

66{
67 if (!VP1Msg::debug())
68 return;
69 std::string sysstring(m_system ? " in "+m_system->name().toStdString() : std::string(""));
70 if (m_helpername.isEmpty()) {
71 std::cout<<VP1Msg::prefix_debug()<<" [helper"<<sysstring<<"]: "<<str.toStdString()<<std::endl;
72 } else {
73 std::cout<<VP1Msg::prefix_debug()<<" ["<<m_helpername.toStdString()<<sysstring<<"]: "<<str.toStdString()<<std::endl;
74 }
75}
static bool debug()
Definition VP1Msg.h:32
static const char * prefix_debug()
Definition VP1Msg.h:57

◆ messageDebug() [2/3]

void VP1HelperClassBase::messageDebug ( const QString & addtostart,
const QStringList & l,
const QString & addtoend = "" ) const
inherited

Definition at line 147 of file VP1HelperClassBase.cxx.

148{
149 if (!VP1Msg::debug())
150 return;
151 if (addtostart.isEmpty()) {
152 messageDebug(l,addtoend);
153 return;
154 }
155 if (addtoend.isEmpty()) {
156 for (const QString& s : l)
157 messageDebug(addtostart+s);
158 } else {
159 for (const QString& s : l)
160 messageDebug(addtostart+s+addtoend);
161 }
162}
void messageDebug(const QString &) const

◆ messageDebug() [3/3]

void VP1HelperClassBase::messageDebug ( const QStringList & l,
const QString & addtoend = "" ) const
inherited

Definition at line 103 of file VP1HelperClassBase.cxx.

104{
105 if (!VP1Msg::debug())
106 return;
107 if (addtoend.isEmpty()) {
108 for (const QString& s : l)
109 messageDebug(s);
110 } else {
111 for (const QString& s : l)
112 messageDebug(s+addtoend);
113 }
114}

◆ messageVerbose() [1/3]

void VP1HelperClassBase::messageVerbose ( const QString & str) const
inherited

Definition at line 78 of file VP1HelperClassBase.cxx.

79{
80 if (!VP1Msg::verbose())
81 return;
82 std::string sysstring(m_system ? " in "+m_system->name().toStdString() : std::string(""));
83 if (m_helpername.isEmpty()) {
84 std::cout<<VP1Msg::prefix_verbose()<<" [helper"<<sysstring<<"]: "<<str.toStdString()<<std::endl;
85 } else {
86 std::cout<<VP1Msg::prefix_verbose()<<" ["<<m_helpername.toStdString()<<sysstring<<"]: "<<str.toStdString()<<std::endl;
87 }
88}
static const char * prefix_verbose()
Definition VP1Msg.h:59

◆ messageVerbose() [2/3]

void VP1HelperClassBase::messageVerbose ( const QString & addtostart,
const QStringList & l,
const QString & addtoend = "" ) const
inherited

Definition at line 165 of file VP1HelperClassBase.cxx.

166{
167 if (!VP1Msg::verbose())
168 return;
169 if (addtostart.isEmpty()) {
170 messageVerbose(l,addtoend);
171 return;
172 }
173 if (addtoend.isEmpty()) {
174 for (const QString& s : l)
175 messageVerbose(addtostart+s);
176 } else {
177 for (const QString& s : l)
178 messageVerbose(addtostart+s+addtoend);
179 }
180}

◆ messageVerbose() [3/3]

void VP1HelperClassBase::messageVerbose ( const QStringList & l,
const QString & addtoend = "" ) const
inherited

Definition at line 117 of file VP1HelperClassBase.cxx.

118{
119 if (!VP1Msg::verbose())
120 return;
121 if (addtoend.isEmpty()) {
122 for (const QString& s : l)
124 } else {
125 for (const QString& s : l)
126 messageVerbose(s+addtoend);
127 }
128}

◆ parts()

InDetProjFlags::InDetProjPartsFlags InDetProjHelper::parts ( ) const

Definition at line 268 of file InDetProjHelper.cxx.

269{
270 return m_d->parts;
271}

◆ projectPath() [1/2]

void InDetProjHelper::projectPath ( const std::vector< Amg::Vector3D > & path,
Amg::SetVectorVector3D & resulting_projections ) const

Definition at line 819 of file InDetProjHelper.cxx.

821{
822 projectPath(path,resulting_projs,resulting_projs,resulting_projs,resulting_projs);
823}
void projectPath(const std::vector< Amg::Vector3D > &path, Amg::SetVectorVector3D &resulting_projections) const

◆ projectPath() [2/2]

void InDetProjHelper::projectPath ( const std::vector< Amg::Vector3D > & path,
Amg::SetVectorVector3D & resulting_projections_barrelA,
Amg::SetVectorVector3D & resulting_projections_barrelC,
Amg::SetVectorVector3D & resulting_projections_endcapA,
Amg::SetVectorVector3D & resulting_projections_endcapC ) const

Definition at line 826 of file InDetProjHelper.cxx.

831{
832 if (VP1Msg::verbose())
833 messageVerbose("projectPath(..) called. Input path has "+QString::number(path.size())+" points.");
834
835 resulting_projections_barrelA.clear();
836 resulting_projections_barrelC.clear();
837 resulting_projections_endcapA.clear();
838 resulting_projections_endcapC.clear();
839
840 //Fixme: If verbose - perform sanity check of input data (check for NAN's).
841 if (m_d->parts == InDetProjFlags::NoProjections ) {
842 if (VP1Msg::verbose())
843 messageVerbose("All projections currently off.");
844 return;
845 }
846 if ( path.size()<2 ) {
847 if (VP1Msg::verbose())
848 messageVerbose("Input path too short.");
849 return;
850 }
851
852 // ===> First we must find the clipped path's in all of the enabled detector parts.
853
854 Amg::SetVectorVector3D paths_brlA, paths_brlC, paths_ecA,paths_ecC;
855 clipPath( path,paths_brlA, paths_brlC, paths_ecA,paths_ecC);
856
857 // ===> Then we project those.
858
859 //Fixme: The dependence on surface thickness and epsilon below is very preliminary.
860
861 const double eps = m_d->data_disttosurface_epsilon;
862 const double endcapeps(-5*SYSTEM_OF_UNITS::mm);//fixme hardcoding..
863
864 Amg::SetVectorVector3D::const_iterator it,itE;
865
866 if (m_d->parts & InDetProjFlags::Barrel_AllPos) {
867 itE = paths_brlA.end();
868 if ( m_d->parts & InDetProjFlags::BarrelCentral )
869 for ( it = paths_brlA.begin(); it!=itE; ++it )
870 m_d->projectPathToZPlane( *it, resulting_projections_barrelA, 0.5*m_d->surfacethickness+eps );
871 if ( m_d->parts & InDetProjFlags::BarrelPositive )
872 for ( it = paths_brlA.begin(); it!=itE; ++it )
873 m_d->projectPathToZPlane( *it, resulting_projections_barrelA, m_d->barrel_posneg_z - eps );
874 }
875 if ( m_d->parts & InDetProjFlags::Barrel_AllNeg ) {
876 itE = paths_brlC.end();
877 if ( m_d->parts & InDetProjFlags::BarrelCentral )
878 for ( it = paths_brlC.begin(); it!=itE; ++it )
879 m_d->projectPathToZPlane( *it, resulting_projections_barrelC, - 0.5*m_d->surfacethickness - eps);
880 if ( m_d->parts & InDetProjFlags::BarrelNegative )
881 for ( it = paths_brlC.begin(); it!=itE; ++it )
882 m_d->projectPathToZPlane( *it, resulting_projections_barrelC, - m_d->barrel_posneg_z );
883 }
884 if ( m_d->parts & InDetProjFlags::EndCap_AllPos ) {
885 itE = paths_ecA.end();
887 for ( it = paths_ecA.begin(); it!=itE; ++it )
888 m_d->projectPathToInfiniteCylinder( *it, resulting_projections_endcapA, m_d->endcap_inner_radius + eps+endcapeps );
890 for ( it = paths_ecA.begin(); it!=itE; ++it )
891 m_d->projectPathToInfiniteCylinder( *it, resulting_projections_endcapA, m_d->endcap_outer_radius + eps+endcapeps );
892 //Fixme: Make sure to use the same parameters here as in PRDHandle_TRT.cxx:
894 for ( it = paths_ecA.begin(); it!=itE; ++it )
895 m_d->projectPathToZPlane_specialZtoR( *it, resulting_projections_endcapA,
896 0.5*m_d->surfacethickness + eps );
897 //Fixme: Make sure to use the same parameters here as in PRDHandle_TRT.cxx:
899 for ( it = paths_ecA.begin(); it!=itE; ++it )
900 m_d->projectPathToZPlane_specialZtoR( *it, resulting_projections_endcapA,
901 m_d->barrel_posneg_z - 0.5*m_d->surfacethickness - eps /*fixme: +- epsilon??*/ );
902 }
903 if ( m_d->parts & InDetProjFlags::EndCap_AllNeg ) {
904 itE = paths_ecC.end();
906 for ( it = paths_ecC.begin(); it!=itE; ++it )
907 m_d->projectPathToInfiniteCylinder( *it, resulting_projections_endcapC, m_d->endcap_inner_radius + eps+endcapeps );
909 for ( it = paths_ecC.begin(); it!=itE; ++it )
910 m_d->projectPathToInfiniteCylinder( *it, resulting_projections_endcapC, m_d->endcap_outer_radius + eps+endcapeps );
911 //Fixme: Make sure to use the same parameters here as in PRDHandle_TRT.cxx:
913 for ( it = paths_ecC.begin(); it!=itE; ++it )
914 m_d->projectPathToZPlane_specialZtoR( *it, resulting_projections_endcapC,
915 - 0.5*m_d->surfacethickness - eps );
916 //Fixme: Make sure to use the same parameters here as in PRDHandle_TRT.cxx:
918 for ( it = paths_ecC.begin(); it!=itE; ++it )
919 m_d->projectPathToZPlane_specialZtoR( *it, resulting_projections_endcapC,
920 - m_d->barrel_posneg_z + 0.5*m_d->surfacethickness + eps/*fixme: +- epsilon??*/ );
921 }
922
923}

◆ setHelperClassName()

void VP1HelperClassBase::setHelperClassName ( const QString & n)
inlineprotectedinherited

Definition at line 59 of file VP1HelperClassBase.h.

◆ setParts()

InDetProjFlags::InDetProjPartsFlags InDetProjHelper::setParts ( InDetProjFlags::InDetProjPartsFlags newparts)

Definition at line 196 of file InDetProjHelper.cxx.

197{
198 if ( m_d->parts==newparts )
199 return m_d->parts;
200 InDetProjFlags::InDetProjPartsFlags oldparts = m_d->parts;
201 m_d->parts = newparts;
202
203 //Update parameters of smallest cylinder covering all enabled clip volumes.
204 if (m_d->parts == InDetProjFlags::NoProjections) {
205 m_d->covercyl_zmin = 0.0;
206 m_d->covercyl_zmax = 0.0;
207 m_d->covercyl_rmin = 0.0;
208 m_d->covercyl_rmax = 0.0;
209 return oldparts;
210 }
211
212 bool no_ec_neg = !( m_d->parts & InDetProjFlags::EndCap_AllNeg );
213 bool no_ec_pos = !( m_d->parts & InDetProjFlags::EndCap_AllPos );
214 bool no_brl_neg = !( m_d->parts & InDetProjFlags::Barrel_AllNeg );
215 bool no_brl_pos = !( m_d->parts & InDetProjFlags::Barrel_AllPos );
216 bool barrel = m_d->parts & InDetProjFlags::Barrel_All;
217 bool endcap = m_d->parts & InDetProjFlags::EndCap_All;
218
219 m_d->covercyl_zmin = - m_d->endcap_surface_z - 0.5*m_d->endcap_surface_length;
220 if ( no_ec_neg ) {
221 m_d->covercyl_zmin = - m_d->barrel_posneg_z;
222 if ( no_brl_neg ) {
223 m_d->covercyl_zmin = 0.0;
224 if ( no_brl_pos ) {
225 m_d->covercyl_zmin = m_d->barrel_posneg_z;
226 if ( no_ec_pos )
227 m_d->covercyl_zmin = m_d->endcap_surface_z + 0.5*m_d->endcap_surface_length + 1.0e99;
228 }
229 }
230 }
231 m_d->covercyl_zmax = m_d->endcap_surface_z + 0.5*m_d->endcap_surface_length;
232 if ( no_ec_pos ) {
233 m_d->covercyl_zmax = m_d->barrel_posneg_z;
234 if ( no_brl_pos ) {
235 m_d->covercyl_zmax = 0.0;
236 if ( no_brl_neg ) {
237 m_d->covercyl_zmax = - m_d->barrel_posneg_z;
238 if ( no_ec_neg )
239 m_d->covercyl_zmax = - m_d->endcap_surface_z - 0.5*m_d->endcap_surface_length - 1.0e99;
240 }
241 }
242 }
243 if ( m_d->covercyl_zmin >= m_d->covercyl_zmax )
244 m_d->covercyl_zmin = m_d->covercyl_zmax = 0;
245
246 if ( barrel && endcap ) {
247 m_d->covercyl_rmin = std::min(m_d->barrel_inner_radius,m_d->endcap_inner_radius);
248 m_d->covercyl_rmax = std::max(m_d->barrel_outer_radius,m_d->endcap_outer_radius);
249 } else {
250 if (barrel) {
251 m_d->covercyl_rmin = m_d->barrel_inner_radius;
252 m_d->covercyl_rmax = m_d->barrel_outer_radius;
253 } else if (endcap) {
254 m_d->covercyl_rmin = m_d->endcap_inner_radius;
255 m_d->covercyl_rmax = m_d->endcap_outer_radius;
256 } else {
257 message("Unforeseen execution path encountered.");
258 m_d->covercyl_rmin = 0;
259 m_d->covercyl_rmax = 0;
260 }
261 }
262 if ( m_d->covercyl_rmin >= m_d->covercyl_rmax )
263 m_d->covercyl_rmin = m_d->covercyl_rmax = 0;
264 return oldparts;
265}

◆ setSystemBasePointer()

void VP1HelperClassBase::setSystemBasePointer ( IVP1System * sys)
inherited

Definition at line 197 of file VP1HelperClassBase.cxx.

198{
199 m_system = sys;
200 if (VP1Msg::verbose()){
201 vp1helperclassbase_instanceMap[this] = (m_system?m_system->name():QString(""));
202 }
203}
static std::map< VP1HelperClassBase *, QString > vp1helperclassbase_instanceMap

◆ str() [1/30]

QString VP1String::str ( const Amg::Vector3D & t)
inlinestaticinherited

Definition at line 98 of file VP1String.h.

98{ return "("+str(t.x())+", "+str(t.y())+", "+str(t.z())+")"; }

◆ str() [2/30]

QString VP1String::str ( const bool b)
inlinestaticinherited

Definition at line 53 of file VP1String.h.

53{ return b?"True":"False"; }

◆ str() [3/30]

QString VP1String::str ( const char * c)
inlinestaticinherited

Definition at line 50 of file VP1String.h.

50{ return c; }

◆ str() [4/30]

QString VP1String::str ( const double & d)
inlinestaticinherited

Definition at line 81 of file VP1String.h.

81{ return QString::number(d); }

◆ str() [5/30]

QString VP1String::str ( const float & f)
inlinestaticinherited

Definition at line 82 of file VP1String.h.

82{ return QString::number(f); }

◆ str() [6/30]

template<class T>
QString VP1String::str ( const HepGeom::BasicVector3D< T > & t)
inlinestaticinherited

Definition at line 95 of file VP1String.h.

95{ return "("+str(t.x())+", "+str(t.y())+", "+str(t.z())+")"; }

◆ str() [7/30]

QString VP1String::str ( const QColor & c)
staticinherited

Definition at line 30 of file VP1String.cxx.

31{
32 return c.isValid() ? c.name() : "Invalid";
33}

◆ str() [8/30]

template<class T>
QString VP1String::str ( const QFlags< T > & f)
inlinestaticinherited

Definition at line 91 of file VP1String.h.

91{ return "0x"+QString::number(f, 16).toUpper().rightJustified(8,'0'); }

◆ str() [9/30]

template<class T>
QString VP1String::str ( const QList< T > & t)
inlinestaticinherited

Definition at line 102 of file VP1String.h.

102{ return "QList of size"+QString::number(t.size()); }

◆ str() [10/30]

QString VP1String::str ( const QString & s)
inlinestaticinherited

Definition at line 49 of file VP1String.h.

49{ return s; }

◆ str() [11/30]

QString VP1String::str ( const SbColor & c)
staticinherited

Definition at line 36 of file VP1String.cxx.

37{
39}
static QColor sbcol2qcol(const SbColor &)

◆ str() [12/30]

QString VP1String::str ( const SbVec2d & v)
staticinherited

Definition at line 61 of file VP1String.cxx.

61{ double x,y; v.getValue(x,y); return "("+str(x)+", "+str(y)+")"; }
#define y
#define x

◆ str() [13/30]

QString VP1String::str ( const SbVec2f & v)
staticinherited

Definition at line 62 of file VP1String.cxx.

62{ float x,y; v.getValue(x,y); return "("+str(x)+", "+str(y)+")"; }

◆ str() [14/30]

QString VP1String::str ( const SbVec2s & v)
staticinherited

Definition at line 63 of file VP1String.cxx.

63{ short x,y; v.getValue(x,y); return "("+str(x)+", "+str(y)+")"; }

◆ str() [15/30]

QString VP1String::str ( const SbVec3d & v)
staticinherited

Definition at line 64 of file VP1String.cxx.

64{ double x,y,z; v.getValue(x,y,z); return "("+str(x)+", "+str(y)+", "+str(z)+")"; }
#define z

◆ str() [16/30]

QString VP1String::str ( const SbVec3f & v)
staticinherited

Definition at line 65 of file VP1String.cxx.

65{ float x,y,z; v.getValue(x,y,z); return "("+str(x)+", "+str(y)+", "+str(z)+")"; }

◆ str() [17/30]

QString VP1String::str ( const SbVec3s & v)
staticinherited

Definition at line 66 of file VP1String.cxx.

66{ short x,y,z; v.getValue(x,y,z); return "("+str(x)+", "+str(y)+", "+str(z)+")"; }

◆ str() [18/30]

QString VP1String::str ( const SbVec4d & v)
staticinherited

Definition at line 67 of file VP1String.cxx.

67{ double x,y,z,t; v.getValue(x,y,z,t); return "("+str(x)+", "+str(y)+", "+str(z)+", "+str(t)+")"; }

◆ str() [19/30]

QString VP1String::str ( const SbVec4f & v)
staticinherited

Definition at line 68 of file VP1String.cxx.

68{ float x,y,z,t; v.getValue(x,y,z,t); return "("+str(x)+", "+str(y)+", "+str(z)+", "+str(t)+")"; }

◆ str() [20/30]

template<class T>
QString VP1String::str ( const T * t)
inlinestaticinherited

Definition at line 87 of file VP1String.h.

87{ return str(static_cast<const void* >(t)); }

◆ str() [21/30]

QString VP1String::str ( const void * p)
staticinherited

Definition at line 48 of file VP1String.cxx.

49{
50 if (p) {
51 std::ostringstream s;
52 s << p;
53 // Explicitly naming QString here avoids a cppcheck warning.
54 return QString (s.str().c_str());
55 } else {
56 return "NULL";
57 }
58}

◆ str() [22/30]

QString VP1String::str ( const VP1Interval & i)
staticinherited

Definition at line 42 of file VP1String.cxx.

43{
44 return i.toString();
45}

◆ str() [23/30]

QString VP1String::str ( int n)
inlinestaticinherited

Definition at line 77 of file VP1String.h.

77{ return QString::number(n); }

◆ str() [24/30]

QString VP1String::str ( long n)
inlinestaticinherited

Definition at line 75 of file VP1String.h.

75{ return QString::number(n); }

◆ str() [25/30]

QString VP1String::str ( qlonglong n)
inlinestaticinherited

Definition at line 79 of file VP1String.h.

79{ return QString::number(n); }

◆ str() [26/30]

QString VP1String::str ( qulonglong n)
inlinestaticinherited

Definition at line 80 of file VP1String.h.

80{ return QString::number(n); }

◆ str() [27/30]

QString VP1String::str ( short int n)
inlinestaticinherited

Definition at line 73 of file VP1String.h.

73{ return QString::number(n); }

◆ str() [28/30]

QString VP1String::str ( uint n)
inlinestaticinherited

Definition at line 78 of file VP1String.h.

78{ return QString::number(n); }

◆ str() [29/30]

QString VP1String::str ( ulong n)
inlinestaticinherited

Definition at line 76 of file VP1String.h.

76{ return QString::number(n); }

◆ str() [30/30]

QString VP1String::str ( unsigned short int n)
inlinestaticinherited

Definition at line 74 of file VP1String.h.

74{ return QString::number(n); }

◆ systemBase()

IVP1System * VP1HelperClassBase::systemBase ( ) const
inlineinherited

Definition at line 50 of file VP1HelperClassBase.h.

50{ return m_system; }

◆ touchedParts()

InDetProjHelper::PartsFlags InDetProjHelper::touchedParts ( const std::vector< Amg::Vector3D > & path) const

Definition at line 926 of file InDetProjHelper.cxx.

927{
928 if (VP1Msg::verbose())
929 messageVerbose("touchedParts(..) called. Input path has "+QString::number(path.size())+" points.");
930 PartsFlags touchedparts = NoParts;
931 if ( m_d->touchesHollowCylinder(path,m_d->barrel_inner_radius, m_d->barrel_outer_radius, 0, m_d->barrel_posneg_z) )
932 touchedparts |= BarrelA;
933 if ( m_d->touchesHollowCylinder(path,m_d->barrel_inner_radius, m_d->barrel_outer_radius, - m_d->barrel_posneg_z, 0) )
934 touchedparts |= BarrelC;
935 if ( m_d->touchesHollowCylinder(path,m_d->endcap_inner_radius, m_d->endcap_outer_radius,
936 m_d->endcap_surface_z - m_d->endcap_surface_length * 0.5, m_d->endcap_surface_z + m_d->endcap_surface_length * 0.5 ) )
937 touchedparts |= EndCapA;
938 if ( m_d->touchesHollowCylinder(path, m_d->endcap_inner_radius, m_d->endcap_outer_radius,
939 - m_d->endcap_surface_z - m_d->endcap_surface_length * 0.5, - m_d->endcap_surface_z + m_d->endcap_surface_length * 0.5) )
940 touchedparts |= EndCapC;
941 return touchedparts;
942}

◆ transformECPointToZPlane_specialZtoR()

void InDetProjHelper::transformECPointToZPlane_specialZtoR ( Amg::Vector3D & p,
const double & planeZ,
const double & planeRBegin,
const double & endcapZBegin,
const double & squeezeFactor )
static

Definition at line 780 of file InDetProjHelper.cxx.

785{
786 if ( p.x()==0.0 && p.y()==0.0 ) {
787 VP1Msg::message("InDetProjHelper::transformECPointToZPlane_specialZtoR ERROR: "
788 "Point has x==0 and y==0. Ambiguous projection of point.");
789// p.setX(1.0);
790 p.x() = 1.0;
791 }
792 const double r = planeRBegin + (fabs(p.z())-endcapZBegin)/squeezeFactor;
793 const double s = r / sqrt( p.x()*p.x()+p.y()*p.y() );
794// p.setX(p.x()*s);
795// p.setY(p.y()*s);
796// p.setZ(planeZ);
797 p.x() = p.x()*s;
798 p.y() = p.y()*s;
799 p.z() = planeZ;
800}
static void message(const QString &, IVP1System *sys=0)
Definition VP1Msg.cxx:30
int r
Definition globals.cxx:22

◆ verbose()

bool VP1HelperClassBase::verbose ( )
inlinestaticinherited

Definition at line 32 of file VP1HelperClassBase.h.

32{ return s_vp1verbose; } // Returns true if env var VP1_VERBOSE_OUTPUT=1
static const bool s_vp1verbose

◆ warnUndeletedInstances()

void VP1HelperClassBase::warnUndeletedInstances ( )
staticinherited

Definition at line 183 of file VP1HelperClassBase.cxx.

184{
186 return;
187 std::cout << "WARNING: Detected "<<vp1helperclassbase_instanceMap.size()<<" undeleted helper class instances:"<<std::endl;
188
189 std::map<VP1HelperClassBase*,QString>::iterator it,itE(vp1helperclassbase_instanceMap.end());
190 for (it = vp1helperclassbase_instanceMap.begin();it!=itE;++it) {
191 std::cout << " ==> "<<it->first<<": "<<it->first->m_helpername.toStdString()
192 << (it->second.isEmpty()?QString(""):" (in system "+it->second+")").toStdString()<<std::endl;
193 }
194}

Member Data Documentation

◆ m_d

Imp* InDetProjHelper::m_d
private

Definition at line 97 of file InDetProjHelper.h.

◆ m_helpername

QString VP1HelperClassBase::m_helpername
privateinherited

Definition at line 67 of file VP1HelperClassBase.h.

◆ m_system

IVP1System* VP1HelperClassBase::m_system
privateinherited

Definition at line 68 of file VP1HelperClassBase.h.

◆ s_vp1verbose

const bool VP1HelperClassBase::s_vp1verbose = VP1QtUtils::environmentVariableIsOn("VP1_VERBOSE_OUTPUT")
staticprivateinherited

Definition at line 69 of file VP1HelperClassBase.h.


The documentation for this class was generated from the following files: