FdProfileConstrainedGeometryFit.cc
Go to the documentation of this file.
1 #include <evt/Event.h>
2 #include <evt/ShowerFRecData.h>
3 
4 #include <fevt/Eye.h>
5 #include <fevt/EyeHeader.h>
6 #include <fevt/FEvent.h>
7 #include <fevt/EyeRecData.h>
8 
9 #include <det/Detector.h>
10 
11 #include <fdet/Eye.h>
12 #include <fdet/FDetector.h>
13 
14 #include <fwk/RunController.h>
15 
17 
18 #include "ChiZeroRegression.h"
19 #include "ProfileChi2.h"
20 
21 using namespace std;
22 using namespace fevt;
23 using namespace utl;
24 
25 
26 namespace FdProfileConstrainedGeometryFit {
27 
30 {
31  fPCGFitter.Init();
32  return eSuccess;
33 }
34 
35 
37 FdProfileConstrainedGeometryFit::Finish()
38 {
39  return eSuccess;
40 }
41 
42 
44 FdProfileConstrainedGeometryFit::Run(evt::Event& event)
45 {
46  if (!event.HasFEvent())
47  return eSuccess;
48  FEvent& fevent = event.GetFEvent();
49 
50  bool success = false;
51 
52  for (FEvent::EyeIterator eye = fevent.EyesBegin(ComponentSelector::eHasData),
53  end = fevent.EyesEnd(ComponentSelector::eHasData); eye != end; ++eye) {
54  if (!eye->HasRecData() ||
55  !eye->GetRecData().HasFRecShower() ||
56  det::Detector::GetInstance().GetFDetector().GetEye(*eye).IsVirtual() ||
57  eye->GetRecData().GetTimeFitNDof() <=0)
58  continue;
59 
60  cout << "PCGF for eye " << eye->GetId() << " ...\n";
61  if (fPCGFitter.Run(*eye)) {
62  success = true;
63  } else {
64  eye->SetStatus(ComponentSelector::eDeSelected);
65  }
66 
67  cout << "PCGF for eye " << eye->GetId() << " DONE\n";
68  }
69 
70  if (success) {
71  ++fwk::RunController::GetInstance().GetRunData().GetNamedCounters()["FdProfileConstrainedGeometryFit/Good"];
72  return eSuccess;
73  }
74 
75  return eContinueLoop;
76 }
77 
78 
79 void
80 FdProfileConstrainedGeometryFit::FitTimingOfGivenGeometry(const Eye& eye)
81  const
82 {
83  const EyeRecData& eyeRec = eye.GetRecData();
84  ChiZeroRegression chi0reg(eyeRec);
85 
86  cout << "Parameters from Axis Finder:\n"
87  "Chi0: " << eyeRec.GetChiZero() << "\n"
88  "Chi^2: " << eyeRec.GetTimeFitChiSquare() << "\t"
89  "Rp: " << eyeRec.GetRp()/m << "\t"
90  "T0: " << eyeRec.GetTZero()/ns << "\n";
91 
92  double chi2 = 0;
93  double rp = 0;
94  double t0 = 0;
95  chi0reg(eyeRec.GetChiZero(), chi2, rp, t0);
96 
97  cout << "scanning Chi_0\n";
98 
99  for (int i = 0; i <= 180; ++i) {
100  cout << i << " degrees\n";
101 
102  chi0reg(i*degree, chi2, rp, t0);
103  cout << "Rp: " << rp/m << "\t"
104  "T0: " << t0/ns << "\t"
105  "Chi^2_t: " << chi2 << "\t";
106  }
107 }
108 
109 }
const double degree
Fluorescence Detector Eye Event.
Definition: FEvent/Eye.h:29
bool HasFEvent() const
double GetChiZero() const
Definition: EyeRecData.h:85
EyeIterator EyesEnd(const ComponentSelector::Status status)
Definition: FEvent.h:66
void Init()
Initialise the registry.
boost::filter_iterator< ComponentSelector, AllEyeIterator > EyeIterator
selective Eye iterators
Definition: FEvent.h:55
const double ns
EyeIterator EyesBegin(const ComponentSelector::Status status)
Definition: FEvent.h:58
Top of Fluorescence Detector event hierarchy.
Definition: FEvent.h:33
Eye-specific shower reconstruction data.
Definition: EyeRecData.h:65
double GetTimeFitChiSquare() const
Definition: EyeRecData.h:92
ResultFlag
Flag returned by module methods to the RunController.
Definition: VModule.h:60
double GetRp() const
Definition: EyeRecData.h:87
double GetTZero() const
Definition: EyeRecData.h:83
constexpr double m
Definition: AugerUnits.h:121
fevt::EyeRecData & GetRecData()
Reconstructed data for this eye.
Definition: FEvent/Eye.cc:130

, generated on Tue Sep 26 2023.