From 79eb68d2901b6bcccf12e73adfb9fbf6f3256c5d Mon Sep 17 00:00:00 2001 From: Jure Bericic <bericic@jlab.org> Date: Tue, 6 Dec 2016 13:21:30 -0500 Subject: [PATCH] Added dummy spectrometer class. Dummy spectrometer class. Added a dummy spectrometer class to ease the construction of teststands for single detectors. --- Makefile | 19 ++++--- SConscript.py | 29 +++++----- src/HallC_LinkDef.h | 2 +- src/SConscript.py | 39 ++++++------- src/THcDummySpectrometer.cxx | 106 +++++++++++++++++++++++++++++++++++ src/THcDummySpectrometer.h | 35 ++++++++++++ 6 files changed, 187 insertions(+), 43 deletions(-) create mode 100644 src/THcDummySpectrometer.cxx create mode 100644 src/THcDummySpectrometer.h diff --git a/Makefile b/Makefile index cf31b3f..848ddaa 100644 --- a/Makefile +++ b/Makefile @@ -32,9 +32,10 @@ SRC = src/THcInterface.cxx src/THcParmList.cxx src/THcAnalyzer.cxx \ src/THcRasterRawHit.cxx \ src/THcScalerEvtHandler.cxx \ src/THcHodoEff.cxx \ - src/THcTrigApp.cxx src/THcTrigDet.cxx src/THcTrigRawHit.cxx + src/THcTrigApp.cxx src/THcTrigDet.cxx src/THcTrigRawHit.cxx \ + src/THcDummySpectrometer.cxx -# Name of your package. +# Name of your package. # The shared library that will be built will get the name lib$(PACKAGE).so PACKAGE = HallC @@ -101,8 +102,8 @@ INCLUDES = $(ROOTCFLAGS) $(addprefix -I, $(INCDIRS) ) USERLIB = lib$(PACKAGE).so USERDICT = $(PACKAGE)Dict -LIBS = -GLIBS = +LIBS = +GLIBS = ifeq ($(ARCH),solarisCC5) # Solaris CC 5.0 @@ -148,8 +149,8 @@ ifdef WITH_DEBUG CXXFLAGS += -DWITH_DEBUG endif -CCDBLIBS = -CCDBFLAGS = +CCDBLIBS = +CCDBFLAGS = ifdef CCDB_HOME CCDBLIBS += -L$(CCDB_HOME)/lib -lccdb CCDBFLAGS += -I$(CCDB_HOME)/include -DWITH_CCDB @@ -171,7 +172,7 @@ DISTFILE = $(PKG).tar.gz #------------------------------------------------------------------------------ OBJ = $(SRC:.cxx=.o) RCHDR = $(SRC:.cxx=.h) src/THcGlobals.h -HDR = $(SRC:.cxx=.h) +HDR = $(SRC:.cxx=.h) DEP = $(SRC:.cxx=.d) src/main.d OBJS = $(OBJ) $(USERDICT).o HDR_COMPILEDATA = $(ANALYZER)/src/ha_compiledata.h @@ -193,7 +194,7 @@ endif src/THcInterface.d: $(HDR_COMPILEDATA) -hcana: src/main.o $(LIBDC) $(LIBHALLA) $(USERLIB) +hcana: src/main.o $(LIBDC) $(LIBHALLA) $(USERLIB) $(LD) $(LDFLAGS) $< -lHallC $(HALLALIBS) $(EVIOLIB) -L. $(CCDBLIBS) \ $(GLIBS) -o $@ @@ -202,7 +203,7 @@ $(USERLIB): $(HDR) $(OBJS) @echo "$@ done" $(HDR_COMPILEDATA) $(LIBHALLA) $(LIBDC): $(ANALYZER)/Makefile - @echo "Building Podd" + @echo "Building Podd" @cd $(ANALYZER) ; export PODD_EXTRA_DEFINES=-DHALLC_MODS ; make $(USERDICT).cxx: $(RCHDR) $(HDR) $(LINKDEF) diff --git a/SConscript.py b/SConscript.py index fc1f309..fdc3df8 100644 --- a/SConscript.py +++ b/SConscript.py @@ -11,20 +11,21 @@ Import ('pbaseenv') roothcdict = pbaseenv.subst('$HC_DIR')+'/HallCDict.C' roothcobj = pbaseenv.subst('$HC_SRC')+'/HallCDict.so' hcheaders = Split(""" - src/THcInterface.h src/THcParmList.h src/THcAnalyzer.h src/THcHallCSpectrometer.h - src/THcDetectorMap.h src/THcRawHit.h src/THcHitList.h src/THcSignalHit.h src/THcHodoscope.h - src/THcScintillatorPlane.h src/THcRawHodoHit.h src/THcHodoHit.h - src/THcDC.h src/THcDriftChamberPlane.h - src/THcDriftChamber.h src/THcRawDCHit.h src/THcDCHit.h src/THcDCWire.h src/THcSpacePoint.h - src/THcDCLookupTTDConv.h src/THcDCTimeToDistConv.h src/THcShower.h src/THcShowerPlane.h - src/THcShowerArray.h src/THcShowerHit.h - src/THcRawShowerHit.h src/THcAerogel.h src/THcAerogelHit.h src/THcCherenkov.h src/THcCherenkovHit.h - src/THcGlobals.h src/THcDCTrack.h src/THcFormula.h - src/THcRaster.h src/THcRasteredBeam.h src/THcRasterRawHit.h src/THcScalerEvtHandler.h - src/THcHodoEff.h - src/THcTrigApp.h src/THcTrigDet.h src/THcTrigRawHit.h - src/HallC_LinkDef.h - """) +src/THcInterface.h src/THcParmList.h src/THcAnalyzer.h src/THcHallCSpectrometer.h +src/THcDetectorMap.h src/THcRawHit.h src/THcHitList.h src/THcSignalHit.h src/THcHodoscope.h +src/THcScintillatorPlane.h src/THcRawHodoHit.h src/THcHodoHit.h +src/THcDC.h src/THcDriftChamberPlane.h +src/THcDriftChamber.h src/THcRawDCHit.h src/THcDCHit.h src/THcDCWire.h src/THcSpacePoint.h +src/THcDCLookupTTDConv.h src/THcDCTimeToDistConv.h src/THcShower.h src/THcShowerPlane.h +src/THcShowerArray.h src/THcShowerHit.h +src/THcRawShowerHit.h src/THcAerogel.h src/THcAerogelHit.h src/THcCherenkov.h src/THcCherenkovHit.h +src/THcGlobals.h src/THcDCTrack.h src/THcFormula.h +src/THcRaster.h src/THcRasteredBeam.h src/THcRasterRawHit.h src/THcScalerEvtHandler.h +src/THcHodoEff.h +src/THcTrigApp.h src/THcTrigDet.h src/THcTrigRawHit.h +src/THcDummySpectrometer.h +src/HallC_LinkDef.h +""") pbaseenv.RootCint(roothcdict,hcheaders) pbaseenv.SharedObject(target = roothcobj, source = roothcdict) diff --git a/src/HallC_LinkDef.h b/src/HallC_LinkDef.h index 682a69e..0eedcda 100644 --- a/src/HallC_LinkDef.h +++ b/src/HallC_LinkDef.h @@ -57,9 +57,9 @@ #pragma link C++ class THcRasterRawHit+; #pragma link C++ class THcScalerEvtHandler+; #pragma link C++ class THcHodoEff+; - #pragma link C++ class THcTrigApp+; #pragma link C++ class THcTrigDet+; #pragma link C++ class THcTrigRawHit+; +#pragma link C++ class THcDummySpectrometer+; #endif diff --git a/src/SConscript.py b/src/SConscript.py index 121b711..91acb04 100644 --- a/src/SConscript.py +++ b/src/SConscript.py @@ -7,27 +7,28 @@ import SCons.Util Import('pbaseenv') list = Split(""" -THcInterface.cxx THcParmList.cxx THcAnalyzer.cxx \ -THcHallCSpectrometer.cxx \ -THcDetectorMap.cxx \ -THcRawHit.cxx THcHitList.cxx \ -THcSignalHit.cxx \ -THcHodoscope.cxx THcScintillatorPlane.cxx \ -THcRawHodoHit.cxx THcHodoHit.cxx \ -THcDC.cxx THcDriftChamberPlane.cxx \ -THcDriftChamber.cxx \ -THcRawDCHit.cxx THcDCHit.cxx \ -THcDCWire.cxx \ -THcSpacePoint.cxx THcDCTrack.cxx \ -THcDCLookupTTDConv.cxx THcDCTimeToDistConv.cxx \ -THcShower.cxx THcShowerPlane.cxx THcShowerArray.cxx \ +THcInterface.cxx THcParmList.cxx THcAnalyzer.cxx +THcHallCSpectrometer.cxx +THcDetectorMap.cxx +THcRawHit.cxx THcHitList.cxx +THcSignalHit.cxx +THcHodoscope.cxx THcScintillatorPlane.cxx +THcRawHodoHit.cxx THcHodoHit.cxx +THcDC.cxx THcDriftChamberPlane.cxx +THcDriftChamber.cxx +THcRawDCHit.cxx THcDCHit.cxx +THcDCWire.cxx +THcSpacePoint.cxx THcDCTrack.cxx +THcDCLookupTTDConv.cxx THcDCTimeToDistConv.cxx +THcShower.cxx THcShowerPlane.cxx THcShowerArray.cxx THcRawShowerHit.cxx THcShowerHit.cxx -THcAerogel.cxx THcAerogelHit.cxx \ -THcCherenkov.cxx THcCherenkovHit.cxx \ -THcFormula.cxx \ -THcRaster.cxx THcRasteredBeam.cxx THcRasterRawHit.cxx \ -THcScalerEvtHandler.cxx \ +THcAerogel.cxx THcAerogelHit.cxx +THcCherenkov.cxx THcCherenkovHit.cxx +THcFormula.cxx +THcRaster.cxx THcRasteredBeam.cxx THcRasterRawHit.cxx +THcScalerEvtHandler.cxx THcTrigApp.cxx THcTrigDet.cxx THcTrigRawHit.cxx +THcDummySpectrometer.cxx THcHodoEff.cxx """) diff --git a/src/THcDummySpectrometer.cxx b/src/THcDummySpectrometer.cxx new file mode 100644 index 0000000..58edf3f --- /dev/null +++ b/src/THcDummySpectrometer.cxx @@ -0,0 +1,106 @@ +/** +\class THcDummySpectrometer +\ingroup Base + +\brief A dummy spectrometer used for testing detectors. + +This class behaves as a spectrometer apparatus in that it holds detector +classes, but it does no reconstruction. It is intended to provide an elegant +way to setup a teststand for a detector or a set of detectors, without +requiring some "needed" detectors or parameters. +*/ + +/** +\fn THcDummySpectrometer::THcDummySpectrometer(const char* name, const char* description) + +\brief A constructor. + +\param[in] name Name of the apparatus. Is typically "H", "P" or "S" for +HMS, SHMS and SOS, respectively. +\param[in] description Description of the apparatus. +*/ + +/** +\fn virtual THcDummySpectrometer::~THcDummySpectrometer() + +\brief A destructor. +*/ + +/** +\fn Int_t THcDummySpectrometer::Reconstruct() + +\brief Does nothing and returns 0. + +This function is usually responsible for reconstructing the event from the +detectors in the spectrometer. Since this is a dummy apparatus, we have a dummy +reconstruction. +*/ + +/** +\fn std::string THcDummySpectrometer::GetKwPrefix() + +\brief Returns prefix used for parameters in `param` files. + +All the parameters read by this apparatus are prefixed with the returned string. +*/ + +#include "THcDummySpectrometer.h" + +#include "TDatime.h" + +#include "THcGlobals.h" +#include "THcParmList.h" + + +THcDummySpectrometer::THcDummySpectrometer( + const char* name, const char* description +) : + THaApparatus(name, description), + fKwPrefix("") +{ + // Construct the kwPrefix here. Better place would be in `Setup` method. + TString kwPrefix = name; + kwPrefix.ToUpper(); + fKwPrefix = kwPrefix; +} + + +THcDummySpectrometer::~THcDummySpectrometer() {} + + +Int_t THcDummySpectrometer::Reconstruct() { + // Don't need reconstruction here. + return 0; +} + + +TString THcDummySpectrometer::GetKwPrefix() { + return fKwPrefix; +} + + +Int_t THcDummySpectrometer::ReadRunDatabase(const TDatime& date) { + return kOK; +} + + +Int_t THcDummySpectrometer::ReadDatabase(const TDatime& date) { + return kOK; +} + + +Int_t THcDummySpectrometer::DefineVariables(THaAnalysisObject::EMode mode) { + if (mode == kDefine && fIsSetup) return kOK; + fIsSetup = (mode == kDefine); + + std::vector<RVarDef> vars; + vars.push_back({0}); + + return DefineVarsFromList(vars.data(), mode); +} + + +THcDummySpectrometer::THcDummySpectrometer() {} + + +ClassImp(THcDummySpectrometer) diff --git a/src/THcDummySpectrometer.h b/src/THcDummySpectrometer.h new file mode 100644 index 0000000..6de56eb --- /dev/null +++ b/src/THcDummySpectrometer.h @@ -0,0 +1,35 @@ +#ifndef ROOT_THcDummySpectrometer +#define ROOT_THcDummySpectrometer + +#include "TString.h" + +#include "THaAnalysisObject.h" +#include "THaApparatus.h" + + +class TDatime; + + +class THcDummySpectrometer : public THaApparatus { + public: + THcDummySpectrometer(const char* name, const char* description); + virtual ~THcDummySpectrometer(); + + virtual Int_t Reconstruct(); + + TString GetKwPrefix(); + + protected: + virtual Int_t ReadRunDatabase(const TDatime& date); + virtual Int_t ReadDatabase(const TDatime& date); + virtual Int_t DefineVariables(EMode mode=kDefine); + + TString fKwPrefix; + + private: + THcDummySpectrometer(); + ClassDef(THcDummySpectrometer, 0); +}; + + +#endif // ROOT_THcDummySpectrometer -- GitLab