80 Bool_t ldebug = kFALSE;
89 std::cout<<
"\n%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%\n";
110 Bool_t ldebug = kFALSE;
118 std::cout<<
"\n%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%\n";
120 std::cout<<
" is rotated by angle = "<<rotation_angle<<std::endl;
135 if(pos.Contains(
"X"))
fGains[0] = value;
136 if(pos.Contains(
"Y"))
fGains[1] = value;
222 if(prefix.Contains(
"diff_")||prefix.Contains(
"yield_")|| prefix.Contains(
"asym_"))
269 Bool_t localDebug = kFALSE;
271 if( localDebug )
QwMessage<<
"Creating BPM of type: "<<type<<
" with name: "<<
272 name<<
". Subsystem Name: " <<subsystemname<<
"\n";
275 if( type ==
"VQWK") {
277 }
else if ( type ==
"SIS3801" ) {
279 }
else if ( type ==
"SCALER" || type ==
"SIS3801D24" ) {
281 }
else if ( type ==
"MOLLERADC" ) {
284 QwWarning <<
"BPM of type="<<type<<
" is UNSUPPORTED!!\n";
291 Bool_t localDebug = kFALSE;
297 if( type ==
"VQWK") {
299 }
else if ( type ==
"SIS3801" ) {
301 }
else if ( type ==
"SCALER" || type ==
"SIS3801D24" ) {
303 }
else if ( type ==
"MOLLERADC" ) {
306 QwWarning <<
"BPM of type="<<type<<
" is UNSUPPORTED!!\n";
317 Bool_t localDebug = kFALSE;
319 if( localDebug )
QwMessage<<
"Creating CombinedBPM of type: "<<type<<
" with name: "<<
320 name<<
". Subsystem Name: " <<subsystemname<<
"\n";
323 if( type ==
"VQWK") {
325 }
else if (type ==
"SIS3801" ) {
327 }
else if ( type ==
"SCALER" || type ==
"SIS3801D24" ) {
329 }
else if ( type ==
"MOLLERADC" ) {
332 QwWarning <<
"BPM of type="<<type<<
" is UNSUPPORTED!!\n";
339 Bool_t localDebug = kFALSE;
345 if( type ==
"VQWK") {
347 }
else if ( type ==
"SIS3801" ) {
349 }
else if ( type ==
"SCALER" || type ==
"SIS3801D24" ) {
351 }
else if ( type ==
"MOLLERADC" ) {
354 QwWarning <<
"BPM of type="<<type<<
" is UNSUPPORTED!!\n";
Base and derived classes for scaler channel data handling.
A logfile class, based on an identical class in the Hermes analyzer.
#define QwWarning
Predefined log drain for warnings.
#define QwMessage
Predefined log drain for regular messages.
Decoding and management for Moller ADC channels (6x32-bit datawords)
Decoding and management for VQWK ADC channels (6x32-bit datawords)
static const UInt_t kBPMErrorFlag
Combined beam position monitor using weighted average.
Stripline beam position monitor implementation.
Virtual base class for beam position monitors.
static std::ostream & endl(std::ostream &)
End of the line.
virtual const TString & GetElementName() const
Get the name of this element.
void SetElementName(const TString &name)
Set the name of this element.
TString GetModuleType() const
Return the type of the beam instrument.
Abstract base for concrete hardware channels implementing dual-operator pattern.
void SetSingleEventCuts(Double_t min, Double_t max)
Set the upper and lower limits (fULimit and fLLimit) for this channel.
Double_t fPositionCenter[3]
friend class QwCombinedBPM
friend class QwBPMStripline
void GetSurveyOffsets(Double_t Xoffset, Double_t Yoffset, Double_t Zoffset)
Store geometry/survey offsets for absolute position calibration.
void SetRotation(Double_t)
Set detector rotation angle and update cached trigonometric values.
Double_t fQwStriplineCalibration
void SetRootSaveStatus(TString &prefix)
static const TString kAxisLabel[2]
void SetSingleEventCuts(TString, Double_t, Double_t)
static VQwBPM * CreateCombo(TString subsystemname, TString type, TString name)
A fast way of creating a BPM stripline of specified type.
Double_t fRelativeGains[2]
void InitializeChannel(TString name)
Initialize common BPM state and set the element name.
void GetElectronicFactors(Double_t BSENfactor, Double_t AlphaX, Double_t AlphaY)
Apply per-detector electronic calibration and relative gains.
virtual VQwHardwareChannel * GetSubelementByName(TString ch_name)=0
void SetGains(TString pos, Double_t value)
Double_t fQwStriplineCorrection
static VQwBPM * CreateStripline(TString subsystemname, TString type, TString name)
A fast way of creating a BPM stripline of specified type.
static const TString axis[3]
virtual VQwBPM & operator=(const VQwBPM &value)=0