ATLAS Offline Software
Loading...
Searching...
No Matches
TrackCollHandleBase.h
Go to the documentation of this file.
1/*
2 Copyright (C) 2002-2024 CERN for the benefit of the ATLAS collaboration
3*/
4
5
7// //
8// Header file for class TrackCollHandleBase //
9// //
10// Description: Base class for collection handles //
11// //
12// Author: Thomas H. Kittelmann (Thomas.Kittelmann@cern.ch) //
13// Initial version: February 2008 //
14// //
16
17#ifndef TRACKCOLLHANDLEBASE_H
18#define TRACKCOLLHANDLEBASE_H
19
22#include "VP1TrackSystems/TrackSysCommonData.h"//Not strictly needed
23 //here, but since all
24 //derived classes will
25 //need it we put it
26 //here.
27#include "VP1Base/VP1Interval.h"
28#include "VP1Base/VP1QtUtils.h"
30#include <QColor>
31#include <iostream>
32#include "Identifier/Identifier.h"
33
35class TrackHandleBase;
36class SoSeparator;
37class SoMaterial;
40namespace Trk {
41 class Track;
42 class Segment;
43 class IExtrapolator;
44}
45
47
49{
50
51 Q_OBJECT
52
53public:
54
55 //Each derived class should implement a "static QStringList
56 //availableCollections();" method, which the collection widget will
57 //use to determine the available collections.
58
60 const QString& name,
62 virtual void init(VP1MaterialButtonBase* matBut=0);//reimplementations must start with a call to this.
63 virtual ~TrackCollHandleBase();
64
65 //Called just after creation. Should set current cut values and
66 //connections with controller to monitor future changes. Reimplement
67 //the ..Specific method to setup subsystem specific settings.
69protected:
71public:
72
74 // For loading the data and resetting after each event: //
76
77 //For use by the handles:
78 const QString& name() const;
80 //
81 VP1ExtraSepLayerHelper * sephelper() const { return m_sephelper; }//For attaching/detaching. FIXME: TO BASE!!
82
83 virtual bool canUsePropagator() { return true; }
84
85 double trackTubeRadius() const { return m_trackTubeRadius; }
86
87 virtual bool mightHaveSubSystemHitInfo() const { return false; }
88
89 virtual QByteArray persistifiableState() const;
90 virtual void setState(const QByteArray&);
91
92protected:
93
94 //Must be called from derived classes when filling in new track handles.
95 void hintNumberOfTracksInEvent(unsigned);
97
98 //For iterating over track handles:
100 TrackHandleBase* getNextTrackHandle(); //Returns 0 when done.
101
102 //Override if special cuts. Remember to call base class implementation also for common cuts.
103 virtual bool cut(TrackHandleBase*);//Return true if should be shown (based on various cuts), false otherwise.
104
105 //Utility (fixme: put in utility class elsewhere).
106 template <class T> void cleanupPtrContainer(T&) const;//Delete pointers and calls .clear()
107 // template <class T> void cleanupNodeContainer(T&) const;//unref's pointers and calls .clear()
108
109 void recheckCutStatus(TrackHandleBase*);//Call in derived classes for handles that might be effected by a change in cuts.
110
111 //Convenience methods which can be called from derived classes or
112 //the trackcollwidget (but specialised procedures might be more
113 //optimal)
114public:
118 void update3DObjectsOfAllHandles(bool onlythosetouchingmuonchambers = false, bool invalidatePropagatedPoints = false, float maxR = 0.0 ); // maxR being set will override the prop max value from the controller, e.g. for animations
122
124 //For use only by TrackHandleBase::setVisible(..):
127
128 virtual bool mayHaveAssociatedObjects() const { return false; }
129
130 // FIXME - really not sure any of the prop stuff belongs here. Property of commondata/controller, not coll handle. EJWM
132 TrackSystemController::PropagationOptionFlags propagationOptions() { return m_propagationOptions; }
133
136 TrackCommonFlags::TrackPartsFlags parts() const { return m_parts; }
137
139 static QString toString(const COLOURBY&);
140
141 COLOURBY colourBy() const { return m_colourby; }
142
143 virtual COLOURBY defaultColourBy () const { return COLOUR_PERCOLLECTION; }
144 virtual bool allowColourByPID() const { return false; }
145 virtual bool allowColourByMomentum() const { return true; }
146 virtual bool allowColourByCharge() const { return true; }
147 virtual bool allowColourByDistanceFromSelectedTrack() const {return VP1QtUtils::environmentVariableIsOn("VP1_TRKSYS_COLOURBYDIST"); }
148 virtual bool allowColourByVertex() const { return false; }
150
151 // Cuts
152 bool useDefaultCuts() const;
153 bool cutOnlyVertexAssocTracks() const;
154 //General cuts:
157 QList<VP1Interval> cutAllowedPhi() const;//All off: empty list. All on: list with one entry: ]-inf,inf[
158 //Cuts for number of hits per subsystem:
159 QList<unsigned> cutRequiredNHits() const;//Empty list: no requirements. Otherwise a list
160 // with a length of four (pixel,sct,trt,muon)
161
162 void vertexCutsAllowed(bool); // called if vertex system is available.
163 //Truth cuts:
164 bool cutTruthFromIROnly() const;
167
168protected:
169
170 qint32 provideCollTypeID() const;
171 virtual QString provideSection() const { return TrackType::typeToSectionHeader(m_type); };//FIXME
172 virtual QString provideSectionToolTip() const { return TrackType::typeToSectionHeaderToolTip(m_type); };//FIXME
173 virtual QString provideText() const { return name(); };//FIXME
174 virtual void assignDefaultMaterial(SoMaterial*) const;
175 virtual QColor defaultColor() const = 0;//Will be used in assignDefaultMaterial
176 QList<QWidget*> provideExtraWidgetsForGuiRow() const;
177 QByteArray extraWidgetsState() const;
178 void setExtraWidgetsState(const QByteArray&);
179private Q_SLOTS:
181public Q_SLOTS:
184 void setShownTSOSParts(TrackCommonFlags::TSOSPartsFlags);
185 void setLabels(TrackSystemController::TrackLabelModes);
186 void setLabelTrkOffset(float);
187 void setLabelPosOffsets(const QList<int>&);
188 void setCustomColouredTSOSParts(TrackCommonFlags::TSOSPartsFlags);
193 void setNStdDevForParamErrors(const double&);
197 void setRequiredNHits(const QList<unsigned>&);
198 void setRequiredDetectorElement(const QString& id);
199 void setOnlyVertexAssocTracks(bool);
201 void clipVolumeChanged(double);
202private:
203
204 class Imp;
206
210
213 TrackSystemController::PropagationOptionFlags m_propagationOptions;
215 TrackCommonFlags::TrackPartsFlags m_parts;
216 TrackSystemController::TrackLabelModes m_labels;
221
222 VP1Interval m_cut_allowedPtSq;//We store the allowed interval for pt squared - to avoid sqrt's.
224 QList<VP1Interval> m_cut_allowedPhi;
225 QList<unsigned> m_cut_requiredNHits;
233 void fillObjectBrowser();
235
236private Q_SLOTS:
237 void collVisibilityChanged(bool);
239 void setPropagationOptions(TrackSystemController::PropagationOptionFlags);
240 void setPropMaxRadius(float);
241 void setParts(TrackCommonFlags::TrackPartsFlags);
242 void setParts(int);
243 void setTrackTubeRadius(const double&);
244 void setColourBy(COLOURBY);
245 void setUseDefaultCuts(bool);
246 void setCutAllowedPt(const VP1Interval&);
247 void setCutAllowedEta(const VP1Interval&);
248 void setCutAllowedPhi(const QList<VP1Interval>&);
249 void setActualPathShown(bool);
250
251};
252
253//Fixme: Move elsewhere:
254template <class T> void TrackCollHandleBase::cleanupPtrContainer(T&t) const
255{
256 typename T::iterator it(t.begin()), itE(t.end());
257 for (;it!=itE;++it)
258 delete *it;
259 t.clear();
260}
261
262#endif
263
264
265
266
TrackSysCommonData * common() const
virtual void init(VP1MaterialButtonBase *matBut=0)
virtual bool canUsePropagator()
TrackSysCommonData * m_commonData
VP1ExtraSepLayerHelper * m_sephelper
virtual bool allowColourByDistanceFromSelectedTrack() const
void setNStdDevForParamErrors(const double &)
void recheckCutStatus(TrackHandleBase *)
bool cutTruthExcludeNeutrals() const
TrackSystemController::TrackLabelModes m_labels
double trackTubeRadius() const
Trk::IExtrapolator * propagator() const
bool cutOnlyVertexAssocTracks() const
Return true if this collection should only should tracks associated to a vertex.
virtual QString provideSectionToolTip() const
void setPropagator(Trk::IExtrapolator *)
void setCutAllowedPt(const VP1Interval &)
void extrapolateToThisVolumeChanged(void)
virtual bool mightHaveSubSystemHitInfo() const
void setLabelPosOffsets(const QList< int > &)
virtual QString provideSection() const
QList< QWidget * > provideExtraWidgetsForGuiRow() const
void setShownTSOSParts(TrackCommonFlags::TSOSPartsFlags)
virtual QString provideText() const
void setupSettingsFromController(TrackSystemController *)
void update3DObjectsOfAllHandles(bool onlythosetouchingmuonchambers=false, bool invalidatePropagatedPoints=false, float maxR=0.0)
void hintNumberOfTracksInEvent(unsigned)
void setPropagationOptions(TrackSystemController::PropagationOptionFlags)
const QString & name() const
QList< unsigned > m_cut_requiredNHits
virtual void setState(const QByteArray &)
Provide specific implementation.
virtual void collMaterialTransparencyAndBrightnessChanged()
bool useDefaultCuts() const
Return true if this collection uses the default (i.e.
void setMeasurementsShorttubesScale(double)
void setCustomColouredTSOSParts(TrackCommonFlags::TSOSPartsFlags)
void setExtraWidgetsState(const QByteArray &)
QList< VP1Interval > m_cut_allowedPhi
virtual QColor defaultColor() const =0
void setLabels(TrackSystemController::TrackLabelModes)
VP1ExtraSepLayerHelper * sephelper() const
VP1Interval cutAllowedEta() const
TrackSystemController::PropagationOptionFlags propagationOptions()
QByteArray extraWidgetsState() const
void setCutAllowedPhi(const QList< VP1Interval > &)
bool cutExcludeBarcodeZero() const
virtual void setupSettingsFromControllerSpecific(TrackSystemController *)
virtual bool cut(TrackHandleBase *)
void setTrackTubeRadius(const double &)
void setMaterialEffectsOnTrackScale(double)
VP1Interval cutAllowedPt() const
COLOURBY colourBy() const
void cleanupPtrContainer(T &) const
void setParts(TrackCommonFlags::TrackPartsFlags)
virtual bool allowColourByMomentum() const
static QString toString(const COLOURBY &)
virtual void assignDefaultMaterial(SoMaterial *) const
QList< unsigned > cutRequiredNHits() const
void setRequiredNHits(const QList< unsigned > &)
void addTrackHandle(TrackHandleBase *)
void setCutAllowedEta(const VP1Interval &)
TrackCollHandleBase(TrackSysCommonData *, const QString &name, TrackType::Type)
TrackSystemController::PropagationOptionFlags m_propagationOptions
TrackCommonFlags::TrackPartsFlags m_parts
bool cutTruthFromIROnly() const
virtual QByteArray persistifiableState() const
Provide specific implementation.
virtual COLOURBY defaultColourBy() const
TrackHandleBase * getNextTrackHandle()
QList< VP1Interval > cutAllowedPhi() const
virtual bool allowColourByVertex() const
Trk::IExtrapolator * m_propagator
virtual bool allowColourByCharge() const
void setRequiredDetectorElement(const QString &id)
virtual bool allowColourByPID() const
TrackCommonFlags::TrackPartsFlags parts() const
void vertexCutsAllowed(bool)
virtual bool mayHaveAssociatedObjects() const
static QString typeToSectionHeader(const Type &)
static QString typeToSectionHeaderToolTip(const Type &)
Interface class for the extrapolation AlgTool, it inherits from IAlgTool Detailed information about p...
Base class for all TrackSegment implementations, extends the common MeasurementBase.
static bool environmentVariableIsOn(const QString &name)
VP1StdCollection(IVP1System *, const QString &helperClassName)
Ensure that the ATLAS eigen extensions are properly loaded.