1 #include <mevt/Counter.h>
15 ERROR(
"SimData already exists - Not Replacing");
41 size_t nCandidateModules = 0;
44 if (im->IsCandidate())
47 return nCandidateModules;
55 size_t nSilentModules = 0;
61 return nSilentModules;
69 size_t nRejectedModules = 0;
75 return nRejectedModules;
85 return nCandidateModules >= 1;
96 return !nCandidateModules && nSilentModules > 0;
119 if (im->IsCandidate() && im->HasRecData() && im->GetRecData().IsSaturated())
131 if (im->HasRecData() && im->GetRecData().IsADCCalibratedLG())
143 if (im->HasRecData() && im->GetRecData().IsADCCalibratedHG())
154 im->SetRejected(reason);
170 double estimatedMuons = 0;
174 if (im->IsCandidate() && im->HasRecData()) {
175 if (im->GetRecData().IsSaturated()) {
176 std::ostringstream ss;
177 ss <<
"Number of muons cannot calculated for saturated counter " <<
fId;
181 estimatedMuons += im->GetRecData().GetNumberOfEstimatedMuons();
186 return estimatedMuons;
194 double counterVariance = 0;
198 std::ostringstream ss;
199 ss <<
"Number of muons cannot calculated for saturated counter " <<
fId;
205 if (im->IsCandidate() && im->HasRecData()) {
206 const double moduleSigma = im->GetRecData().GetNumberOfMuonsErrorHigh();
207 counterVariance += (moduleSigma*moduleSigma);
211 return sqrt(counterVariance);
219 double counterVariance = 0;
223 std::ostringstream ss;
224 ss <<
"Number of muons cannot calculated for saturated counter " <<
fId;
230 if (im->IsCandidate() && im->HasRecData()) {
231 const double moduleSigma = im->GetRecData().GetNumberOfMuonsErrorLow();
232 counterVariance += (moduleSigma*moduleSigma);
236 return sqrt(counterVariance);
247 if (im->IsCandidate() && im->HasRecData())
248 limit += im->GetRecData().GetNumberOfMuonsLowLimit();
258 double estimatedMuons = 0;
262 if (im->IsCandidate() && im->HasRecData()) {
263 if (im->GetRecData().IsSaturated()) {
264 std::ostringstream ss;
265 ss <<
"Mean muons cannot calculated for saturated counter " <<
fId;
269 estimatedMuons += im->GetRecData().GetMeanMuons();
274 return estimatedMuons;
282 double counterVariance = 0;
286 std::ostringstream ss;
287 ss <<
"Mean muons cannot calculated for saturated counter " <<
fId;
293 if (im->IsCandidate() && im->HasRecData()) {
294 const double moduleSigma = im->GetRecData().GetMeanMuonsErrorHigh();
295 counterVariance += (moduleSigma*moduleSigma);
299 return sqrt(counterVariance);
307 double counterVariance = 0;
311 std::ostringstream ss;
312 ss <<
"Mean muons cannot calculated for saturated counter " <<
fId;
318 if (im->IsCandidate() && im->HasRecData()) {
319 const double moduleSigma = im->GetRecData().GetMeanMuonsErrorLow();
320 counterVariance += (moduleSigma*moduleSigma);
324 return sqrt(counterVariance);
335 if (im->IsCandidate() && im->HasRecData())
336 limit += im->GetRecData().GetMeanMuonsLowLimit();
346 double counterArea = 0;
349 if (im->IsCandidate() && im->HasRecData())
350 counterArea += im->GetRecData().GetActiveArea();
360 double counterArea = 0;
363 if (im->HasRecData() && im->GetRecData().IsADCCalibratedLG())
364 counterArea += im->GetRecData().GetActiveArea();
374 double counterArea = 0;
377 if (im->HasRecData() && im->GetRecData().IsADCCalibratedHG())
378 counterArea += im->GetRecData().GetActiveArea();
390 std::ostringstream ss;
391 ss <<
"Density of muons cannot calculated for saturated counter " <<
fId;
408 std::ostringstream ss;
409 ss <<
"Density of muons cannot calculated for saturated counter " <<
fId;
426 std::ostringstream ss;
427 ss <<
"Density of muons cannot calculated for saturated counter " <<
fId;
441 std::ostringstream ss;
444 ss <<
"Mean density of muons cannot calculated for saturated counter " <<
fId;
462 std::ostringstream ss;
463 ss <<
"Mean density of muons cannot calculated for saturated counter " <<
fId;
480 std::ostringstream ss;
481 ss <<
"Mean density of muons cannot calculated for saturated counter " <<
fId;
496 double windowsOn = 0;
500 if (im->IsCandidate() && im->HasRecData())
501 windowsOn += im->GetRecData().GetNumberOfChannelsOn();
512 double ldfResidual = 0;
513 unsigned int nModules = 0;
516 if (im->IsCandidate() && im->HasRecData() && !im->GetRecData().IsSaturated()) {
517 ldfResidual += im->GetRecData().GetLDFResidual();
521 return ldfResidual / nModules;
533 double estimatedMuons = 0;
537 std::ostringstream ss;
538 ss <<
"Number of muons with ADC LG cannot calculated for counter with no calibrated modules " <<
fId;
544 if (im->HasRecData() && im->GetRecData().IsADCCalibratedLG())
545 estimatedMuons += im->GetRecData().GetNumberOfEstimatedMuonsADCLG();
547 return estimatedMuons;
555 double counterVariance = 0;
559 std::ostringstream ss;
560 ss <<
"Number of muons with ADC LG cannot calculated for counter with no calibrated modules " <<
fId;
566 if (im->HasRecData() && im->GetRecData().IsADCCalibratedLG()) {
567 const double moduleSigma = im->GetRecData().GetNumberOfMuonsADCErrorHighLG();
568 counterVariance += (moduleSigma*moduleSigma);
571 return sqrt(counterVariance);
579 double counterVariance = 0;
583 std::ostringstream ss;
584 ss <<
"Number of muons with ADC LG cannot calculated for counter with no calibrated modules " <<
fId;
590 if (im->HasRecData() && im->GetRecData().IsADCCalibratedLG()) {
591 const double moduleSigma = im->GetRecData().GetNumberOfMuonsADCErrorLowLG();
592 counterVariance += (moduleSigma*moduleSigma);
595 return sqrt(counterVariance);
605 std::ostringstream ss;
606 ss <<
"Density of muons cannot be calculated with ADC LG for counter with no calibrated modules " <<
fId;
623 std::ostringstream ss;
624 ss <<
"Density of muons cannot be calculated with ADC LG for counter with no calibrated modules " <<
fId;
641 std::ostringstream ss;
642 ss <<
"Density of muons cannot be calculated with ADC LG for counter with no calibrated modules " <<
fId;
661 double estimatedMuons = 0;
665 std::ostringstream ss;
666 ss <<
"Number of muons with ADC HG cannot calculated for counter with no calibrated modules" <<
fId;
672 if (im->HasRecData() && im->GetRecData().IsADCCalibratedHG())
673 estimatedMuons += im->GetRecData().GetNumberOfEstimatedMuonsADCHG();
675 return estimatedMuons;
683 double counterVariance = 0;
687 std::ostringstream ss;
688 ss <<
"Number of muons with ADC HG cannot calculated for counter with no calibrated modules " <<
fId;
694 if (im->HasRecData() && im->GetRecData().IsADCCalibratedHG()) {
695 const double moduleSigma = im->GetRecData().GetNumberOfMuonsADCErrorHighHG();
696 counterVariance += (moduleSigma*moduleSigma);
699 return sqrt(counterVariance);
707 double counterVariance = 0;
711 std::ostringstream ss;
712 ss <<
"Number of muons with ADC HG cannot calculated for counter with no calibrated modules " <<
fId;
718 if (im->HasRecData() && im->GetRecData().IsADCCalibratedHG()) {
719 const double moduleSigma = im->GetRecData().GetNumberOfMuonsADCErrorLowHG();
720 counterVariance += (moduleSigma*moduleSigma);
723 return sqrt(counterVariance);
732 std::ostringstream ss;
733 ss <<
"Density of muons cannot be calculated with ADC HG for counter with no calibrated modules " <<
fId;
749 std::ostringstream ss;
750 ss <<
"Density of muons cannot be calculated with ADC HG for counter with no calibrated modules " <<
fId;
766 std::ostringstream ss;
767 ss <<
"Density of muons cannot be calculated with ADC HG for counter with no calibrated modules " <<
fId;
ComponentIterator Begin()
bool IsCandidate() const
The muon counter status.
double GetNumberOfMuonsErrorHighHG() const
double GetNumberOfMuonsErrorHighLG() const
InternalModuleCollection fModules
double GetLDFResidual() const
The LDF residual of the counter is calculated as the sum of the estimated muons of the associated mod...
double GetMeanMuonsLowLimit() const
double GetNumberOfEstimatedMuonsLG() const
The number of estimated muons with the ADC is calculated as the sum of the estimated muons of the ass...
bool HasRecData() const
Counter is flagged has having reconstructed data if at least one of its associated modules has recons...
size_t CountRejectedModules() const
double GetMeanMuonDensityErrorLow() const
double GetMeanMuonDensityErrorHigh() const
bool IsSaturated() const
Check if the counter is "hardware" saturated (limit imposed by detector segmentation) ...
double GetActiveAreaLG() const
double GetNumberOfMuonsErrorHigh() const
bool IsADCCalibratedLG() const
Check if the counter ADC LG channel is calibrated.
bool IsRejected() const
Check if the counter is rejected.
double GetMeanMuonDensity() const
double GetMuonDensityHG() const
bool IsSilent() const
Check if the counter is silent.
double GetMuonDensityErrorLowLG() const
double GetMuonDensityErrorHighLG() const
double GetActiveAreaHG() const
int GetNumberOf() const
Query quantity.
void SetSilent()
Set the status of all modules in this counter to silent. This is used if the associated tank does not...
double GetActiveArea() const
double GetMuonDensity() const
The density measured by a counter is the calculated as the number of estimated muons over the active ...
double GetMeanMuons() const
bool IsADCCalibratedHG() const
Check if the counter ADC HG channel is calibrated.
double GetMuonDensityErrorLowHG() const
double GetNumberOfMuonsLowLimit() const
The lower limit to the number of muons in a counter.
#define DEBUGLOG(message)
Macro for logging debugging messages.
size_t CountSilentModules() const
double GetMuonDensityErrorHighHG() const
unsigned int GetNumberOfChannelsOn() const
double GetNumberOfMuonsErrorLowHG() const
#define WARNING(message)
Macro for logging warning messages.
InternalModuleCollection::ComponentIterator ModuleIterator
size_t CountCandidateModules() const
Count the number of modules in the counter by status.
Counter level simulation data.
double GetMuonDensityErrorHigh() const
double GetNumberOfMuonsErrorLow() const
void SetRejected(const std::string &reason="")
Set the status of all modules in this counter to rejected. As described for the muon counter status...
double GetMeanMuonsErrorLow() const
double GetNumberOfEstimatedMuons() const
The number of estimated muons of the counter is calculated as the sum of the estimated muons of the a...
double GetMeanMuonsErrorHigh() const
InternalModuleCollection::ComponentConstIterator ModuleConstIterator
double GetMuonDensityLG() const
double GetMuonDensityErrorLow() const
#define ERROR(message)
Macro for logging error messages.
double GetNumberOfEstimatedMuonsHG() const
double GetNumberOfMuonsErrorLowLG() const
utl::ShadowPtr< CounterSimData > fSimData