13#ifdef HAS_RNTUPLE_SUPPORT
14#include "ROOT/RNTupleModel.hxx"
15#include "ROOT/RField.hxx"
24#ifdef __USE_DATABASE__
87 for(Short_t i=0;i<4;i++){
88 fWire[i].LoadChannelParameters(paramfile);
90 fAbsPos[0].LoadChannelParameters(paramfile);
91 fAbsPos[1].LoadChannelParameters(paramfile);
95 UInt_t word_position_in_buffer,UInt_t indexnumber)
override;
104 TString loc=
"QwBPMStripline::GetPosition for "
106 throw std::out_of_range(loc.Data());
120 void SetSingleEventCuts(TString ch_name, UInt_t errorflag,Double_t minX, Double_t maxX, Double_t stability, Double_t burplevel);
145 void Scale(Double_t factor)
override;
170#ifdef HAS_RNTUPLE_SUPPORT
172 void ConstructNTupleAndVector(std::unique_ptr<ROOT::RNTupleModel>& model, TString& prefix, std::vector<Double_t>& values, std::vector<std::shared_ptr<Double_t>>& fieldPtrs)
override;
173 void FillNTupleVector(std::vector<Double_t>& values)
const override;
177#ifdef __USE_DATABASE__
178 std::vector<QwDBInterface> GetDBEntry();
179 std::vector<QwErrDBInterface> GetErrDBEntry();
187 TString loc=
"QwBPMStripline::GetPosition for "
189 throw std::out_of_range(loc.Data());
220 void SetEventData(Double_t* block, UInt_t sequencenumber);
Parameter file parsing and management.
Helper functions and utilities for analysis operations.
void QwCopyArray(const T &a, T &b)
Virtual base class for beam position monitors.
Configuration file parser with flexible tokenization and search capabilities.
A helper class to manage a vector of branch entries for ROOT trees.
The pure virtual base class of all data elements.
void SetSubsystemName(TString sysname)
Set the name of the inheriting subsystem name.
virtual const TString & GetElementName() const
Get the name of this element.
Abstract base for concrete hardware channels implementing dual-operator pattern.
Templated concrete stripline beam position monitor implementation.
void SetSubElementCalibrationFactor(Int_t j, Double_t value) override
void AccumulateRunningSum(const QwBPMStripline &value, Int_t count=0, Int_t ErrorMask=0xFFFFFFF)
friend class QwEnergyCalculator
Bool_t ApplyHWChecks()
Apply hardware checks across all wires and derived channels.
friend class QwCombinedBPM
const VQwHardwareChannel * GetEffectiveCharge() const override
void LoadMockDataParameters(QwParameterFile ¶mfile) override
const VQwHardwareChannel * GetPosition(EBeamPositionMonitorAxis axis) const override
QwBPMStripline(TString subsystemname, TString name)
void PrintInfo() const override
Print multiple lines of information about this data element.
VQwBPM & operator=(const VQwBPM &value) override
Int_t ProcessEvBuffer(UInt_t *buffer, UInt_t word_position_in_buffer, UInt_t indexnumber) override
Process the CODA event buffer for this element.
void ProcessEvent() override
void CalculateRunningAverage() override
~QwBPMStripline() override
void SetEventCutMode(Int_t bcuts) override
void RandomizeEventData(int helicity=0, double time=0.0) override
UInt_t UpdateErrorFlag() override
Update and return the aggregated event-cut error flag.
UInt_t GetEventcutErrorFlag() override
Aggregate and return the event-cut error flag for this BPM.
std::array< T, 2 > fAbsPos
void SetRandomEventParameters(Double_t meanX, Double_t sigmaX, Double_t meanY, Double_t sigmaY) override
void ApplyResolutionSmearing() override
void LoadChannelParameters(QwParameterFile ¶mfile) override
VQwHardwareChannel * GetSubelementByName(TString ch_name) override
static UInt_t GetSubElementIndex(TString subname)
VQwBPM & operator-=(const VQwBPM &value) override
void GetAbsolutePosition() override
QwBPMStripline(const QwBPMStripline &source)
void Scale(Double_t factor) override
void SetEventData(Double_t *block, UInt_t sequencenumber)
void WritePromptSummary(QwPromptSummary *ps, TString type)
static const TString subelement[4]
std::vector< T > fBPMElementList
Bool_t ApplySingleEventCuts() override
VQwHardwareChannel * GetPosition(EBeamPositionMonitorAxis axis) override
void ConstructBranch(TTree *tree, TString &prefix) override
QwBPMStripline(TString subsystemname, TString name, TString type)
void ConstructHistograms(TDirectory *folder, TString &prefix) override
Construct the histograms for this data element.
static const Double_t kRotationCorrection
void EncodeEventData(std::vector< UInt_t > &buffer) override
VQwBPM & operator+=(const VQwBPM &value) override
void InitializeChannel(TString name)
Initialize this BPM stripline with a detector name.
void Ratio(VQwBPM &numer, VQwBPM &denom) override
void SetSingleEventCuts(TString ch_name, UInt_t errorflag, Double_t minX, Double_t maxX, Double_t stability, Double_t burplevel)
const VQwHardwareChannel * GetEllipticity() const
void FillHistograms() override
Fill the histograms for this data element.
void ConstructBranchAndVector(TTree *tree, TString &prefix, QwRootTreeBranchVector &values) override
void SetDefaultSampleSize(Int_t sample_size) override
void FillTreeVector(QwRootTreeBranchVector &values) const override
Bool_t CheckForBurpFail(const VQwDataElement *ev_error) override
Check for burp failures against another BPM of the same type.
void PrintValue() const override
Print single line of value and error of this data element.
void IncrementErrorCounters() override
Increment error counters for all internal channels.
TString GetSubElementName(Int_t subindex) override
void SetSubElementPedestal(Int_t j, Double_t value) override
QwBPMStripline(TString name)
void DeaccumulateRunningSum(VQwBPM &value, Int_t ErrorMask=0xFFFFFFF) override
void PrintErrorCounters() const override
Print error counters for all internal channels.
void ClearEventData() override
Clear event-scoped data in all channels of this BPM.
void FillRawEventData() override
std::array< T, 2 > fRelPos
Abstract base for beam position monitors (BPMs)
void SetRotation(Double_t)
Set detector rotation angle and update cached trigonometric values.
static const TString axis[3]