Skip to content
Snippets Groups Projects
Commit bba7fcfa authored by Dave Casper's avatar Dave Casper
Browse files

Add waveforms to the event display

parent 86fe652a
No related branches found
No related tags found
No related merge requests found
Showing
with 2198 additions and 18 deletions
......@@ -117,12 +117,20 @@ acc.merge(PoolWriteCfg(ConfigFlags))
from FaserByteStreamCnvSvc.FaserByteStreamCnvSvcConfig import FaserByteStreamCnvSvcCfg
acc.merge(FaserByteStreamCnvSvcCfg(ConfigFlags))
#acc.merge(WaveformReconstructionCfg(ConfigFlags))
acc.merge(WaveformReconstructionCfg(ConfigFlags))
acc.merge(FaserSCT_ClusterizationCfg(ConfigFlags, DataObjectName="SCT_EDGEMODE_RDOs"))
acc.merge(ClusterFitAlgCfg(ConfigFlags))
acc.merge(TrackerSpacePointFinderCfg(ConfigFlags))
#acc.getEventAlgo("Tracker::ClusterFitAlg").OutputLevel = DEBUG
from AthenaConfiguration.ComponentFactory import CompFactory
decoderTool = CompFactory.ScintWaveformDecoderTool(name = "ScintWaveformDecoderTool",
CaloChannels = [0, 1, 2, 3, 4, 5],
PreshowerChannels = [6, 7],
TriggerChannels = [8, 9],
VetoChannels=[])
acc.addPublicTool(decoderTool)
# explicitly save RDO information
from OutputStreamAthenaPool.OutputStreamConfig import OutputStreamCfg
itemList = [ "xAOD::EventInfo#*",
......@@ -130,12 +138,12 @@ itemList = [ "xAOD::EventInfo#*",
"FaserSCT_RDO_Container#*",
"xAOD::FaserTriggerData#*",
"xAOD::FaserTriggerDataAux#*",
# "ScintWaveformContainer#*",
"ScintWaveformContainer#*",
"TrackCollection#*",
# "xAOD::WaveformHitContainer#*",
# "xAOD::WaveformHitAuxContainer#*",
# "xAOD::WaveformClock#*",
# "xAOD::WaveformClockAuxInfo#*",
"xAOD::WaveformHitContainer#*",
"xAOD::WaveformHitAuxContainer#*",
"xAOD::WaveformClock#*",
"xAOD::WaveformClockAuxInfo#*",
]
acc.merge(OutputStreamCfg(ConfigFlags, "ESD", itemList))
acc.getEventAlgo("OutputStreamESD").AcceptAlgs = ["Tracker::ClusterFitAlg"]
......
......@@ -251,7 +251,7 @@ VP1MainWindow::VP1MainWindow(VP1ExecutionScheduler*sched,VP1AvailEvents * ae,QWi
// connect(pushButton_quicksetup_trackingstudies,SIGNAL(clicked()),this,SLOT(quickSetupTriggered()));
// connect(pushButton_quicksetup_calostudies,SIGNAL(clicked()),this,SLOT(quickSetupTriggered()));
connect(pushButton_quicksetup_geometrystudies,SIGNAL(clicked()),this,SLOT(quickSetupTriggered()));
connect(pushButton_quicksetup_analysisstudies,SIGNAL(clicked()),this,SLOT(quickSetupTriggered()));
connect(pushButton_quicksetup_waveformstudies,SIGNAL(clicked()),this,SLOT(quickSetupTriggered()));
//Default application font:
m_defaultfont = QApplication::font();
......@@ -284,7 +284,7 @@ VP1MainWindow::VP1MainWindow(VP1ExecutionScheduler*sched,VP1AvailEvents * ae,QWi
// connect(action_quicklaunch_Tracking_studies,SIGNAL(triggered(bool)),this,SLOT(quickSetupTriggered()));
// connect(action_quicklaunch_Calo_studies,SIGNAL(triggered(bool)),this,SLOT(quickSetupTriggered()));
connect(action_quicklaunch_Geometry_studies,SIGNAL(triggered(bool)),this,SLOT(quickSetupTriggered()));
connect(action_quicklaunch_analysisstudies,SIGNAL(triggered(bool)),this,SLOT(quickSetupTriggered()));
connect(action_quicklaunch_waveformstudies,SIGNAL(triggered(bool)),this,SLOT(quickSetupTriggered()));
connect(action_quicklaunch_Storegate_browser,SIGNAL(triggered(bool)),this,SLOT(quickSetupTriggered()));
connect(action_quicklaunch_faser,SIGNAL(triggered(bool)),this,SLOT(quickSetupTriggered()));
// connect(action_quicklaunch_trackcalo_commis,SIGNAL(triggered(bool)),this,SLOT(quickSetupTriggered()));
......@@ -1747,7 +1747,7 @@ void VP1MainWindow::quickSetupTriggered()
plugfile="libVP13DCocktailPlugin.so";
channelname="TrackCalo";
tabname = "Track/Calo";
} */else if (sender()==pushButton_quicksetup_analysisstudies||sender()==action_quicklaunch_analysisstudies) {
} */else if (sender()==pushButton_quicksetup_waveformstudies||sender()==action_quicklaunch_waveformstudies) {
//Open AOD file selection dialog for VP1Light
#ifdef BUILDVP1LIGHT
......@@ -1761,9 +1761,9 @@ void VP1MainWindow::quickSetupTriggered()
pushButton_eventselect->setEnabled(true);
#endif // BUILDVP1LIGHT
plugfile="libVP1AODPlugin.so";
channelname="AOD";
tabname = "Analysis";
plugfile="libVTI12WaveformPlugin.so";
channelname="Waveform";
tabname = "Waveforms";
} else {
addToMessageBox("quickSetupTriggered() Error: Unknown sender");
return;
......
......@@ -608,12 +608,12 @@ p, li { white-space: pre-wrap; }
</widget>
</item>
<item row="2" column="0" colspan="3">
<widget class="QPushButton" name="pushButton_quicksetup_analysisstudies">
<widget class="QPushButton" name="pushButton_quicksetup_waveformstudies">
<property name="toolTip">
<string>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;Launch the Analysis Object (AOD) plugin within a new tab.&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</string>
<string>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;Launch the VP1Waveform plugin within a new tab.&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</string>
</property>
<property name="text">
<string>Unused</string>
<string>Waveform studies</string>
</property>
</widget>
</item>
......@@ -764,7 +764,7 @@ p, li { white-space: pre-wrap; }
<addaction name="action_quicklaunch_Calo_studies"/> -->
<addaction name="action_quicklaunch_Geometry_studies"/>
<!-- <addaction name="action_quicklaunch_trackcalo_commis"/> -->
<addaction name="action_quicklaunch_analysisstudies"/>
<addaction name="action_quicklaunch_waveformstudies"/>
<addaction name="action_quicklaunch_Storegate_browser"/>
<addaction name="separator"/>
<addaction name="action_exit_VP1"/>
......@@ -880,9 +880,9 @@ p, li { white-space: pre-wrap; }
<string>Open additional settings</string>
</property>
</action>
<action name="action_quicklaunch_analysisstudies">
<action name="action_quicklaunch_waveformstudies">
<property name="text">
<string>A&amp;nalysis Studies</string>
<string>&amp;Waveform Studies</string>
</property>
</action>
</widget>
......
################################################################################
# Package: VTI12WaveformPlugin
################################################################################
# Declare the package name:
atlas_subdir( VTI12WaveformPlugin )
# External dependencies:
find_package( Qt5 COMPONENTS Core Gui Widgets )
# Generate MOC files automatically:
set( CMAKE_AUTOMOC TRUE )
# Build the library.
atlas_add_library( VTI12WaveformPlugin
VTI12WaveformPlugin/*.h src/*.cxx src/*.qrc
PUBLIC_HEADERS VTI12WaveformPlugin
LINK_LIBRARIES Qt5::Core Qt5::Gui Qt5::Widgets
PRIVATE_LINK_LIBRARIES VP1Base VTI12WaveformSystems )
/*
Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration
*/
/////////////////////////////////////////////////////////////
// //
// Header file for class VP1GeometryChannel //
// //
// Author: Thomas Kittelmann <Thomas.Kittelmann@cern.ch> //
// //
// Initial version: May 2007 //
// //
/////////////////////////////////////////////////////////////
#ifndef VP1GEOMETRYCHANNEL_H
#define VP1GEOMETRYCHANNEL_H
#include "VP1Base/IVP12DStandardChannelWidget.h"
class VP1WaveformChannel : public IVP12DStandardChannelWidget {
Q_OBJECT
public:
VP1WaveformChannel();
void init();
virtual ~VP1WaveformChannel(){}
};
#endif
/*
Copyright (C) 2002-2019 CERN for the benefit of the ATLAS collaboration
*/
//Autogenerated VP1 Factory Code Header File (Fri Aug 19 13:36:52 CEST 2016)
#ifndef VP1WaveformPlugin_VP1AutoFactory_H
#define VP1WaveformPlugin_VP1AutoFactory_H
#include <QObject>
#include <QStringList>
#include "VP1Base/IVP1ChannelWidgetFactory.h"
class VP1WaveformPlugin_VP1AutoFactory : public QObject, public IVP1ChannelWidgetFactory
{
Q_OBJECT
Q_PLUGIN_METADATA(IID "VP1WaveformPlugin" )
Q_INTERFACES(IVP1ChannelWidgetFactory)
public:
virtual QStringList channelWidgetsProvided() const;
virtual IVP1ChannelWidget * getChannelWidget(const QString & channelwidget);
};
#endif
/*
Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration
*/
/////////////////////////////////////////////////////////////
// //
// Implementation of class VP1WaveformChannel //
// //
// Author: Dave Casper <dcasper@uci.edu> //
// //
// Initial version: August 2021 //
// //
/////////////////////////////////////////////////////////////
#include "VTI12WaveformPlugin/VP1WaveformChannel.h"
#include "VTI12WaveformSystems/VP1WaveformSystem.h"
#include "VP1Base/VP1QtUtils.h"
VP1WaveformChannel::VP1WaveformChannel()
: IVP12DStandardChannelWidget(VP1CHANNELNAMEINPLUGIN(VP1WaveformChannel,"Waveform"),
"This channel shows the FASER waveform data.",
"dcasper@uci.edu")
{
}
void VP1WaveformChannel::init()
{
addSystem(new VP1WaveformSystem);
// addSystem(new VP1GeometrySystem);
// if (VP1QtUtils::environmentVariableIsOn("VP1_SECOND_GEOMSYS"))
// addSystem(new VP1GeometrySystem(VP1GeoFlags::None,"AltGeo"),IVP13DStandardChannelWidget::StartDisabled);
}
/*
Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration
*/
//Autogenerated VP1 Factory Code Implementation File (Fri Aug 19 13:36:52 CEST 2016)
#include <QtPlugin>
#include "VTI12WaveformPlugin/VP1WaveformPlugin_VP1AutoFactory.h"
#include "VTI12WaveformPlugin/VP1WaveformChannel.h"
QStringList VP1WaveformPlugin_VP1AutoFactory::channelWidgetsProvided() const
{
return QStringList()
<< "Waveform"
;
}
IVP1ChannelWidget * VP1WaveformPlugin_VP1AutoFactory::getChannelWidget(const QString & channelwidget)
{
if (channelwidget == "Waveform")
return new VP1WaveformChannel();
return 0;
}
################################################################################
# Package: VTI12WaveformSystems
################################################################################
# Declare the package name:
atlas_subdir( VTI12WaveformSystems )
# External dependencies:
find_package( Coin3D )
find_package( Qt5 COMPONENTS Core Gui Widgets Charts )
# Generate UI files automatically:
set( CMAKE_AUTOUIC TRUE )
# Generate MOC files automatically:
set( CMAKE_AUTOMOC TRUE )
# Component(s) in the package:
atlas_add_library( VTI12WaveformSystems VTI12WaveformSystems/*.h src/*.cxx
PUBLIC_HEADERS VTI12WaveformSystems
INCLUDE_DIRS ${COIN3D_INCLUDE_DIRS} ${QT5_INCLUDE_DIRS}
LINK_LIBRARIES ${COIN3D_LIBRARIES} GeoPrimitives VP1Base VTI12Utils ScintRawEvent
Qt5::Core Qt5::Gui Qt5::Charts
PRIVATE_INCLUDE_DIRS ${CMAKE_CURRENT_BINARY_DIR}
PRIVATE_LINK_LIBRARIES GaudiKernel VP1HEPVis )
/*
Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration
*/
#ifndef VP1WAVEFORMSYSTEM_H
#define VP1WAVEFORMSYSTEM_H
/////////////////////////////////////////////////////////////////////////
// //
// Header file for class VP1WaveformSystem //
// //
// Author: Dave Casper <dcasper@uci.edu> //
// //
// Initial version: August 2021 //
// //
/////////////////////////////////////////////////////////////////////////
#include "VP1Base/IVP12DSystemSimple.h"
#include <QColor>//Fixme obsolete
class VP1WaveformSystem : public IVP12DSystemSimple {
Q_OBJECT
public:
///////////////////
// Constructor //
///////////////////
VP1WaveformSystem();
//////////////////////////////////////////
// Reimplementations from base class: //
//////////////////////////////////////////
virtual ~VP1WaveformSystem();
void buildPermanentItemCollection(StoreGateSvc* detstore, VP1GraphicsItemCollection *root);
void buildEventItemCollection(StoreGateSvc*, VP1GraphicsItemCollection *root);
void systemuncreate();
QWidget * buildController();
QByteArray saveState();
void restoreFromState(QByteArray ba);
public slots:
void updateVetoElements(bool);
void updateTriggerElements(bool);
void updatePreshowerElements(bool);
void updateCalorimeterElements(bool);
void updateClockElements(bool);
void updateTestElements(bool);
private:
class Imp;
Imp * m_d;
};
#endif
/*
Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration
*/
////////////////////////////////////////////////////////////////
// //
// Header file for class WaveformSysController //
// //
// Description: Waveform system controller. //
// //
// Author: Dave Casper (dcasper@uci.edu) //
// Initial version: August 2021 //
// //
////////////////////////////////////////////////////////////////
#ifndef WAVEFORMSYSCONTROLLER_H
#define WAVEFORMSYSCONTROLLER_H
#include "VP1Base/VP1Controller.h"
#include <Inventor/C/errors/debugerror.h>
#include <Inventor/SbColor4f.h>
class SoMaterial;
class WaveformSysController : public VP1Controller {
Q_OBJECT
public:
WaveformSysController(IVP1System * sys);
virtual ~WaveformSysController();
void actualRestoreSettings(VP1Deserialise&);
int currentSettingsVersion() const;
void actualSaveSettings(VP1Serialise&) const;
///////////////////////////////////
// Access Methods for settings //
///////////////////////////////////
//Fixme: SoGroup * drawOptions() const;
bool vetoEnabled() const;
bool triggerEnabled() const;
bool preshowerEnabled() const;
bool calorimeterEnabled() const;
bool clockEnabled() const;
bool testEnabled() const;
///////////////////////////////////////
// Signals for changes in settings //
///////////////////////////////////////
signals:
void vetoEnabledChanged(bool);
void triggerEnabledChanged(bool);
void preshowerEnabledChanged(bool);
void calorimeterEnabledChanged(bool);
void clockEnabledChanged(bool);
void testEnabledChanged(bool);
private:
class Imp;
Imp * m_d;
private slots:
void possibleChange_vetoEnabled();
void possibleChange_triggerEnabled();
void possibleChange_preshowerEnabled();
void possibleChange_calorimeterEnabled();
void possibleChange_clockEnabled();
void possibleChange_testEnabled();
};
#endif
This diff is collapsed.
<?xml version="1.0" encoding="UTF-8"?>
<ui version="4.0">
<class>VP1WaveformControllerForm</class>
<widget class="QWidget" name="VP1WaveformControllerForm">
<property name="geometry">
<rect>
<x>0</x>
<y>0</y>
<width>267</width>
<height>182</height>
</rect>
</property>
<property name="windowTitle">
<string>Form</string>
</property>
<layout class="QGridLayout">
<property name="rightMargin">
<number>1</number>
</property>
<property name="bottomMargin">
<number>1</number>
</property>
<property name="spacing">
<number>0</number>
</property>
<item row="0" column="0">
<layout class="QGridLayout">
<property name="horizontalSpacing">
<number>2</number>
</property>
<property name="verticalSpacing">
<number>0</number>
</property>
<item row="0" column="0">
<widget class="QCheckBox" name="checkBox_vetoEnabled">
<property name="text">
<string>Veto</string>
</property>
<property name="checked">
<bool>true</bool>
</property>
</widget>
</item>
<item row="1" column="0">
<widget class="QCheckBox" name="checkBox_triggerEnabled">
<property name="text">
<string>Trigger</string>
</property>
<property name="checked">
<bool>true</bool>
</property>
</widget>
</item>
<item row="2" column="0">
<widget class="QCheckBox" name="checkBox_preshowerEnabled">
<property name="text">
<string>Preshower</string>
</property>
<property name="checked">
<bool>true</bool>
</property>
</widget>
</item>
<item row="3" column="0">
<widget class="QCheckBox" name="checkBox_calorimeterEnabled">
<property name="text">
<string>Calorimeter</string>
</property>
<property name="checked">
<bool>true</bool>
</property>
</widget>
</item>
<item row="4" column="0">
<widget class="QCheckBox" name="checkBox_clockEnabled">
<property name="text">
<string>Clock</string>
</property>
<property name="checked">
<bool>true</bool>
</property>
</widget>
</item>
<item row="5" column="0">
<widget class="QCheckBox" name="checkBox_testEnabled">
<property name="text">
<string>Test</string>
</property>
<property name="checked">
<bool>true</bool>
</property>
</widget>
</item>
<!--
<item row="0" column="1">
<widget class="QPushButton" name="pushButton_settings_floorAndLetters">
<property name="text">
<string>Configure</string>
</property>
</widget>
</item>
<item row="1" column="0">
<widget class="QCheckBox" name="checkBox_coordinateAxes">
<property name="text">
<string>Coordinate axes</string>
</property>
</widget>
</item>
<item row="1" column="1">
<widget class="QPushButton" name="pushButton_settings_coordinateAxes">
<property name="text">
<string>Configure</string>
</property>
</widget>
</item>
<item row="2" column="0">
<widget class="QCheckBox" name="checkBox_grid">
<property name="text">
<string>Grid</string>
</property>
</widget>
</item>
<item row="2" column="1">
<widget class="QPushButton" name="pushButton_settings_grid">
<property name="text">
<string>Configure</string>
</property>
</widget>
</item>
<item row="3" column="0">
<widget class="QCheckBox" name="checkBox_etaCones">
<property name="text">
<string>Eta Cones</string>
</property>
</widget>
</item>
<item row="3" column="1">
<widget class="QPushButton" name="pushButton_settings_etaCones">
<property name="text">
<string>Configure</string>
</property>
</widget>
</item>
<item row="4" column="0">
<widget class="QCheckBox" name="checkBox_inDetProjSurfs">
<property name="text">
<string>ID projection surfaces</string>
</property>
<property name="checked">
<bool>true</bool>
</property>
</widget>
</item>
<item row="4" column="1">
<widget class="QPushButton" name="pushButton_settings_inDetProjSurfs">
<property name="text">
<string>Configure</string>
</property>
</widget>
</item>
<item row="5" column="1">
<widget class="QPushButton" name="pushButton_settings_trkVolumes">
<property name="text">
<string>Configure</string>
</property>
</widget>
</item>
<item row="5" column="0">
<widget class="QCheckBox" name="checkBox_trkVolumes">
<property name="text">
<string>Tracking Volumes</string>
</property>
<property name="checked">
<bool>false</bool>
</property>
</widget>
</item>
<item row="7" column="0">
<widget class="QCheckBox" name="checkBox_lines">
<property name="text">
<string>Line from origin</string>
</property>
<property name="checked">
<bool>false</bool>
</property>
</widget>
</item>
<item row="7" column="1">
<widget class="QPushButton" name="pushButton_settings_lines">
<property name="text">
<string>Configure</string>
</property>
</widget>
</item>
-->
</layout>
</item>
<item row="0" column="1">
<spacer>
<property name="orientation">
<enum>Qt::Horizontal</enum>
</property>
<property name="sizeHint" stdset="0">
<size>
<width>1</width>
<height>20</height>
</size>
</property>
</spacer>
</item>
<item row="1" column="0">
<spacer>
<property name="orientation">
<enum>Qt::Vertical</enum>
</property>
<property name="sizeHint" stdset="0">
<size>
<width>20</width>
<height>1</height>
</size>
</property>
</spacer>
</item>
</layout>
</widget>
<resources/>
<connections/>
</ui>
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment