34#include <Inventor/C/errors/debugerror.h>
35#include <Inventor/nodes/SoSeparator.h>
36#include <Inventor/nodes/SoSwitch.h>
37#include <Inventor/nodes/SoMaterial.h>
38#include "Inventor/nodes/SoDrawStyle.h"
39#include "Inventor/nodes/SoLightModel.h"
48#if defined BUILDVP1LIGHT
83 m_d->updateGUICounter = 0;
84 m_d->collSettingsButton = 0;
85 m_d->last_minimumQuality = 0;
86 m_d->hasPrimaryTrackParticleInfo =
false;
89 QString safetext(
text());
90 safetext.replace(
' ',
'_');
91 safetext.replace(
'[',
'_');
92 safetext.replace(
']',
'_');
93 safetext.replace(
'/',
'_');
94 safetext.replace(
'.',
'_');
95 safetext.replace(
',',
'_');
96 safetext.replace(
'<',
'_');
97 safetext.replace(
'>',
'_');
98 safetext.replace(
'&',
'_');
117 m_d->collSettingsButton->setMaterialText(
name());
131 collSwitch()->addChild(
m_d->collSettingsButton->trackLightModel());
132 collSwitch()->addChild(
m_d->collSettingsButton->trackDrawStyle());
145 connect(
m_d->collSettingsButton,SIGNAL(cutAllowedPhiChanged(
const QList<VP1Interval>&)),
this,SLOT(
setCutAllowedPhi(
const QList<VP1Interval>&)));
148 connect(
m_d->collSettingsButton,SIGNAL(minimumQualityChanged(
unsigned int)),
this,SLOT(
setMinimumQuality(
unsigned int)));
172 if (!
m_d->collSettingsButton){
173 messageVerbose(
"No collSettingsButton set! Can't call init(), so crash is imminent...");
174 throw std::runtime_error(
"Muon - No collSettingsButton set!");
176 return *
m_d->collSettingsButton;
187 #if defined BUILDVP1LIGHT
189 if( !(
systemBase()->getEvent())->retrieve( coll,
name().toStdString()).isSuccess() ) {
190 message(
"Error: Could not retrieve collection with key="+
name());
195 message(
"Error: Could not retrieve Muon collection with key="+
name());
204 if( ! coll->hasStore() ) {
205 message(
"No auxiliary store got associated to the Muon container with key: " +
name());
213 QList<const xAOD::TrackParticle*> listOfTrackParticles;
217 for ( it = coll->
begin() ; it != itEnd; ++it) {
218 m_d->possiblyUpdateGUI();
232 m_d->hasPrimaryTrackParticleInfo =
true;
235 m_d->hasPrimaryTrackParticleInfo =
false;
239 if(listOfTrackParticles.size()>0) {
249 QString
msg =
"SEVERE WARNING! No 'primaryTrackParticle' information found within the Muons collection of the input file! As a consequence, several quantities cannot be calculated. Also, expect crashes... Please, check the data contained in your input data file.";
256 return m_d->hasPrimaryTrackParticleInfo;
267 if (not muon)
return false;
268 std::cout<<
"muon: "<<muon<<
"\t muon->quality()="<<muon->quality()<<
" collSettingsButton().minimumQuality()="<<
collSettingsButton().
minimumQuality()<<std::endl;
269 if (
static_cast<unsigned int>(muon->quality()) >
collSettingsButton().minimumQuality() )
277 if (quality ==
m_d->last_minimumQuality)
279 std::cout<<
"IParticleCollHandle_Muon::setMinimumQuality : "<<quality<<
" last = "<<
m_d->last_minimumQuality<<std::endl;
280 bool relaxcut = quality >
m_d->last_minimumQuality;
281 m_d->last_minimumQuality = quality;
294 QList<const xAOD::TrackParticle*> listOfTrackParticles;
307 listOfTrackParticles<<mhandle->
muon().
trackParticle( xAOD::Muon::CombinedTrackParticle);
309 listOfTrackParticles<<mhandle->
muon().
trackParticle( xAOD::Muon::InnerDetectorTrackParticle);
311 listOfTrackParticles<<mhandle->
muon().
trackParticle( xAOD::Muon::MuonSpectrometerTrackParticle);
313 listOfTrackParticles<<mhandle->
muon().
trackParticle( xAOD::Muon::ExtrapolatedMuonSpectrometerTrackParticle);
317 std::cout<<
"IParticleCollHandle_Muon::updateAssociatedTrackParticles Emitting "<<listOfTrackParticles.size()<<
" track particles."<<std::endl;
323 std::cout<<
"IParticleCollHandle_Muon::setShownAssociatedObjects : "<<std::endl;
const AODSysCommonData * common() const
void recheckCutStatusOfAllNotVisibleHandles()
void recheckCutStatusOfAllVisibleHandles()
void setupSettingsFromController(const AODSystemController *)
void collVisibilityChanged(bool)
const QString & name() const
DataModel_detail::const_iterator< DataVector > const_iterator
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.
IParticleCollHandleBase(AODSysCommonData *, const QString &name, xAOD::Type::ObjectType)
virtual AODHandleBase * getNextHandle()
virtual void handleIterationBegin()
void setCutAllowedPt(const VP1Interval &)
virtual bool cut(AODHandleBase *)
void setCutAllowedPhi(const QList< VP1Interval > &)
void addHandle(AODHandleBase *)
void setCutAllowedEta(const VP1Interval &)
bool hasPrimaryTrackParticleInfo
MuonCollectionSettingsButton * collSettingsButton
IParticleCollHandle_Muon * theclass
unsigned int last_minimumQuality
virtual bool cut(AODHandleBase *)
virtual void setupSettingsFromControllerSpecific(const AODSystemController *)
For extensions specific to this collection.
bool hasPrimaryTrackParticleInfo()
void shownAssociatedObjectsChanged(const QList< const xAOD::TrackParticle * > &)
void updateAssociatedTrackParticles()
const MuonCollectionSettingsButton & collSettingsButton() const
IParticleCollHandle_Muon(AODSysCommonData *, const QString &name, xAOD::Type::ObjectType type)
void printMsgNoTrackParticle()
static QStringList availableCollections(IVP1System *)
void resetCachedValuesCuts()
virtual void init(VP1MaterialButtonBase *matBut=0)
virtual ~IParticleCollHandle_Muon()
void updateShownAssociatedObjects()
void setMinimumQuality(unsigned int)
const xAOD::Muon & muon() const
void message(const QString &) const
Interface for non-const operations on an auxiliary store.
void messageVerbose(const QString &) const
void message(const QString &) const
IVP1System * systemBase() const
void messageDebug(const QString &) const
static void messageWarningAllRed(const QString &str, IVP1System *sys=0)
QStringList getKeys() const
virtual void init(VP1MaterialButtonBase *button=0)
SoSwitch * collSwitch() const
Add this somewhere in your scenegraph (do not add any children here!)
void visibilityChanged(bool)
const TrackParticle * primaryTrackParticle() const
Returns a pointer (which should not usually be NULL, but might be if the muon has been stripped of in...
const TrackParticle * trackParticle(TrackParticleType type) const
Returns a pointer (which can be NULL) to the TrackParticle used in identification of this muon.
ObjectType
Type of objects that have a representation in the xAOD EDM.
@ Muon
The object is a muon.
MuonContainer_v1 MuonContainer
Definition of the current "Muon container version".