JAPAn
Just Another Parity Analyzer
Loading...
Searching...
No Matches
QwIntegrationPMT Class Reference

Integration PMT providing yield/diff/asym readout from Moller ADC. More...

#include <QwIntegrationPMT.h>

+ Inheritance diagram for QwIntegrationPMT:
+ Collaboration diagram for QwIntegrationPMT:

Public Member Functions

 QwIntegrationPMT ()
 
 QwIntegrationPMT (TString name)
 
 QwIntegrationPMT (TString subsystemname, TString name)
 
 QwIntegrationPMT (const QwIntegrationPMT &source)
 
 ~QwIntegrationPMT () override
 
void LoadChannelParameters (QwParameterFile &paramfile) override
 
Int_t ProcessEvBuffer (UInt_t *buffer, UInt_t word_position_in_buffer, UInt_t subelement=0) override
 Process the raw event buffer and decode into the ADC channel.
 
void InitializeChannel (TString name, TString datatosave)
 Initialize the PMT channel with a name and data-saving mode.
 
void InitializeChannel (TString subsystem, TString name, TString datatosave)
 Initialize the PMT channel with subsystem and name.
 
void InitializeChannel (TString subsystem, TString module, TString name, TString datatosave)
 Initialize the PMT channel including an intermediate module tag.
 
void SetElementName (const TString &name)
 
const QwMollerADC_ChannelGetChannel (const TString name) const
 
void ClearEventData () override
 Clear event-scoped data in the underlying ADC channel.
 
void PrintErrorCounters ()
 Print accumulated error counters for this PMT.
 
void SetRandomEventDriftParameters (Double_t amplitude, Double_t phase, Double_t frequency)
 Configure deterministic drift parameters applied per event.
 
void AddRandomEventDriftParameters (Double_t amplitude, Double_t phase, Double_t frequency)
 Add additional drift parameters to the existing drift model.
 
void SetRandomEventParameters (Double_t mean, Double_t sigma)
 Configure Gaussian mock data parameters.
 
void SetRandomEventAsymmetry (Double_t asymmetry)
 Set an asymmetry parameter applied to helicity states.
 
void RandomizeEventData (int helicity=0, double time=0.0)
 Generate mock data for a single event.
 
void SetHardwareSum (Double_t hwsum, UInt_t sequencenumber=0)
 Set the hardware-level sum measurement for a sequence.
 
void SetEventData (Double_t *block, UInt_t sequencenumber)
 Set the block data for the current event sequence.
 
void EncodeEventData (std::vector< UInt_t > &buffer)
 Encode current event data into an output buffer.
 
void RandomizeMollerEvent (int helicity, const QwBeamCharge &charge, const QwBeamPosition &xpos, const QwBeamPosition &ypos, const QwBeamAngle &xprime, const QwBeamAngle &yprime, const QwBeamEnergy &energy)
 Generate a mock MOLLER detector event using beam parameters.
 
void UseExternalRandomVariable ()
 Use an external random variable source for mock data.
 
void SetExternalRandomVariable (Double_t random_variable)
 Set the external random variable to drive mock data.
 
Double_t GetValue ()
 Get the integrated value over the current event window.
 
Double_t GetValue (Int_t blocknum)
 Get the integrated value for a specific block.
 
void ProcessEvent ()
 Apply hardware checks and process the event for this PMT.
 
Bool_t ApplyHWChecks ()
 Apply hardware checks and return whether the event is valid.
 
Bool_t ApplySingleEventCuts ()
 Apply single-event cuts for this PMT and return pass/fail.
 
void IncrementErrorCounters ()
 
void PrintErrorCounters () const override
 Print error counters (const overload).
 
Int_t SetSingleEventCuts (Double_t, Double_t)
 Set basic single-event cut limits.
 
void SetSingleEventCuts (UInt_t errorflag, Double_t LL, Double_t UL, Double_t stability, Double_t burplevel)
 Inherited from VQwDataElement to set the upper and lower limits (fULimit and fLLimit), stability % and the error flag on this channel.
 
void SetDefaultSampleSize (Int_t sample_size)
 Set the default sample size used by the ADC channel.
 
void SetSaturationLimit (Double_t saturation_volt)
 Set the saturation voltage limit for the ADC front-end.
 
UInt_t GetEventcutErrorFlag () override
 return the error flag on this channel/device
 
Bool_t CheckForBurpFail (const VQwDataElement *ev_error)
 Check for burp failures by comparing against a reference PMT.
 
UInt_t UpdateErrorFlag () override
 Update the error flag based on the error flags of internally contained objects Return parameter is the "Eventcut Error Flag".
 
void UpdateErrorFlag (const QwIntegrationPMT *ev_error)
 Merge error flags from a reference PMT into this instance.
 
void SetEventCutMode (Int_t bcuts)
 
void SetBlindability (Bool_t isblindable)
 
void SetNormalizability (Bool_t isnormalizable)
 
void Blind (const QwBlinder *blinder)
 Blind the asymmetry.
 
void Blind (const QwBlinder *blinder, const QwIntegrationPMT &yield)
 Blind the difference using the yield.
 
void PrintValue () const override
 Print single line of value and error of this data element.
 
void PrintInfo () const override
 Print multiple lines of information about this data element.
 
QwIntegrationPMToperator= (const QwIntegrationPMT &value)
 Copy-assign from another PMT (event-scoped data).
 
QwIntegrationPMToperator+= (const QwIntegrationPMT &value)
 Add-assign from another PMT (sum raw channels).
 
QwIntegrationPMToperator-= (const QwIntegrationPMT &value)
 
void Sum (const QwIntegrationPMT &value1, const QwIntegrationPMT &value2)
 
void Difference (const QwIntegrationPMT &value1, const QwIntegrationPMT &value2)
 
void Ratio (QwIntegrationPMT &numer, QwIntegrationPMT &denom)
 
void Scale (Double_t factor)
 
void Normalize (VQwDataElement *denom)
 
void AccumulateRunningSum (const QwIntegrationPMT &value, Int_t count=0, Int_t ErrorMask=0xFFFFFFF)
 
void DeaccumulateRunningSum (QwIntegrationPMT &value, Int_t ErrorMask=0xFFFFFFF)
 
void CalculateRunningAverage ()
 
void SetPedestal (Double_t ped)
 Set the pedestal value and propagate to the underlying ADC channel.
 
void SetCalibrationFactor (Double_t calib)
 Set the calibration factor and propagate to the underlying ADC channel.
 
void SetNormRate (Double_t value)
 
void SetVoltPerHz (Double_t value)
 
void SetAsymmetry (Double_t value)
 
void SetCoefficientCx (Double_t value)
 
void SetCoefficientCy (Double_t value)
 
void SetCoefficientCxp (Double_t value)
 
void SetCoefficientCyp (Double_t value)
 
void SetCoefficientCe (Double_t value)
 
void ConstructHistograms (TDirectory *folder, TString &prefix) override
 Construct the histograms for this data element.
 
void FillHistograms () override
 Fill the histograms for this data element.
 
void ConstructBranchAndVector (TTree *tree, TString &prefix, QwRootTreeBranchVector &values)
 
void ConstructBranch (TTree *tree, TString &prefix)
 
void ConstructBranch (TTree *tree, TString &prefix, QwParameterFile &trim_file)
 
void FillTreeVector (QwRootTreeBranchVector &values) const
 
std::vector< QwDBInterfaceGetDBEntry ()
 
std::vector< QwErrDBInterfaceGetErrDBEntry ()
 
- Public Member Functions inherited from VQwDataElement
 VQwDataElement ()
 Default constructor.
 
 VQwDataElement (const VQwDataElement &value)
 Copy constructor.
 
 ~VQwDataElement () override
 Virtual destructor.
 
void CopyFrom (const VQwDataElement &value)
 
Bool_t IsNameEmpty () const
 Is the name of this element empty?
 
void SetElementName (const TString &name)
 Set the name of this element.
 
virtual const TString & GetElementName () const
 Get the name of this element.
 
virtual void LoadMockDataParameters (QwParameterFile &)
 
size_t GetNumberOfDataWords ()
 Get the number of data words in this data element.
 
UInt_t GetGoodEventCount () const
 
virtual void AssignValueFrom (const VQwDataElement *)
 
VQwDataElementoperator+= (const VQwDataElement &)
 Addition-assignment operator.
 
VQwDataElementoperator-= (const VQwDataElement &)
 Subtraction-assignment operator.
 
void Sum (const VQwDataElement &, const VQwDataElement &)
 Sum operator (base class fallback throws runtime error)
 
void Difference (const VQwDataElement &, const VQwDataElement &)
 Difference operator (base class fallback throws runtime error)
 
void Ratio (const VQwDataElement &, const VQwDataElement &)
 Ratio operator (base class fallback throws runtime error)
 
void SetSingleEventCuts (UInt_t, Double_t, Double_t, Double_t)
 set the upper and lower limits (fULimit and fLLimit), stability % and the error flag on this channel
 
Bool_t CheckForBurpFail (const VQwDataElement *)
 
virtual void SetNeedsExternalClock (Bool_t)
 
virtual Bool_t NeedsExternalClock ()
 
virtual std::string GetExternalClockName ()
 
virtual void SetExternalClockPtr (const VQwHardwareChannel *)
 
virtual void SetExternalClockName (const std::string)
 
virtual Double_t GetNormClockValue ()
 
TString GetSubsystemName () const
 Return the name of the inheriting subsystem name.
 
void SetSubsystemName (TString sysname)
 Set the name of the inheriting subsystem name.
 
TString GetModuleType () const
 Return the type of the beam instrument.
 
void SetModuleType (TString ModuleType)
 set the type of the beam instrument
 
- Public Member Functions inherited from MQwHistograms
void ShareHistograms (const MQwHistograms *source)
 Share histogram pointers between objects.
 

Private Attributes

Double_t fPedestal
 
Double_t fCalibration
 
Double_t fNormRate
 
Double_t fVoltPerHz
 
Double_t fAsym
 
Double_t fCoeff_x
 
Double_t fCoeff_y
 
Double_t fCoeff_xp
 
Double_t fCoeff_yp
 
Double_t fCoeff_e
 
Bool_t fGoodEvent
 
QwMollerADC_Channel fTriumf_ADC
 
Int_t fDeviceErrorCode
 
Bool_t fIsBlindable
 
Bool_t fIsNormalizable
 
Bool_t bEVENTCUTMODE
 

Static Private Attributes

static const Bool_t bDEBUG =kFALSE
 

Additional Inherited Members

- Public Types inherited from VQwDataElement
enum  EDataToSave { kRaw = 0 , kDerived , kMoments }
 
- Protected Member Functions inherited from VQwDataElement
void SetNumberOfDataWords (const UInt_t &numwords)
 Set the number of data words in this data element.
 
VQwDataElementoperator= (const VQwDataElement &value)
 Arithmetic assignment operator: Should only copy event-based data.
 
void UpdateErrorFlag (const UInt_t &error)
 
- Protected Member Functions inherited from MQwHistograms
 MQwHistograms ()
 Default constructor.
 
 MQwHistograms (const MQwHistograms &source)
 Copy constructor.
 
virtual ~MQwHistograms ()
 Virtual destructor.
 
MQwHistogramsoperator= (const MQwHistograms &value)
 
void Fill_Pointer (TH1_ptr hist_ptr, Double_t value)
 
void AddHistogram (TH1 *h)
 Register a histogram.
 
- Protected Attributes inherited from VQwDataElement
TString fElementName
 Name of this data element.
 
UInt_t fNumberOfDataWords
 Number of raw data words in this data element.
 
UInt_t fGoodEventCount
 Number of good events accumulated in this element.
 
TString fSubsystemName
 
TString fModuleType
 
UInt_t fErrorFlag
 This the standard error code generated for the channel that contains the global/local/stability flags and the Device error code (Unique error code for HW failures)
 
UInt_t fErrorConfigFlag
 contains the global/local/stability flags
 
- Protected Attributes inherited from MQwHistograms
std::vector< TH1_ptrfHistograms
 Histograms associated with this data element.
 

Detailed Description

Integration PMT providing yield/diff/asym readout from Moller ADC.

Definition at line 37 of file QwIntegrationPMT.h.

Constructor & Destructor Documentation

◆ QwIntegrationPMT() [1/4]

QwIntegrationPMT::QwIntegrationPMT ( )
inline

Definition at line 40 of file QwIntegrationPMT.h.

40 {
41 InitializeChannel("","raw");
42 };
void InitializeChannel(TString name, TString datatosave)
Initialize the PMT channel with a name and data-saving mode.

References InitializeChannel().

Referenced by AccumulateRunningSum(), Blind(), CheckForBurpFail(), DeaccumulateRunningSum(), Difference(), operator+=(), operator-=(), operator=(), QwIntegrationPMT(), Ratio(), Sum(), and UpdateErrorFlag().

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ QwIntegrationPMT() [2/4]

QwIntegrationPMT::QwIntegrationPMT ( TString name)
inline

Definition at line 43 of file QwIntegrationPMT.h.

43 {
44 InitializeChannel(name,"raw");
45 };

References InitializeChannel().

+ Here is the call graph for this function:

◆ QwIntegrationPMT() [3/4]

QwIntegrationPMT::QwIntegrationPMT ( TString subsystemname,
TString name )
inline

Definition at line 46 of file QwIntegrationPMT.h.

46 {
47 SetSubsystemName(subsystemname);
48 InitializeChannel(subsystemname, name,"raw");
49 };
void SetSubsystemName(TString sysname)
Set the name of the inheriting subsystem name.

References InitializeChannel(), and VQwDataElement::SetSubsystemName().

+ Here is the call graph for this function:

◆ QwIntegrationPMT() [4/4]

QwIntegrationPMT::QwIntegrationPMT ( const QwIntegrationPMT & source)
inline

Definition at line 50 of file QwIntegrationPMT.h.

51 : VQwDataElement(source),
52 fPedestal(source.fPedestal),
57 { }
VQwDataElement()
Default constructor.
QwMollerADC_Channel fTriumf_ADC

References fCalibration, fIsBlindable, fIsNormalizable, fPedestal, fTriumf_ADC, QwIntegrationPMT(), and VQwDataElement::VQwDataElement().

+ Here is the call graph for this function:

◆ ~QwIntegrationPMT()

QwIntegrationPMT::~QwIntegrationPMT ( )
inlineoverride

Definition at line 58 of file QwIntegrationPMT.h.

58{ };

Member Function Documentation

◆ AccumulateRunningSum()

void QwIntegrationPMT::AccumulateRunningSum ( const QwIntegrationPMT & value,
Int_t count = 0,
Int_t ErrorMask = 0xFFFFFFF )

Definition at line 644 of file QwIntegrationPMT.cc.

645{
646 fTriumf_ADC.AccumulateRunningSum(value.fTriumf_ADC, count, ErrorMask);
647}

References fTriumf_ADC, and QwIntegrationPMT().

+ Here is the call graph for this function:

◆ AddRandomEventDriftParameters()

void QwIntegrationPMT::AddRandomEventDriftParameters ( Double_t amplitude,
Double_t phase,
Double_t frequency )

Add additional drift parameters to the existing drift model.

Parameters
amplitudeDrift amplitude.
phaseDrift phase in radians.
frequencyDrift frequency.

Definition at line 145 of file QwIntegrationPMT.cc.

146{
147 fTriumf_ADC.AddRandomEventDriftParameters(amplitude, phase, frequency);
148 return;
149}

References fTriumf_ADC.

◆ ApplyHWChecks()

Bool_t QwIntegrationPMT::ApplyHWChecks ( )

Apply hardware checks and return whether the event is valid.

Returns
kTRUE if no hardware error was detected; otherwise kFALSE.

Definition at line 289 of file QwIntegrationPMT.cc.

290{
291 Bool_t eventokay=kTRUE;
292
293 UInt_t deviceerror=fTriumf_ADC.ApplyHWChecks();//will check for consistency between HWSUM and SWSUM also check for sample size
294 eventokay=(deviceerror & 0x0);//if no HW error return true
295
296
297 return eventokay;
298}

References fTriumf_ADC.

Referenced by ProcessEvent().

+ Here is the caller graph for this function:

◆ ApplySingleEventCuts()

Bool_t QwIntegrationPMT::ApplySingleEventCuts ( )

Apply single-event cuts for this PMT and return pass/fail.

Returns
kTRUE if event passes, otherwise kFALSE.

Definition at line 348 of file QwIntegrationPMT.cc.

348 {
349
350
351//std::cout<<" QwBCM::SingleEventCuts() "<<std::endl;
352 Bool_t status=kTRUE;
353
354 if (fTriumf_ADC.ApplySingleEventCuts()){
355 status=kTRUE;
356 //std::cout<<" BCM Sample size "<<fTriumf_ADC.GetNumberOfSamples()<<std::endl;
357 }
358 else{
359 status&=kFALSE;//kTRUE;//kFALSE;
360 }
361
362 return status;
363
364}

References fTriumf_ADC.

◆ Blind() [1/2]

void QwIntegrationPMT::Blind ( const QwBlinder * blinder)

Blind the asymmetry.

Definition at line 655 of file QwIntegrationPMT.cc.

656{
657 if (fIsBlindable) fTriumf_ADC.Blind(blinder);
658}

References fIsBlindable, and fTriumf_ADC.

◆ Blind() [2/2]

void QwIntegrationPMT::Blind ( const QwBlinder * blinder,
const QwIntegrationPMT & yield )

Blind the difference using the yield.

Definition at line 660 of file QwIntegrationPMT.cc.

661{
662 if (fIsBlindable) fTriumf_ADC.Blind(blinder, yield.fTriumf_ADC);
663}

References fIsBlindable, fTriumf_ADC, and QwIntegrationPMT().

+ Here is the call graph for this function:

◆ CalculateRunningAverage()

void QwIntegrationPMT::CalculateRunningAverage ( )

Definition at line 639 of file QwIntegrationPMT.cc.

640{
641 fTriumf_ADC.CalculateRunningAverage();
642}

References fTriumf_ADC.

◆ CheckForBurpFail()

Bool_t QwIntegrationPMT::CheckForBurpFail ( const VQwDataElement * ev_error)

Check for burp failures by comparing against a reference PMT.

Parameters
ev_errorReference PMT to compare error conditions.
Returns
kTRUE if a burp failure was detected; otherwise kFALSE.

Definition at line 380 of file QwIntegrationPMT.cc.

380 {
381 Bool_t burpstatus = kFALSE;
382 try {
383 if(typeid(*ev_error)==typeid(*this)) {
384 //std::cout<<" Here in QwIntegrationPMT::CheckForBurpFail \n";
385 if (this->GetElementName()!="") {
386 const QwIntegrationPMT* value_pmt = dynamic_cast<const QwIntegrationPMT* >(ev_error);
387 burpstatus |= fTriumf_ADC.CheckForBurpFail(&(value_pmt->fTriumf_ADC));
388 }
389 } else {
390 TString loc="Standard exception from QwIntegrationPMT::CheckForBurpFail :"+
391 ev_error->GetElementName()+" "+this->GetElementName()+" are not of the "
392 +"same type";
393 throw std::invalid_argument(loc.Data());
394 }
395 } catch (std::exception& e) {
396 std::cerr<< e.what()<<std::endl;
397 }
398 return burpstatus;
399};
virtual const TString & GetElementName() const
Get the name of this element.

References fTriumf_ADC, VQwDataElement::GetElementName(), QwIntegrationPMT(), and VQwDataElement::VQwDataElement().

+ Here is the call graph for this function:

◆ ClearEventData()

void QwIntegrationPMT::ClearEventData ( )
overridevirtual

Clear event-scoped data in the underlying ADC channel.

Reimplemented from VQwDataElement.

Definition at line 99 of file QwIntegrationPMT.cc.

100{
101 fTriumf_ADC.ClearEventData();
102 return;
103}

References fTriumf_ADC.

◆ ConstructBranch() [1/2]

void QwIntegrationPMT::ConstructBranch ( TTree * tree,
TString & prefix )

Definition at line 580 of file QwIntegrationPMT.cc.

581{
582 if (GetElementName()==""){
583 // This channel is not used, so skip filling the histograms.
584 } else
585 {
586 fTriumf_ADC.ConstructBranch(tree, prefix);
587 }
588 return;
589}

References fTriumf_ADC, and VQwDataElement::GetElementName().

+ Here is the call graph for this function:

◆ ConstructBranch() [2/2]

void QwIntegrationPMT::ConstructBranch ( TTree * tree,
TString & prefix,
QwParameterFile & trim_file )

Definition at line 591 of file QwIntegrationPMT.cc.

592{
593 TString devicename;
594 devicename=GetElementName();
595 devicename.ToLower();
596 if (GetElementName()==""){
597 // This channel is not used, so skip filling the histograms.
598 } else {
599 if (modulelist.HasValue(devicename)){
600 fTriumf_ADC.ConstructBranch(tree, prefix);
601 QwMessage <<"QwIntegrationPMT Tree leave added to "<<devicename<<QwLog::endl;
602 }
603
604 }
605 return;
606}
#define QwMessage
Predefined log drain for regular messages.
Definition QwLog.h:49
static std::ostream & endl(std::ostream &)
End of the line.
Definition QwLog.cc:297

References QwLog::endl(), fTriumf_ADC, VQwDataElement::GetElementName(), QwParameterFile::HasValue(), and QwMessage.

+ Here is the call graph for this function:

◆ ConstructBranchAndVector()

void QwIntegrationPMT::ConstructBranchAndVector ( TTree * tree,
TString & prefix,
QwRootTreeBranchVector & values )

Definition at line 569 of file QwIntegrationPMT.cc.

570{
571 if (GetElementName()==""){
572 // This channel is not used, so skip filling the histograms.
573 } else
574 {
575 fTriumf_ADC.ConstructBranchAndVector(tree, prefix,values);
576 }
577 return;
578}

References fTriumf_ADC, and VQwDataElement::GetElementName().

+ Here is the call graph for this function:

◆ ConstructHistograms()

void QwIntegrationPMT::ConstructHistograms ( TDirectory * folder,
TString & prefix )
overridevirtual

Construct the histograms for this data element.

Implements VQwDataElement.

Definition at line 541 of file QwIntegrationPMT.cc.

542{
543 if (GetElementName()=="")
544 {
545 // This channel is not used, so skip filling the histograms.
546 }
547 else
548 {
549 fTriumf_ADC.ConstructHistograms(folder, prefix);
550 }
551 return;
552}

References fTriumf_ADC, and VQwDataElement::GetElementName().

+ Here is the call graph for this function:

◆ DeaccumulateRunningSum()

void QwIntegrationPMT::DeaccumulateRunningSum ( QwIntegrationPMT & value,
Int_t ErrorMask = 0xFFFFFFF )

Definition at line 649 of file QwIntegrationPMT.cc.

650{
651 fTriumf_ADC.DeaccumulateRunningSum(value.fTriumf_ADC, ErrorMask);
652}

References fTriumf_ADC, and QwIntegrationPMT().

+ Here is the call graph for this function:

◆ Difference()

void QwIntegrationPMT::Difference ( const QwIntegrationPMT & value1,
const QwIntegrationPMT & value2 )

Definition at line 485 of file QwIntegrationPMT.cc.

485 {
486 *this = value1;
487 *this -= value2;
488}

References QwIntegrationPMT().

+ Here is the call graph for this function:

◆ EncodeEventData()

void QwIntegrationPMT::EncodeEventData ( std::vector< UInt_t > & buffer)

Encode current event data into an output buffer.

Definition at line 271 of file QwIntegrationPMT.cc.

272{
273 fTriumf_ADC.EncodeEventData(buffer);
274}

References fTriumf_ADC.

◆ FillHistograms()

void QwIntegrationPMT::FillHistograms ( )
overridevirtual

Fill the histograms for this data element.

Implements VQwDataElement.

Definition at line 554 of file QwIntegrationPMT.cc.

555{
556 if (GetElementName()=="")
557 {
558 // This channel is not used, so skip filling the histograms.
559 }
560 else
561 {
562 fTriumf_ADC.FillHistograms();
563 }
564
565
566 return;
567}

References fTriumf_ADC, and VQwDataElement::GetElementName().

+ Here is the call graph for this function:

◆ FillTreeVector()

void QwIntegrationPMT::FillTreeVector ( QwRootTreeBranchVector & values) const

Definition at line 609 of file QwIntegrationPMT.cc.

610{
611 if (GetElementName()==""){
612 // This channel is not used, so skip filling the histograms.
613 } else {
614 fTriumf_ADC.FillTreeVector(values);
615 }
616}

References fTriumf_ADC, and VQwDataElement::GetElementName().

+ Here is the call graph for this function:

◆ GetChannel()

const QwMollerADC_Channel * QwIntegrationPMT::GetChannel ( const TString name) const
inline

Definition at line 78 of file QwIntegrationPMT.h.

78 {
79 if (fTriumf_ADC.GetElementName() == name) return &fTriumf_ADC;
80 else return 0;
81 };

References fTriumf_ADC.

Referenced by VQwDetectorArray::PublishInternalValues(), and VQwDetectorArray::WritePromptSummary().

+ Here is the caller graph for this function:

◆ GetDBEntry()

std::vector< QwDBInterface > QwIntegrationPMT::GetDBEntry ( )

◆ GetErrDBEntry()

std::vector< QwErrDBInterface > QwIntegrationPMT::GetErrDBEntry ( )

◆ GetEventcutErrorFlag()

UInt_t QwIntegrationPMT::GetEventcutErrorFlag ( )
inlineoverridevirtual

return the error flag on this channel/device

Reimplemented from VQwDataElement.

Definition at line 118 of file QwIntegrationPMT.h.

118 {//return the error flag
119 return fTriumf_ADC.GetEventcutErrorFlag();
120 }

References fTriumf_ADC.

Referenced by UpdateErrorFlag().

+ Here is the caller graph for this function:

◆ GetValue() [1/2]

Double_t QwIntegrationPMT::GetValue ( )

Get the integrated value over the current event window.

Definition at line 244 of file QwIntegrationPMT.cc.

245{
246 return fTriumf_ADC.GetValue();
247}

References fTriumf_ADC.

◆ GetValue() [2/2]

Double_t QwIntegrationPMT::GetValue ( Int_t blocknum)

Get the integrated value for a specific block.

Parameters
blocknumBlock index within the event.

Definition at line 253 of file QwIntegrationPMT.cc.

254{
255 return fTriumf_ADC.GetValue(blocknum);
256}

References fTriumf_ADC.

◆ IncrementErrorCounters()

void QwIntegrationPMT::IncrementErrorCounters ( )
inline

Definition at line 109 of file QwIntegrationPMT.h.

109 {
110 fTriumf_ADC.IncrementErrorCounters();
111 }

References fTriumf_ADC.

◆ InitializeChannel() [1/3]

void QwIntegrationPMT::InitializeChannel ( TString name,
TString datatosave )

Initialize the PMT channel with a name and data-saving mode.

Parameters
nameDetector name used for branches and histograms.
datatosaveStorage mode (e.g., "raw" or "derived").

Definition at line 52 of file QwIntegrationPMT.cc.

53{
54 SetPedestal(0.);
56 fTriumf_ADC.InitializeChannel(name,datatosave);
57 SetElementName(name);
58 SetBlindability(kTRUE);
59 SetNormalizability(kTRUE);
60 return;
61}
void SetCalibrationFactor(Double_t calib)
Set the calibration factor and propagate to the underlying ADC channel.
void SetBlindability(Bool_t isblindable)
void SetElementName(const TString &name)
void SetNormalizability(Bool_t isnormalizable)
void SetPedestal(Double_t ped)
Set the pedestal value and propagate to the underlying ADC channel.

References fTriumf_ADC, SetBlindability(), SetCalibrationFactor(), SetElementName(), SetNormalizability(), and SetPedestal().

Referenced by QwIntegrationPMT(), QwIntegrationPMT(), and QwIntegrationPMT().

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ InitializeChannel() [2/3]

void QwIntegrationPMT::InitializeChannel ( TString subsystem,
TString module,
TString name,
TString datatosave )

Initialize the PMT channel including an intermediate module tag.

Parameters
subsystemSubsystem identifier.
moduleModule type tag used in ROOT foldering.
nameDetector name used for branches and histograms.
datatosaveStorage mode (e.g., "raw" or "derived").

Definition at line 87 of file QwIntegrationPMT.cc.

88{
89 SetPedestal(0.);
91 fTriumf_ADC.InitializeChannel(subsystem,module, name, datatosave);
92 SetElementName(name);
93 SetBlindability(kTRUE);
94 SetNormalizability(kTRUE);
95 return;
96}

References fTriumf_ADC, SetBlindability(), SetCalibrationFactor(), SetElementName(), SetNormalizability(), and SetPedestal().

+ Here is the call graph for this function:

◆ InitializeChannel() [3/3]

void QwIntegrationPMT::InitializeChannel ( TString subsystem,
TString name,
TString datatosave )

Initialize the PMT channel with subsystem and name.

Parameters
subsystemSubsystem identifier for foldering.
nameDetector name used for branches and histograms.
datatosaveStorage mode (e.g., "raw" or "derived").

Definition at line 69 of file QwIntegrationPMT.cc.

70{
71 SetPedestal(0.);
73 fTriumf_ADC.InitializeChannel(subsystem,"QwIntegrationPMT", name, datatosave);
74 SetElementName(name);
75 SetBlindability(kTRUE);
76 SetNormalizability(kTRUE);
77 return;
78}

References fTriumf_ADC, SetBlindability(), SetCalibrationFactor(), SetElementName(), SetNormalizability(), and SetPedestal().

+ Here is the call graph for this function:

◆ LoadChannelParameters()

void QwIntegrationPMT::LoadChannelParameters ( QwParameterFile & paramfile)
inlineoverridevirtual

Reimplemented from VQwDataElement.

Definition at line 60 of file QwIntegrationPMT.h.

60{};

◆ Normalize()

void QwIntegrationPMT::Normalize ( VQwDataElement * denom)

Definition at line 509 of file QwIntegrationPMT.cc.

510{
511 if (fIsNormalizable) {
512 QwMollerADC_Channel* denom_ptr = dynamic_cast<QwMollerADC_Channel*>(denom);
513 QwMollerADC_Channel vqwk_denom(*denom_ptr);
514 fTriumf_ADC.DivideBy(vqwk_denom);
515 }
516}

References fIsNormalizable, fTriumf_ADC, and VQwDataElement::VQwDataElement().

+ Here is the call graph for this function:

◆ operator+=()

QwIntegrationPMT & QwIntegrationPMT::operator+= ( const QwIntegrationPMT & value)

Add-assign from another PMT (sum raw channels).

Definition at line 458 of file QwIntegrationPMT.cc.

459{
460 if (GetElementName()!="")
461 {
462 this->fTriumf_ADC+=value.fTriumf_ADC;
463 this->fPedestal+=value.fPedestal;
464 this->fCalibration=0;
465 }
466 return *this;
467}

References fCalibration, fPedestal, fTriumf_ADC, VQwDataElement::GetElementName(), and QwIntegrationPMT().

+ Here is the call graph for this function:

◆ operator-=()

QwIntegrationPMT & QwIntegrationPMT::operator-= ( const QwIntegrationPMT & value)

Definition at line 469 of file QwIntegrationPMT.cc.

470{
471 if (GetElementName()!="")
472 {
473 this->fTriumf_ADC-=value.fTriumf_ADC;
474 this->fPedestal-=value.fPedestal;
475 this->fCalibration=0;
476 }
477 return *this;
478}

References fCalibration, fPedestal, fTriumf_ADC, VQwDataElement::GetElementName(), and QwIntegrationPMT().

+ Here is the call graph for this function:

◆ operator=()

QwIntegrationPMT & QwIntegrationPMT::operator= ( const QwIntegrationPMT & value)

Copy-assign from another PMT (event-scoped data).

Definition at line 440 of file QwIntegrationPMT.cc.

441{
442// std::cout<<" Here in QwIntegrationPMT::operator= \n";
443 if (GetElementName()!="")
444 {
445 this->fTriumf_ADC=value.fTriumf_ADC;
446 this->fPedestal=value.fPedestal;
447 this->fCalibration=value.fCalibration;
448 }
449// std::cout<<" to be copied \n";
450// value.Print();
451// std::cout<<" copied \n";
452// this->Print();
453
454 return *this;
455}

References fCalibration, fPedestal, fTriumf_ADC, VQwDataElement::GetElementName(), and QwIntegrationPMT().

+ Here is the call graph for this function:

◆ PrintErrorCounters() [1/2]

void QwIntegrationPMT::PrintErrorCounters ( )

Print accumulated error counters for this PMT.

Definition at line 106 of file QwIntegrationPMT.cc.

106 {
107 fTriumf_ADC.PrintErrorCounters();
108}

References fTriumf_ADC.

◆ PrintErrorCounters() [2/2]

void QwIntegrationPMT::PrintErrorCounters ( ) const
overridevirtual

Print error counters (const overload).

Reimplemented from VQwDataElement.

Definition at line 369 of file QwIntegrationPMT.cc.

369 {// report number of events failed due to HW and event cut failure
370 fTriumf_ADC.PrintErrorCounters();
371}

References fTriumf_ADC.

◆ PrintInfo()

void QwIntegrationPMT::PrintInfo ( ) const
overridevirtual

Print multiple lines of information about this data element.

Reimplemented from VQwDataElement.

Definition at line 523 of file QwIntegrationPMT.cc.

524{
525 //std::cout<<"QwMollerADC_Channel Info " <<std::endl;
526 //std::cout<<" Running AVG "<<GetElementName()<<" current running AVG "<<IntegrationPMT_Running_AVG<<std::endl;
527 std::cout<<"QwMollerADC_Channel Info " <<std::endl;
528 fTriumf_ADC.PrintInfo();
529 std::cout<< "Blindability is " << (fIsBlindable?"TRUE":"FALSE")
530 <<std::endl;
531 std::cout<< "Normalizability is " << (fIsNormalizable?"TRUE":"FALSE")
532 <<std::endl;
533 std::cout << "fNormRate=" << fNormRate << "fVoltPerHz=" << fVoltPerHz
534 << " Asym=" << fAsym << " C_x=" << fCoeff_x << " C_y=" << fCoeff_y
535 << " C_xp=" << fCoeff_xp << " C_yp=" << fCoeff_yp
536 << " C_e=" << fCoeff_e << std::endl;
537 return;
538}

References fAsym, fCoeff_e, fCoeff_x, fCoeff_xp, fCoeff_y, fCoeff_yp, fIsBlindable, fIsNormalizable, fNormRate, fTriumf_ADC, and fVoltPerHz.

◆ PrintValue()

void QwIntegrationPMT::PrintValue ( ) const
overridevirtual

Print single line of value and error of this data element.

Reimplemented from VQwDataElement.

Definition at line 518 of file QwIntegrationPMT.cc.

519{
520 fTriumf_ADC.PrintValue();
521}

References fTriumf_ADC.

◆ ProcessEvBuffer()

Int_t QwIntegrationPMT::ProcessEvBuffer ( UInt_t * buffer,
UInt_t word_position_in_buffer,
UInt_t subelement = 0 )
overridevirtual

Process the raw event buffer and decode into the ADC channel.

Decode the Moller ADC block for this PMT from an event buffer.

Parameters
bufferEvent buffer pointer.
word_position_in_bufferCurrent word index in buffer.
subelementBlock index within the PMT (default 0).
Returns
0 on success; negative on error.
The updated buffer word position.

Implements VQwDataElement.

Definition at line 431 of file QwIntegrationPMT.cc.

432{
433 fTriumf_ADC.ProcessEvBuffer(buffer,word_position_in_buffer);
434
435 return word_position_in_buffer;
436} Double_t fULimit, fLLimit;
Double_t fLLimit
Double_t fULimit

References fTriumf_ADC, and QwBPMStripline< T >::subelement.

◆ ProcessEvent()

void QwIntegrationPMT::ProcessEvent ( )

Apply hardware checks and process the event for this PMT.

Definition at line 277 of file QwIntegrationPMT.cc.

278{
279 ApplyHWChecks();//first apply HW checks and update HW error flags.
280 fTriumf_ADC.ProcessEvent();
281
282 return;
283}
Bool_t ApplyHWChecks()
Apply hardware checks and return whether the event is valid.

References ApplyHWChecks(), and fTriumf_ADC.

+ Here is the call graph for this function:

◆ RandomizeEventData()

void QwIntegrationPMT::RandomizeEventData ( int helicity = 0,
double time = 0.0 )

Generate mock data for a single event.

Parameters
helicityHelicity state indicator.
timeEvent time or timestamp proxy.

Definition at line 177 of file QwIntegrationPMT.cc.

178{
179 fTriumf_ADC.RandomizeEventData(helicity, time);
180 return;
181}

References fTriumf_ADC.

◆ RandomizeMollerEvent()

void QwIntegrationPMT::RandomizeMollerEvent ( int helicity,
const QwBeamCharge & charge,
const QwBeamPosition & xpos,
const QwBeamPosition & ypos,
const QwBeamAngle & xprime,
const QwBeamAngle & yprime,
const QwBeamEnergy & energy )

Generate a mock MOLLER detector event using beam parameters.

Parameters
helicityHelicity state indicator.
chargeBeam charge reference.
xposBeam X position.
yposBeam Y position.
xprimeBeam X angle.
yprimeBeam Y angle.
energyBeam energy reference.

Definition at line 194 of file QwIntegrationPMT.cc.

195{
196 QwMollerADC_Channel temp(this->fTriumf_ADC);
197 fTriumf_ADC.ClearEventData();
198
199 temp.AssignScaledValue(xpos, fCoeff_x);
200 fTriumf_ADC += temp;
201
202 temp.AssignScaledValue(ypos, fCoeff_y);
203 fTriumf_ADC += temp;
204
205 temp.AssignScaledValue(xprime, fCoeff_xp);
206 fTriumf_ADC += temp;
207
208 temp.AssignScaledValue(yprime, fCoeff_yp);
209 fTriumf_ADC += temp;
210
211 temp.AssignScaledValue(energy, fCoeff_e);
212 fTriumf_ADC += temp;
213
214//fTriumf_ADC.AddChannelOffset(fBaseRate * (1+helicity*fAsym));
215 fTriumf_ADC.AddChannelOffset(1.0+helicity*fAsym);
216
217 fTriumf_ADC *= charge;
218 fTriumf_ADC.Scale(fNormRate*fVoltPerHz); // After this Scale function, fTriumf_ADC should be the detector signal in volts.
219 fTriumf_ADC.ForceMapfileSampleSize();
220 // Double_t voltage_width = sqrt(fTriumf_ADC.GetValue()*window_length/fVoltPerHz)/(window_length/fVoltPerHz);
221 Double_t voltage_width = sqrt( fTriumf_ADC.GetValue() / (fTriumf_ADC.GetNumberOfSamples()*QwMollerADC_Channel::kTimePerSample/Qw::sec/fVoltPerHz) );
222 //std::cout << "Voltage Width: " << voltage_width << std::endl;
223 fTriumf_ADC.SmearByResolution(voltage_width);
224 fTriumf_ADC.SetRawEventData();
225
226 return;
227
228}
static const double sec
Definition QwUnits.h:80
static const Double_t kTimePerSample

References QwMollerADC_Channel::AssignScaledValue(), fAsym, fCoeff_e, fCoeff_x, fCoeff_xp, fCoeff_y, fCoeff_yp, fNormRate, fTriumf_ADC, fVoltPerHz, QwMollerADC_Channel::kTimePerSample, and Qw::sec.

+ Here is the call graph for this function:

◆ Ratio()

void QwIntegrationPMT::Ratio ( QwIntegrationPMT & numer,
QwIntegrationPMT & denom )

Definition at line 490 of file QwIntegrationPMT.cc.

491{
492 // std::cout<<"QwIntegrationPMT::Ratio element name ="<<GetElementName()<<" \n";
493 if (GetElementName()!="")
494 {
495 // std::cout<<"here in \n";
496 this->fTriumf_ADC.Ratio(numer.fTriumf_ADC,denom.fTriumf_ADC);
497 this->fPedestal=0;
498 this->fCalibration=0;
499 }
500 return;
501}

References fCalibration, fPedestal, fTriumf_ADC, VQwDataElement::GetElementName(), and QwIntegrationPMT().

+ Here is the call graph for this function:

◆ Scale()

void QwIntegrationPMT::Scale ( Double_t factor)

Definition at line 503 of file QwIntegrationPMT.cc.

504{
505 fTriumf_ADC.Scale(factor);
506 return;
507}

References fTriumf_ADC.

Referenced by QwCombinedPMT::CalculateSumAndAverage().

+ Here is the caller graph for this function:

◆ SetAsymmetry()

void QwIntegrationPMT::SetAsymmetry ( Double_t value)
inline

Definition at line 166 of file QwIntegrationPMT.h.

166{fAsym = value;};

References fAsym.

◆ SetBlindability()

void QwIntegrationPMT::SetBlindability ( Bool_t isblindable)
inline

Definition at line 132 of file QwIntegrationPMT.h.

132{fIsBlindable=isblindable;};

References fIsBlindable.

Referenced by InitializeChannel(), InitializeChannel(), InitializeChannel(), and VQwDetectorArray::LoadChannelMap().

+ Here is the caller graph for this function:

◆ SetCalibrationFactor()

void QwIntegrationPMT::SetCalibrationFactor ( Double_t calib)

Set the calibration factor and propagate to the underlying ADC channel.

Parameters
calibMultiplicative calibration factor.

Definition at line 40 of file QwIntegrationPMT.cc.

41{
42 fCalibration=calib;
43 fTriumf_ADC.SetCalibrationFactor(fCalibration);
44 return;
45}

References fCalibration, and fTriumf_ADC.

Referenced by InitializeChannel(), InitializeChannel(), and InitializeChannel().

+ Here is the caller graph for this function:

◆ SetCoefficientCe()

void QwIntegrationPMT::SetCoefficientCe ( Double_t value)
inline

Definition at line 171 of file QwIntegrationPMT.h.

171{fCoeff_e = value;};

References fCoeff_e.

◆ SetCoefficientCx()

void QwIntegrationPMT::SetCoefficientCx ( Double_t value)
inline

Definition at line 167 of file QwIntegrationPMT.h.

167{fCoeff_x = value;};

References fCoeff_x.

◆ SetCoefficientCxp()

void QwIntegrationPMT::SetCoefficientCxp ( Double_t value)
inline

Definition at line 169 of file QwIntegrationPMT.h.

169{fCoeff_xp = value;};

References fCoeff_xp.

◆ SetCoefficientCy()

void QwIntegrationPMT::SetCoefficientCy ( Double_t value)
inline

Definition at line 168 of file QwIntegrationPMT.h.

168{fCoeff_y = value;};

References fCoeff_y.

◆ SetCoefficientCyp()

void QwIntegrationPMT::SetCoefficientCyp ( Double_t value)
inline

Definition at line 170 of file QwIntegrationPMT.h.

170{fCoeff_yp = value;};

References fCoeff_yp.

◆ SetDefaultSampleSize()

void QwIntegrationPMT::SetDefaultSampleSize ( Int_t sample_size)

Set the default sample size used by the ADC channel.

Definition at line 332 of file QwIntegrationPMT.cc.

332 {
333 fTriumf_ADC.SetDefaultSampleSize((size_t)sample_size);
334}

References fTriumf_ADC.

◆ SetElementName()

void QwIntegrationPMT::SetElementName ( const TString & name)
inline

Definition at line 76 of file QwIntegrationPMT.h.

76{ fElementName = name; fTriumf_ADC.SetElementName(name);};
TString fElementName
Name of this data element.

References VQwDataElement::fElementName, and fTriumf_ADC.

Referenced by InitializeChannel(), InitializeChannel(), and InitializeChannel().

+ Here is the caller graph for this function:

◆ SetEventCutMode()

void QwIntegrationPMT::SetEventCutMode ( Int_t bcuts)
inline

Definition at line 127 of file QwIntegrationPMT.h.

127 {
128 bEVENTCUTMODE=bcuts;
129 fTriumf_ADC.SetEventCutMode(bcuts);
130 }

References bEVENTCUTMODE, and fTriumf_ADC.

◆ SetEventData()

void QwIntegrationPMT::SetEventData ( Double_t * block,
UInt_t sequencenumber )

Set the block data for the current event sequence.

Parameters
blockPointer to block data.
sequencenumberSequence identifier.

Definition at line 264 of file QwIntegrationPMT.cc.

265{
266 fTriumf_ADC.SetEventData(block, sequencenumber);
267 return;
268}

References fTriumf_ADC.

◆ SetExternalRandomVariable()

void QwIntegrationPMT::SetExternalRandomVariable ( Double_t random_variable)

Set the external random variable to drive mock data.

Parameters
random_variableExternal random value.

Definition at line 121 of file QwIntegrationPMT.cc.

122{
123 fTriumf_ADC.SetExternalRandomVariable(random_variable);
124 return;
125}

References fTriumf_ADC.

◆ SetHardwareSum()

void QwIntegrationPMT::SetHardwareSum ( Double_t hwsum,
UInt_t sequencenumber = 0 )

Set the hardware-level sum measurement for a sequence.

Parameters
hwsumHardware sum value.
sequencenumberSequence identifier.

Definition at line 237 of file QwIntegrationPMT.cc.

238{
239 fTriumf_ADC.SetHardwareSum(hwsum, sequencenumber);
240 return;
241}

References fTriumf_ADC.

◆ SetNormalizability()

void QwIntegrationPMT::SetNormalizability ( Bool_t isnormalizable)
inline

Definition at line 133 of file QwIntegrationPMT.h.

133{fIsNormalizable = isnormalizable;};

References fIsNormalizable.

Referenced by InitializeChannel(), InitializeChannel(), InitializeChannel(), and VQwDetectorArray::LoadChannelMap().

+ Here is the caller graph for this function:

◆ SetNormRate()

void QwIntegrationPMT::SetNormRate ( Double_t value)
inline

Definition at line 163 of file QwIntegrationPMT.h.

163{fNormRate = value;};

References fNormRate.

◆ SetPedestal()

void QwIntegrationPMT::SetPedestal ( Double_t pedestal)

Set the pedestal value and propagate to the underlying ADC channel.

Parameters
pedestalPedestal offset to apply to the raw signal.

Definition at line 29 of file QwIntegrationPMT.cc.

30{
31 fPedestal=pedestal;
32 fTriumf_ADC.SetPedestal(fPedestal);
33 return;
34}

References fPedestal, and fTriumf_ADC.

Referenced by InitializeChannel(), InitializeChannel(), and InitializeChannel().

+ Here is the caller graph for this function:

◆ SetRandomEventAsymmetry()

void QwIntegrationPMT::SetRandomEventAsymmetry ( Double_t asymmetry)

Set an asymmetry parameter applied to helicity states.

Parameters
asymmetryFractional asymmetry to apply.

Definition at line 166 of file QwIntegrationPMT.cc.

167{
168 fTriumf_ADC.SetRandomEventAsymmetry(asymmetry);
169 return;
170}

References fTriumf_ADC.

◆ SetRandomEventDriftParameters()

void QwIntegrationPMT::SetRandomEventDriftParameters ( Double_t amplitude,
Double_t phase,
Double_t frequency )

Configure deterministic drift parameters applied per event.

Parameters
amplitudeDrift amplitude.
phaseDrift phase in radians.
frequencyDrift frequency.

Definition at line 133 of file QwIntegrationPMT.cc.

134{
135 fTriumf_ADC.SetRandomEventDriftParameters(amplitude, phase, frequency);
136 return;
137}

References fTriumf_ADC.

◆ SetRandomEventParameters()

void QwIntegrationPMT::SetRandomEventParameters ( Double_t mean,
Double_t sigma )

Configure Gaussian mock data parameters.

Parameters
meanMean of the generated distribution.
sigmaStandard deviation of the distribution.

Definition at line 156 of file QwIntegrationPMT.cc.

157{
158 fTriumf_ADC.SetRandomEventParameters(mean, sigma);
159 return;
160}

References fTriumf_ADC.

◆ SetSaturationLimit()

void QwIntegrationPMT::SetSaturationLimit ( Double_t saturation_volt)

Set the saturation voltage limit for the ADC front-end.

Definition at line 338 of file QwIntegrationPMT.cc.

338 {
339 fTriumf_ADC.SetMollerADCSaturationLimt(saturation_volt);
340}

References fTriumf_ADC.

◆ SetSingleEventCuts() [1/2]

Int_t QwIntegrationPMT::SetSingleEventCuts ( Double_t LL = 0,
Double_t UL = 0 )

Set basic single-event cut limits.

Parameters
LLLower limit.
ULUpper limit.
Returns
1 on success.

Definition at line 307 of file QwIntegrationPMT.cc.

307 {//std::vector<Double_t> & dEventCuts){//two limits and sample size
308 fTriumf_ADC.SetSingleEventCuts(LL,UL);
309 return 1;
310}

References fTriumf_ADC.

◆ SetSingleEventCuts() [2/2]

void QwIntegrationPMT::SetSingleEventCuts ( UInt_t errorflag,
Double_t LL = 0,
Double_t UL = 0,
Double_t stability = 0,
Double_t burplevel = 0 )

Inherited from VQwDataElement to set the upper and lower limits (fULimit and fLLimit), stability % and the error flag on this channel.

Configure detailed single-event cuts for this PMT.

Parameters
errorflagDevice-specific error flag mask to set.
LLLower limit.
ULUpper limit.
stabilityStability threshold.
burplevelBurp detection threshold.

Definition at line 321 of file QwIntegrationPMT.cc.

321 {
322 //set the unique tag to identify device type (bcm,bpm & etc)
323 errorflag|=kPMTErrorFlag;
324 QwMessage<<"QwIntegrationPMT Error Code passing to QwMollerADC_Ch "<<errorflag<<QwLog::endl;
325 fTriumf_ADC.SetSingleEventCuts(errorflag,LL,UL,stability,burplevel);
326
327}
static const UInt_t kPMTErrorFlag
Definition QwTypes.h:171

References QwLog::endl(), fTriumf_ADC, kPMTErrorFlag, and QwMessage.

+ Here is the call graph for this function:

◆ SetVoltPerHz()

void QwIntegrationPMT::SetVoltPerHz ( Double_t value)
inline

Definition at line 164 of file QwIntegrationPMT.h.

164{fVoltPerHz = value;};

References fVoltPerHz.

◆ Sum()

void QwIntegrationPMT::Sum ( const QwIntegrationPMT & value1,
const QwIntegrationPMT & value2 )

Definition at line 480 of file QwIntegrationPMT.cc.

480 {
481 *this = value1;
482 *this += value2;
483}

References QwIntegrationPMT().

+ Here is the call graph for this function:

◆ UpdateErrorFlag() [1/2]

UInt_t QwIntegrationPMT::UpdateErrorFlag ( )
inlineoverridevirtual

Update the error flag based on the error flags of internally contained objects Return parameter is the "Eventcut Error Flag".

Reimplemented from VQwDataElement.

Definition at line 124 of file QwIntegrationPMT.h.

124{return GetEventcutErrorFlag();};
UInt_t GetEventcutErrorFlag() override
return the error flag on this channel/device

References GetEventcutErrorFlag().

+ Here is the call graph for this function:

◆ UpdateErrorFlag() [2/2]

void QwIntegrationPMT::UpdateErrorFlag ( const QwIntegrationPMT * ev_error)

Merge error flags from a reference PMT into this instance.

Parameters
ev_errorReference PMT whose flags are merged.

Definition at line 406 of file QwIntegrationPMT.cc.

406 {
407 try {
408 if(typeid(*ev_error)==typeid(*this)) {
409 // std::cout<<" Here in QwIntegrationPMT::UpdateErrorFlag \n";
410 if (this->GetElementName()!="") {
411 fTriumf_ADC.UpdateErrorFlag(ev_error->fTriumf_ADC);
412 }
413 } else {
414 TString loc="Standard exception from QwIntegrationPMT::UpdateErrorFlag :"+
415 ev_error->GetElementName()+" "+this->GetElementName()+" are not of the "
416 +"same type";
417 throw std::invalid_argument(loc.Data());
418 }
419 } catch (std::exception& e) {
420 std::cerr<< e.what()<<std::endl;
421 }
422};

References fTriumf_ADC, VQwDataElement::GetElementName(), and QwIntegrationPMT().

+ Here is the call graph for this function:

◆ UseExternalRandomVariable()

void QwIntegrationPMT::UseExternalRandomVariable ( )

Use an external random variable source for mock data.

Definition at line 111 of file QwIntegrationPMT.cc.

112{
113 fTriumf_ADC.UseExternalRandomVariable();
114 return;
115}

References fTriumf_ADC.

Field Documentation

◆ bDEBUG

const Bool_t QwIntegrationPMT::bDEBUG =kFALSE
staticprivate

Definition at line 215 of file QwIntegrationPMT.h.

◆ bEVENTCUTMODE

Bool_t QwIntegrationPMT::bEVENTCUTMODE
private

Definition at line 216 of file QwIntegrationPMT.h.

Referenced by SetEventCutMode().

◆ fAsym

Double_t QwIntegrationPMT::fAsym
private

Definition at line 199 of file QwIntegrationPMT.h.

Referenced by PrintInfo(), RandomizeMollerEvent(), and SetAsymmetry().

◆ fCalibration

Double_t QwIntegrationPMT::fCalibration
private

◆ fCoeff_e

Double_t QwIntegrationPMT::fCoeff_e
private

Definition at line 204 of file QwIntegrationPMT.h.

Referenced by PrintInfo(), RandomizeMollerEvent(), and SetCoefficientCe().

◆ fCoeff_x

Double_t QwIntegrationPMT::fCoeff_x
private

Definition at line 200 of file QwIntegrationPMT.h.

Referenced by PrintInfo(), RandomizeMollerEvent(), and SetCoefficientCx().

◆ fCoeff_xp

Double_t QwIntegrationPMT::fCoeff_xp
private

Definition at line 202 of file QwIntegrationPMT.h.

Referenced by PrintInfo(), RandomizeMollerEvent(), and SetCoefficientCxp().

◆ fCoeff_y

Double_t QwIntegrationPMT::fCoeff_y
private

Definition at line 201 of file QwIntegrationPMT.h.

Referenced by PrintInfo(), RandomizeMollerEvent(), and SetCoefficientCy().

◆ fCoeff_yp

Double_t QwIntegrationPMT::fCoeff_yp
private

Definition at line 203 of file QwIntegrationPMT.h.

Referenced by PrintInfo(), RandomizeMollerEvent(), and SetCoefficientCyp().

◆ fDeviceErrorCode

Int_t QwIntegrationPMT::fDeviceErrorCode
private

Definition at line 210 of file QwIntegrationPMT.h.

◆ fGoodEvent

Bool_t QwIntegrationPMT::fGoodEvent
private

Definition at line 206 of file QwIntegrationPMT.h.

◆ fIsBlindable

Bool_t QwIntegrationPMT::fIsBlindable
private

Definition at line 212 of file QwIntegrationPMT.h.

Referenced by Blind(), Blind(), PrintInfo(), QwIntegrationPMT(), and SetBlindability().

◆ fIsNormalizable

Bool_t QwIntegrationPMT::fIsNormalizable
private

Definition at line 213 of file QwIntegrationPMT.h.

Referenced by Normalize(), PrintInfo(), QwIntegrationPMT(), and SetNormalizability().

◆ fNormRate

Double_t QwIntegrationPMT::fNormRate
private

Definition at line 197 of file QwIntegrationPMT.h.

Referenced by PrintInfo(), RandomizeMollerEvent(), and SetNormRate().

◆ fPedestal

Double_t QwIntegrationPMT::fPedestal
private

◆ fTriumf_ADC

◆ fVoltPerHz

Double_t QwIntegrationPMT::fVoltPerHz
private

Definition at line 198 of file QwIntegrationPMT.h.

Referenced by PrintInfo(), RandomizeMollerEvent(), and SetVoltPerHz().


The documentation for this class was generated from the following files: