ATLAS Offline Software
Loading...
Searching...
No Matches
VP1RawDataColl_BCM_RDO.cxx
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// Implementation of class VP1RawDataColl_BCM_RDO //
9// //
10// Author: Thomas H. Kittelmann (Thomas.Kittelmann@cern.ch) //
11// Initial version: January 2009 //
12// //
14
24
25
26//____________________________________________________________________
31
32//____________________________________________________________________
37
38
39//____________________________________________________________________
41 : VP1RawDataCollBase(common,key), m_d(new Imp)
42{
43 m_d->useSpecialBCMHighAttMaterial = true;
44
45 connect(common->controller(),SIGNAL(useSpecialBCMHighAttMaterialChanged(bool)),
46 this,SLOT(setUseSpecialBCMHighAttMaterial(bool)));
47 setUseSpecialBCMHighAttMaterial(common->controller()->useSpecialBCMHighAttMaterial());
48}
49
50//____________________________________________________________________
55
56//____________________________________________________________________
58{
59 VP1MaterialButton::setMaterialParameters( m, 0.3, 1.0, 0.95, 0.1 );
60}
61
62//____________________________________________________________________
64{
66 message("BCM geometry not configured in job");
67 return false;
68 }
69 const BCM_RDO_Container* rdoContainer;
70 if (!VP1SGAccessHelper(systemBase()).retrieve(rdoContainer,text())) {
71 message("Problems retrieving container with key "+text());
72 return false;
73 }
74
75 //We collect multiple BCM_RawData objects in one VP1RawDataHandle.
76
77 std::map<int,QList<const BCM_RawData*> > module2data;
78 std::map<int,QList<const BCM_RawData*> >::iterator it;
79
80 BCM_RDO_Container::const_iterator itColl(rdoContainer->begin()), itCollE(rdoContainer->end());
81 for (;itColl!=itCollE;++itColl) {
82 if (!*itColl||(*itColl)->empty())
83 continue;
84 BCM_RDO_Collection::const_iterator itRDO((*itColl)->begin()), itRDOE((*itColl)->end());
85 for (;itRDO!=itRDOE;++itRDO) {
86 //Ignore null-hits (since there doesn't seem to be zero-suppression):
87 if (!(*itRDO)->getPulse1Position()&&!(*itRDO)->getPulse2Position()
88 &&!(*itRDO)->getPulse1Width()&&!(*itRDO)->getPulse2Width())
89 continue;
90
91 int modID = moduleID((*itRDO)->getChannel());
92 it = module2data.find(modID);
93 if (it==module2data.end()) {
94 QList<const BCM_RawData*> l;
95 l << *itRDO;
96 module2data[modID] = l;
97 } else {
98 it->second << *itRDO;
99 }
100
101 }
102 }
103
104 for (it=module2data.begin();it!=module2data.end();++it)
105 addHandle(new VP1RawDataHandle_BCM_RDO(this,it->first,it->second));
106
107 return true;
108}
109
110//____________________________________________________________________
112{
113 return true;
114}
115
116//____________________________________________________________________
118{
119 return m_d->useSpecialBCMHighAttMaterial;
120}
121
122//____________________________________________________________________
124{
125 if (m_d->useSpecialBCMHighAttMaterial==b)
126 return;
127 m_d->useSpecialBCMHighAttMaterial=b;
128
129 std::vector<VP1RawDataHandleBase*>::iterator it(getHandles().begin()),itE(getHandles().end());
130 for (;it!=itE;++it) {
131 if (static_cast<VP1RawDataHandle_BCM_RDO*>(*it)->numberOfHighAttenuationHits()>0)
132 (*it)->update3DObjects();
133 }
134}
DataModel_detail::const_iterator< DataVector > const_iterator
Definition DataVector.h:838
const_iterator end() const noexcept
Return a const_iterator pointing past the end of the collection.
const_iterator begin() const noexcept
Return a const_iterator pointing at the beginning of the collection.
void message(const QString &) const
IVP1System * systemBase() const
static bool hasBCMGeometry()
static void setMaterialParameters(SoMaterial *m, const QColor &, const double &brightness=0.0, const double &transp=0.0)
VP1RawDataCollBase(VP1RawDataCommonData *, const QString &key)
void addHandle(VP1RawDataHandleBase *)
std::vector< VP1RawDataHandleBase * > & getHandles()
bool cut(VP1RawDataHandleBase *)
static QStringList availableCollections(IVP1System *)
int moduleID(int channelID) const
void assignDefaultMaterial(SoMaterial *) const
VP1RawDataColl_BCM_RDO(VP1RawDataCommonData *, const QString &key)
QStringList getKeys() const
QString text() const