2 #include <utl/ErrorLogger.h>
3 #include <utl/AugerUnits.h>
4 #include <utl/Reader.h>
5 #include <fwk/CentralConfig.h>
6 #include <fwk/RandomEngineRegistry.h>
7 #include <utl/RandomEngine.h>
8 #include <CLHEP/Random/RandGauss.h>
10 #include <det/Detector.h>
13 #include <fdet/Telescope.h>
14 #include <fdet/Camera.h>
15 #include <fdet/Channel.h>
16 #include <fdet/Pixel.h>
17 #include <fdet/FDetector.h>
19 #include <evt/Event.h>
20 #include <fevt/FEvent.h>
22 #include <fevt/EyeRecData.h>
23 #include <fevt/EyeHeader.h>
24 #include <fevt/Telescope.h>
25 #include <fevt/TelescopeRecData.h>
26 #include <fevt/Pixel.h>
27 #include <fevt/PixelRecData.h>
28 #include <utl/TraceAlgorithm.h>
32 using CLHEP::RandGauss;
40 namespace FdNoiseAdderKG {
45 const fdet::FDetector& detFD = det::Detector::GetInstance().GetFDetector();
48 const int eyeId = detPixel.
GetEyeId();
59 double meanVariance = 0;
66 telIter->PixelsBegin(ComponentSelector::eHasData);
67 pixIter != telIter->PixelsEnd(ComponentSelector::eHasData);
74 meanVariance /= nVariance;
79 FdNoiseAdder::FdNoiseAdder()
84 FdNoiseAdder::~FdNoiseAdder()
98 const double lgTargetVariance =
100 fTargetVariance =
pow(10, lgTargetVariance);
111 RandomEngineRegistry::GetInstance().Get(RandomEngineRegistry::ePhysics);
113 FEvent& fdEvent =
event.GetFEvent();
116 fdEvent.
EyesBegin(ComponentSelector::eHasData);
117 eyeIter!=fdEvent.
EyesEnd(ComponentSelector::eHasData);
122 msg <<
" Eye " << eyeIter->GetId() <<
" <Var> = " << meanVariance;
124 if (meanVariance > fTargetVariance) {
125 INFO(
" target < actual variance ");
128 const double toAdd = fTargetVariance - meanVariance;
134 telIter->PixelsBegin(ComponentSelector::eHasData);
135 pixIter != telIter->PixelsEnd(ComponentSelector::eHasData);
141 const double adcOrig = trace[i] / calConst;
142 const double adcNoise = RandGauss::shoot(&theRandom.
GetEngine(),
144 trace[i] = (adcOrig + adcNoise) * calConst;
155 msg <<
" Eye " << eyeIter->GetId() <<
" final <Var> = "
165 FdNoiseAdder::Finish()
double StandardDeviation(const std::vector< double > &v, const double mean)
double CalcMeanVariance(const fevt::Eye &eye)
double GetRMS() const
Get the baseline RMS of the trace.
unsigned int GetTelescopeId() const
1..6 for normal FD, 1..3 for HEAT
Fluorescence Detector Eye Event.
RandomEngineType & GetEngine()
SizeType GetStop() const
Get valid data stop bin.
const Pixel & GetPixel(const fevt::Pixel &eventPixel) const
Get fdet::Pixel from fevt::Channel.
EyeIterator EyesEnd(const ComponentSelector::Status status)
double GetEndToEndCalibrationAtReferenceWavelength() const
#define INFO(message)
Macro for logging informational messages.
void Init()
Initialise the registry.
const Eye & GetEye(const unsigned int eyeId) const
Find eye by numerical Id.
boost::filter_iterator< ComponentSelector, AllEyeIterator > EyeIterator
selective Eye iterators
Branch GetChild(const std::string &childName) const
Get child of this Branch by child name.
double pow(const double x, const unsigned int i)
Detector description interface for FDetector-related data.
const Pixel & GetPixel(const unsigned int pixelId) const
Get Pixel by id, throw utl::NonExistentComponentException if n.a.
Class representing a document branch.
utl::TraceD & GetPhotonTrace(const FdConstants::LightSource source=FdConstants::eTotal)
Fluorescence Detector Pixel event.
unsigned int GetChannelId() const
Wraps the random number engine used to generate distributions.
TelescopeIterator TelescopesEnd()
first available tel of status eHasData (DEPRECATED)
const Telescope & GetTelescope(const unsigned int telescopeId) const
Find Telescope by numerical Id.
EyeIterator EyesBegin(const ComponentSelector::Status status)
boost::filter_iterator< ComponentSelector, ConstAllPixelIterator > ConstPixelIterator
boost::filter_iterator< ComponentSelector, AllTelescopeIterator > TelescopeIterator
selective Telescope iterators
Top of Fluorescence Detector event hierarchy.
TelescopeIterator TelescopesBegin()
first available tel of status eHasData (DEPRECATED)
boost::filter_iterator< ComponentSelector, AllPixelIterator > PixelIterator
selective Pixel iterators
ResultFlag
Flag returned by module methods to the RunController.
SizeType GetStart() const
Get valid data start bin.
Main configuration utility.
void SetRMS(const double rms)
double GetCalibConst(const fevt::Pixel &pixel)
Fluorescence Detector Pixel Reconstructed Data.
boost::filter_iterator< ComponentSelector, ConstAllTelescopeIterator > ConstTelescopeIterator
unsigned int GetEyeId() const
1..5 (4x normal FD, 1x HEAT)
utl::Branch GetTopBranch(const std::string &id)
Get top branch for moduleConfigLink with given id (XML files)