1 #include <mdet/BackEndSiPM.h>
3 #include <mdet/MHierarchyInfo.h>
5 #include <utl/AugerUnits.h>
6 #include <utl/MathConstants.h>
8 #include <fwk/RandomEngineRegistry.h>
9 #include <CLHEP/Random/RandGauss.h>
34 Register(fFirstAdderPar1);
35 Register(fFirstAdderPar2);
36 Register(fFirstAdderPar3);
37 Register(fFirstAdderPar4);
38 Register(fFirstAdderPar5);
39 Register(fFirstAdderSaturationUp);
40 Register(fFirstAdderSaturationDown);
41 Register(fFirstAdderOffset);
42 Register(fSecondAdderPar1);
43 Register(fSecondAdderPar2);
44 Register(fSecondAdderPar3);
45 Register(fSecondAdderPar4);
46 Register(fSecondAdderPar5);
47 Register(fSecondAdderSaturationUp);
48 Register(fSecondAdderSaturationDown);
49 Register(fSecondAdderOffset);
50 Register(fLowGainAmplifierPar1);
51 Register(fLowGainAmplifierPar2);
52 Register(fLowGainAmplifierPar3);
53 Register(fLowGainAmplifierPar4);
54 Register(fLowGainAmplifierPar5);
55 Register(fLowGainAmplifierPar6);
56 Register(fLowGainAmplifierPar7);
57 Register(fLowGainAmplifierPar8);
58 Register(fLowGainAmplifierPar9);
59 Register(fLowGainAmplifierAdjustmentFactor);
60 Register(fLowGainAmplifierSaturationUp);
61 Register(fLowGainAmplifierSaturationDown);
62 Register(fLowGainAmplifierOffset);
63 Register(fHighGainAmplifierPar1);
64 Register(fHighGainAmplifierPar2);
65 Register(fHighGainAmplifierPar3);
66 Register(fHighGainAmplifierPar4);
67 Register(fHighGainAmplifierPar5);
68 Register(fHighGainAmplifierPar6);
69 Register(fHighGainAmplifierPar7);
70 Register(fHighGainAmplifierPar8);
71 Register(fHighGainAmplifierPar9);
72 Register(fHighGainAmplifierAdjustmentFactor);
73 Register(fHighGainAmplifierSaturationUp);
74 Register(fHighGainAmplifierSaturationDown);
75 Register(fHighGainAmplifierOffset);
82 Register(fADCSaturationUp);
83 Register(fADCSaturationDown);
85 Register(fSimplifiedGainLG);
86 Register(fSimplifiedGainHG);
87 Register(fSimplifiedTime);
88 Register(fNumberOfChannelsToGroup);
458 std::complex<double> value;
535 const std::complex<double> totalTransfer(transferReFirstAdder.Eval(freq), transferImFirstAdder.Eval(freq));
537 return totalTransfer;
562 const std::complex<double> totalTransfer(transferReSecondAdder.Eval(freq), transferImSecondAdder.Eval(freq));
564 return totalTransfer;
600 const std::complex<double> totalTransfer(transferReLowGainAmplifier.Eval(freq), transferImLowGainAmplifier.Eval(freq));
602 return totalTransfer;
638 const std::complex<double> totalTransfer(transferReHighGainAmplifier.Eval(freq), transferImHighGainAmplifier.Eval(freq));
640 return totalTransfer;
668 const std::complex<double> totalTransfer(transferReADC.Eval(freq), transferImADC.Eval(freq));
670 return totalTransfer;
683 const std::complex<double> totalTransfer(-(totalGain/(1+
pow(freq*
utl::kTwoPi*totalTime,2))),
686 return totalTransfer;
697 const std::complex<double> totalTransfer(-(totalGain/(1+
pow(freq*3.1416*2*totalTime,2))),
698 (totalGain*(freq*2*3.1416*totalTime)/(1+
pow(freq*2*3.1416*totalTime,2))));
700 return totalTransfer;
double GetLowGainAmplifierPar9() const
const char * GetADCFunctionIm() const
double GetHighGainAmplifierPar4() const
utl::Validated< double > fADCSaturationUp
utl::Validated< double > fSecondAdderOffset
double GetADCPar3() const
double GetADCPar2() const
double GetSecondAdderOffset() const
double GetSimplifiedGainLG() const
Simplified transfer functions (low-passs active filter)
const char * Get2ndAdderFunctionReal() const
utl::Validated< double > fADCPar2
utl::Validated< double > fFirstAdderPar4
const char * Get2ndAdderFunctionIm() const
double GetSecondAdderPar3() const
utl::Validated< double > fFirstAdderSaturationUp
double GetLowGainAmplifierPar5() const
utl::Validated< double > fADCPar3
double GetHighGainAmplifierPar1() const
utl::Validated< double > fADCPar1
utl::Validated< double > fLowGainAmplifierPar6
double GetHighGainAmplifierOffset() const
double GetFirstAdderPar4() const
double GetLowGainAmplifierPar7() const
utl::Validated< double > fSecondAdderSaturationDown
utl::Validated< double > fLowGainAmplifierPar8
const char * GetAmplifierHGFunctionIm() const
double ApplySaturation(double value, TransferStep step) const
static const char *const kComponentsNames[13]
double GetADCPar5() const
det::DetectorComponent< C, MManagerProvider > Type
Type specializing det::DetectorComponent for Muon hierarchy.
utl::Validated< double > fLowGainAmplifierSaturationDown
double GetHighGainAmplifierPar2() const
utl::Validated< double > fSecondAdderPar5
double GetHighGainAmplifierSaturationUp() const
double GetLowGainAmplifierPar2() const
double GetHighGainAmplifierPar5() const
const char * GetAmplifierHGFunctionReal() const
std::complex< double > ComputeTransfer(double freq, TransferStep step) const
double GetFirstAdderPar3() const
static const char *const kComponentsIds[13]
double GetADCSaturationDown() const
static const char *const kComponentName
double GetLowGainAmplifierSaturationDown() const
double GetFirstAdderSaturationDown() const
double pow(const double x, const unsigned int i)
double ApplySaturationSecondAdder(double v) const
double GetADCPar6() const
utl::Validated< double > fHighGainAmplifierOffset
static const char *const kComponentId
const char * GetADCFunctionReal() const
ADC transfer function.
T & GetData(P< T > &d, const std::string &p) const
Common utility function for configuration.
utl::Validated< double > fHighGainAmplifierSaturationUp
double GetLowGainAmplifierPar4() const
const char * Get1stAdderFunctionReal() const
First and second adder transfer function:
double GetLowGainAmplifierOffset() const
utl::Validated< double > fLowGainAmplifierPar7
double GetHighGainAmplifierPar6() const
double GetHighGainAmplifierPar3() const
double GetHighGainAmplifierPar8() const
utl::Validated< double > fNumberOfChannelsToGroup
utl::Validated< double > fHighGainAmplifierPar8
short GetNumberOfChannelsToGroup() const
utl::Validated< double > fHighGainAmplifierPar9
double GetFirstAdderOffset() const
utl::Validated< double > fLowGainAmplifierSaturationUp
utl::Validated< double > fADCPar5
utl::Validated< double > fSimplifiedGainLG
utl::Validated< double > fHighGainAmplifierPar5
const char * GetAmplifierLGFunctionIm() const
double GetLowGainAmplifierPar3() const
utl::Validated< double > fFirstAdderPar2
utl::Validated< double > fADCOffset
utl::Validated< double > fHighGainAmplifierSaturationDown
double GetLowGainAmplifierAdjustmentFactor() const
utl::Validated< double > fLowGainAmplifierPar9
double GetSecondAdderSaturationDown() const
utl::Validated< double > fSecondAdderPar2
double GetLowGainAmplifierPar6() const
utl::Validated< double > fSecondAdderSaturationUp
utl::Validated< double > fSimplifiedGainHG
double GetADCOffset() const
std::complex< double > ComputeTransferLowGainAmplifier(double freq) const
utl::Validated< double > fHighGainAmplifierPar7
std::complex< double > ComputeTransferSimplifiedLG(double freq) const
utl::Validated< double > fFirstAdderOffset
utl::Validated< double > fLowGainAmplifierAdjustmentFactor
utl::Validated< double > fADCPar4
utl::Validated< double > fSecondAdderPar3
utl::Validated< double > fFirstAdderSaturationDown
double GetLowGainAmplifierPar1() const
double GetLowGainAmplifierPar8() const
std::complex< double > ComputeTransferFirstAdder(double freq) const
utl::Validated< double > fLowGainAmplifierOffset
double GetSecondAdderPar4() const
double GetSimplifiedGainHG() const
utl::Validated< double > fHighGainAmplifierPar2
std::map< std::string, std::string > IndexMap
utl::Validated< double > fHighGainAmplifierPar4
double GetFirstAdderPar5() const
utl::Validated< double > fHighGainAmplifierAdjustmentFactor
double GetHighGainAmplifierPar7() const
std::complex< double > ComputeTransferHighGainAmplifier(double freq) const
double GetADCPar4() const
double GetFirstAdderSaturationUp() const
utl::Validated< double > fLowGainAmplifierPar5
std::complex< double > ComputeTransferSecondAdder(double freq) const
utl::Validated< double > fLowGainAmplifierPar3
double ApplySaturationADC(double v) const
utl::Validated< double > fHighGainAmplifierPar1
double GetHighGainAmplifierPar9() const
double ApplySaturationLowGainAmplifier(double v) const
const char * Get1stAdderFunctionIm() const
std::complex< double > ComputeTransferADC(double freq) const
double GetSecondAdderPar1() const
utl::Validated< double > fADCPar6
utl::Validated< double > fADCSaturationDown
double GetSecondAdderPar5() const
utl::Validated< double > fSimplifiedTime
double GetSecondAdderSaturationUp() const
utl::Validated< double > fLowGainAmplifierPar4
double GetSecondAdderPar2() const
std::complex< double > ComputeTransferSimplifiedHG(double freq) const
double GetLowGainAmplifierSaturationUp() const
double GetADCSaturationUp() const
double GetFirstAdderPar2() const
utl::Validated< double > fHighGainAmplifierPar6
double ApplySaturationHighGainAmplifier(double v) const
utl::Validated< double > fFirstAdderPar5
double GetHighGainAmplifierAdjustmentFactor() const
utl::Validated< double > fLowGainAmplifierPar2
double GetADCPar1() const
double GetHighGainAmplifierSaturationDown() const
double GetFirstAdderPar1() const
BackEndSiPM(int cId, const det::VManager::IndexMap &parentMap, const Module &parent)
Constructs the electronic BackEndSiPM.
utl::Validated< double > fFirstAdderPar3
utl::Validated< double > fSecondAdderPar1
utl::Validated< double > fSecondAdderPar4
utl::Validated< double > fFirstAdderPar1
double ApplySaturationFirstAdder(double v) const
utl::Validated< double > fLowGainAmplifierPar1
const char * GetAmplifierLGFunctionReal() const
High gain and low gain Amplifier transfer function.
utl::Validated< double > fHighGainAmplifierPar3
double GetSimplifiedTime() const