ATLAS Offline Software
Loading...
Searching...
No Matches
PRDCollHandle_Pixel.cxx
Go to the documentation of this file.
1/*
2 Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration
3*/
4
9#include <QColor>
10
14
15//____________________________________________________________________
17{
18 return VP1JobConfigInfo::hasPixelGeometry() ? VP1SGContentsHelper(sys).getKeys<InDet::PixelClusterContainer>() : QStringList();
19}
20
21//____________________________________________________________________
23public:
24 PRDCommonFlags::InDetPartsFlags indetpartsflags;
25 unsigned minNRDOPerCluster = 0U;
26};
27
28//____________________________________________________________________
35
36//____________________________________________________________________
41
42//____________________________________________________________________
44{
45 return QColor::fromRgbF(1.0, 0.666667, 0.5 );//beige
46}
47
48//____________________________________________________________________
50{
51 assert(dynamic_cast<const InDet::PixelCluster*>(prd));
52 return new PRDHandle_Pixel(this,static_cast<const InDet::PixelCluster*>(prd));
53}
54
55//____________________________________________________________________
57{
58 PRDHandle_Pixel * handle = static_cast<PRDHandle_Pixel*>(handlebase);
59 assert(handle);
60
61 if (m_d->indetpartsflags!=PRDCommonFlags::All) {
62 if (handle->isBarrel()) {
63 if (!(handle->isPositiveZ()?(m_d->indetpartsflags&PRDCommonFlags::BarrelPositive):(m_d->indetpartsflags&PRDCommonFlags::BarrelNegative)))
64 return false;
65 } else {
66 if (!(handle->isPositiveZ()?(m_d->indetpartsflags&PRDCommonFlags::EndCapPositive):(m_d->indetpartsflags&PRDCommonFlags::EndCapNegative)))
67 return false;
68 }
69 }
70 if (m_d->minNRDOPerCluster&&handle->cluster()->rdoList().size()<m_d->minNRDOPerCluster)
71 return false;
72 return true;
73}
74
75//____________________________________________________________________
76void PRDCollHandle_Pixel::setPartsFlags(PRDCommonFlags::InDetPartsFlags flags ) {
77 //NB: The code is this method is very similar in PRDCollHandle_Pixel::setPartsFlags, PRDCollHandle_SCT::setPartsFlags,
78 //PRDCollHandle_TRT::setPartsFlags and and PRDCollHandle_SpacePoints::setPartsFlags
79 //Fixme: base decision to recheck on visibility also!
80
81 if (m_d->indetpartsflags==flags)
82 return;
83
84 bool barrelPosChanged = (m_d->indetpartsflags&PRDCommonFlags::BarrelPositive)!=(flags&PRDCommonFlags::BarrelPositive);
85 bool barrelNegChanged = (m_d->indetpartsflags&PRDCommonFlags::BarrelNegative)!=(flags&PRDCommonFlags::BarrelNegative);
86 bool endcapPosChanged = (m_d->indetpartsflags&PRDCommonFlags::EndCapPositive)!=(flags&PRDCommonFlags::EndCapPositive);
87 bool endcapNegChanged = (m_d->indetpartsflags&PRDCommonFlags::EndCapNegative)!=(flags&PRDCommonFlags::EndCapNegative);
88 bool barrelChanged = (barrelPosChanged || barrelNegChanged);
89 bool endcapChanged = (endcapPosChanged || endcapNegChanged);
90 m_d->indetpartsflags=flags;
91
93 std::vector<PRDHandleBase*>::iterator it(getPrdHandles().begin()),itE(getPrdHandles().end());
94 for (;it!=itE;++it) {
95 PRDHandle_Pixel* handle = static_cast<PRDHandle_Pixel*>(*it);
96
97 if (handle->isBarrel()) {
98 if (barrelChanged&&(handle->isPositiveZ()?barrelPosChanged:barrelNegChanged))
99 recheckCutStatus(handle);
100 } else {
101 if (endcapChanged&&(handle->isPositiveZ()?endcapPosChanged:endcapNegChanged))
102 recheckCutStatus(handle);
103 }
104
105 }
107
108}
109
110//____________________________________________________________________
112{
113 if (m_d->minNRDOPerCluster==minnrdo)
114 return;
115 bool cut_relaxed = minnrdo<m_d->minNRDOPerCluster;
116 m_d->minNRDOPerCluster = minnrdo;
117 if (cut_relaxed)
119 else
121}
122
123//____________________________________________________________________
125{
126 connect(controller,SIGNAL(inDetPartsFlagsChanged(PRDCommonFlags::InDetPartsFlags)),this,SLOT(setPartsFlags(PRDCommonFlags::InDetPartsFlags)));
127 setPartsFlags(controller->inDetPartsFlags());
128
129 connect(controller,SIGNAL(pixelMinNRDOPerClusterChanged(unsigned)),this,SLOT(setMinNRDOPerCluster(unsigned)));
131}
void recheckCutStatusOfAllNotVisibleHandles()
PRDCollHandleBase(PRDDetType::Type, PRDSysCommonData *, const QString &key)
std::vector< PRDHandleBase * > & getPrdHandles()
void recheckCutStatus(PRDHandleBase *)
void recheckCutStatusOfAllVisibleHandles()
PRDCommonFlags::InDetPartsFlags indetpartsflags
PRDCollHandle_Pixel(PRDSysCommonData *, const QString &key)
void setPartsFlags(PRDCommonFlags::InDetPartsFlags)
virtual QColor defaultColor() const override
virtual PRDHandleBase * addPRD(const Trk::PrepRawData *) override
virtual bool cut(PRDHandleBase *) override
virtual void setupSettingsFromControllerSpecific(PRDSystemController *) override
static QStringList availableCollections(IVP1System *)
void setMinNRDOPerCluster(unsigned)
bool isBarrel() const
bool isPositiveZ() const
const InDet::PixelCluster * cluster() const
PRDCommonFlags::InDetPartsFlags inDetPartsFlags() const
unsigned pixelMinNRDOPerCluster() const
const std::vector< Identifier > & rdoList() const
return the List of rdo identifiers (pointers)
static bool hasPixelGeometry()
QStringList getKeys() const
virtual void largeChangesEnd()
virtual void largeChangesBegin()