ATLAS Offline Software
Loading...
Searching...
No Matches
PRDCollHandle_SpacePoints.cxx
Go to the documentation of this file.
1/*
2 Copyright (C) 2002-2023 CERN for the benefit of the ATLAS collaboration
3*/
4
5
7// //
8// Implementation of class PRDCollHandle_SpacePoints //
9// //
10// Author: Thomas H. Kittelmann (Thomas.Kittelmann@cern.ch) //
11// Initial version: September 2008 //
12// //
14
18#include "VP1Base/IVP1System.h"
23#include <QColor>
24
25//____________________________________________________________________
27{
29 return QStringList();
30 QStringList keys = VP1SGContentsHelper(sys).getKeys<SpacePointContainer>();
31 QStringList unsafekeys;
33 for (const QString& key : keys) {
34 if (key.contains("sct",Qt::CaseInsensitive))
35 unsafekeys << key;
36 }
37 }
39 for (const QString& key : keys) {
40 if (key.contains("pixel",Qt::CaseInsensitive))
41 unsafekeys << key;
42 }
43 }
44 for (const QString& unsafekey : unsafekeys)
45 keys.removeAll(unsafekey);
46 return keys;
47}
48
49//____________________________________________________________________
51public:
52 PRDCommonFlags::InDetPartsFlags indetpartsflags;
53};
54
55
56//____________________________________________________________________
62
63//____________________________________________________________________
68
69//____________________________________________________________________
71{
72 if (text().contains("pixel",Qt::CaseInsensitive))
73 return QColor::fromRgbF(1.0, 0.666667, 0.5 );//beige
74 else
75 return QColor::fromRgbF(1.0, 1.0, 0.5 );//light yellow
76}
77
78//____________________________________________________________________
80{
82 // Retrieve element container from event store:
84 if(!VP1SGAccessHelper(systemBase()).retrieve(container,text()))
85 return false;
86
87 int isp(0);
88 SpacePointContainer::const_iterator itElement, itElementE(container->end());
89 for (itElement=container->begin();itElement!=itElementE;++itElement) {
90 SpacePointContainer::base_value_type::const_iterator it, itE((*itElement)->end());
91 for (it=(*itElement)->begin();it!=itE;++it) {
92 const Trk::SpacePoint * sp = *it;
93 ++isp;
94 if (!sp) {
95 message("WARNING - ignoring null spacepoint pointer.");
96 continue;
97 }
98 if (!sp->clusterList().first) {
99 message("WARNING - ignoring spacepoint with null first cluster.");
100 continue;
101 }
102 PRDHandleBase * handle = new PRDHandle_SpacePoint(this,sp);
103 if (handle) {
104 addHandle(handle);
105 //We just register the first of the (possibly) two prds here (fixme: check that it works):
106 common()->registerPRD2Handle(handle->getPRD(),handle);
107 } else {
108 message("WARNING - ignoring null handle pointer.");
109 }
110 if (!(isp%100))
112 }
113 }
114 return true;
115}
116
117//____________________________________________________________________
119{
120 PRDHandle_SpacePoint * handle = static_cast<PRDHandle_SpacePoint*>(handlebase);
121 assert(handle);
122
123 if (m_d->indetpartsflags!=PRDCommonFlags::All) {
124 if (handle->isBarrel()) {
125 if (!(handle->isPositiveZ()?(m_d->indetpartsflags&PRDCommonFlags::BarrelPositive):(m_d->indetpartsflags&PRDCommonFlags::BarrelNegative)))
126 return false;
127 } else {
128 if (!(handle->isPositiveZ()?(m_d->indetpartsflags&PRDCommonFlags::EndCapPositive):(m_d->indetpartsflags&PRDCommonFlags::EndCapNegative)))
129 return false;
130 }
131 }
132 return true;
133}
134
135//____________________________________________________________________
139
140//____________________________________________________________________
144
145//____________________________________________________________________
147{
148 connect(controller,SIGNAL(inDetPartsFlagsChanged(PRDCommonFlags::InDetPartsFlags)),
149 this,SLOT(setPartsFlags(PRDCommonFlags::InDetPartsFlags)));
150 setPartsFlags(controller->inDetPartsFlags());
151}
152
153//____________________________________________________________________
154void PRDCollHandle_SpacePoints::setPartsFlags(PRDCommonFlags::InDetPartsFlags flags)
155{
156 //NB: The code is this method is very similar in PRDCollHandle_Pixel::setPartsFlags, PRDCollHandle_SCT::setPartsFlags,
157 //PRDCollHandle_TRT::setPartsFlags and and PRDCollHandle_SpacePoints::setPartsFlags
158 //Fixme: base decision to recheck on visibility also!
159
160 if (m_d->indetpartsflags==flags)
161 return;
162
163 bool barrelPosChanged = (m_d->indetpartsflags&PRDCommonFlags::BarrelPositive)!=(flags&PRDCommonFlags::BarrelPositive);
164 bool barrelNegChanged = (m_d->indetpartsflags&PRDCommonFlags::BarrelNegative)!=(flags&PRDCommonFlags::BarrelNegative);
165 bool endcapPosChanged = (m_d->indetpartsflags&PRDCommonFlags::EndCapPositive)!=(flags&PRDCommonFlags::EndCapPositive);
166 bool endcapNegChanged = (m_d->indetpartsflags&PRDCommonFlags::EndCapNegative)!=(flags&PRDCommonFlags::EndCapNegative);
167 bool barrelChanged = (barrelPosChanged || barrelNegChanged);
168 bool endcapChanged = (endcapPosChanged || endcapNegChanged);
169 m_d->indetpartsflags=flags;
170
172 std::vector<PRDHandleBase*>::iterator it(getPrdHandles().begin()),itE(getPrdHandles().end());
173 for (;it!=itE;++it) {
174 PRDHandle_SpacePoint* handle = static_cast<PRDHandle_SpacePoint*>(*it);
175 if (handle->isBarrel()) {
176 if (barrelChanged&&(handle->isPositiveZ()?barrelPosChanged:barrelNegChanged))
177 recheckCutStatus(handle);
178 } else {
179 if (endcapChanged&&(handle->isPositiveZ()?endcapPosChanged:endcapNegChanged))
180 recheckCutStatus(handle);
181 }
182 }
184}
static Double_t sp
void updateGUI()
PRDCollHandleBase(PRDDetType::Type, PRDSysCommonData *, const QString &key)
std::vector< PRDHandleBase * > & getPrdHandles()
void addHandle(PRDHandleBase *)
PRDSysCommonData * common() const
void recheckCutStatus(PRDHandleBase *)
PRDCommonFlags::InDetPartsFlags indetpartsflags
virtual void eraseEventDataSpecific() override
virtual void setupSettingsFromControllerSpecific(PRDSystemController *) override
virtual void postLoadInitialisation() override
PRDCollHandle_SpacePoints(PRDSysCommonData *, const QString &key)
void setPartsFlags(PRDCommonFlags::InDetPartsFlags)
static QStringList availableCollections(IVP1System *)
virtual QColor defaultColor() const override
virtual bool cut(PRDHandleBase *) override
virtual const Trk::PrepRawData * getPRD() const =0
void registerPRD2Handle(const Trk::PrepRawData *prd, PRDHandleBase *handle)
PRDCommonFlags::InDetPartsFlags inDetPartsFlags() const
void message(const QString &) const
IVP1System * systemBase() const
static bool hasPixelGeometry()
static bool hasSCTGeometry()
QStringList getKeys() const
virtual void largeChangesEnd()
virtual void largeChangesBegin()
QString text() const
bool contains(const std::string &s, const std::string &regx)
does a string contain the substring
Definition hcg.cxx:114