JAPAn
Just Another Parity Analyzer
Loading...
Searching...
No Matches
QwBlindDetectorArray.h
Go to the documentation of this file.
1/*!
2 * \file QwBlindDetectorArray.h
3 * \brief Blinded detector array for PMT analysis
4 * \author P. M. King
5 * \date 2007-05-08
6 */
7
8/// \ingroup QwAnalysis_ADC
9
10#pragma once
11
12// System headers
13#include <vector>
14
15// Qweak headers
16#include "VQwSubsystemParity.h"
17#include "QwIntegrationPMT.h"
18#include "QwCombinedPMT.h"
19#include "VQwDetectorArray.h"
20
21// Forward declarations
22class QwBlinder;
23class QwBlindDetectorArrayID;
24
25
26/**
27 * \class QwBlindDetectorArray
28 * \ingroup QwAnalysis_ADC
29 * \brief Detector array wrapper that applies blinding to asymmetries
30 *
31 * Aggregates multiple PMT-like detectors and provides methods to
32 * apply blinding strategies consistently to yields, differences,
33 * and asymmetries. Used for parity-violating detector analysis.
34 */
36 public VQwDetectorArray,
37 virtual public VQwSubsystemParity,
38 public MQwSubsystemCloneable<QwBlindDetectorArray>{
39
40 /******************************************************************
41 * Class: QwBlindDetectorArray
42 *
43 *
44 ******************************************************************/
45
46
47 private:
48
49 /// Private default constructor (not implemented, will throw linker error on use)
51
52 public:
53
54 /// Constructor with name
55 QwBlindDetectorArray(const TString& name)
56 : VQwSubsystem(name), VQwSubsystemParity(name), VQwDetectorArray(name) {};
57
58
59 /// Copy constructor
62
63
64 /// Virtual destructor
65 ~QwBlindDetectorArray() override;
66
67 /// Inherit assignment operator on base class
68 using VQwDetectorArray::operator=;
69
70 public:
71
72 /// \brief Blind the asymmetry
73 void Blind(const QwBlinder *blinder) override;
74
75 /// \brief Blind the difference using the yield
76 void Blind(const QwBlinder *blinder, const VQwSubsystemParity* subsys) override;
77
78#ifdef HAS_RNTUPLE_SUPPORT
79 // Inherit RNTuple methods from VQwDetectorArray - no need to redeclare
80 using VQwDetectorArray::ConstructNTupleAndVector;
81 using VQwDetectorArray::FillNTupleVector;
82#endif // HAS_RNTUPLE_SUPPORT
83
84};
85
86// Register this subsystem with the factory
#define REGISTER_SUBSYSTEM_FACTORY(A)
Definition QwFactory.h:270
Virtual base class for detector arrays (PMTs, etc.)
Combined PMT detector using Moller ADC channels.
Virtual base class for parity analysis subsystems.
Integration PMT detector for charge and asymmetry measurements.
VQwSubsystem(const TString &name)
Constructor with name.
Detector array wrapper that applies blinding to asymmetries.
QwBlindDetectorArray(const TString &name)
Constructor with name.
~QwBlindDetectorArray() override
Virtual destructor.
QwBlindDetectorArray()
Private default constructor (not implemented, will throw linker error on use)
QwBlindDetectorArray(const QwBlindDetectorArray &source)
Copy constructor.
void Blind(const QwBlinder *blinder) override
Blind the asymmetry.
Data blinding utilities for parity violation analysis.
Definition QwBlinder.h:57
VQwDetectorArray()
Private default constructor (not implemented, will throw linker error on use)
Abstract base class for subsystems participating in parity analysis.
VQwSubsystemParity()
Private default constructor (not implemented, will throw linker error on use)