SdSimMuonNumberFitter.h
Go to the documentation of this file.
1 #ifndef _SdSimMuonNumberFitter_h_
2 #define _SdSimMuonNumberFitter_h_
3 
13 #include <fwk/VModule.h>
14 #include <evt/Event.h>
15 
16 #include <utl/Point.h>
17 #include <utl/Vector.h>
18 #include <utl/CoordinateSystemPtr.h>
19 #include <utl/TimeStamp.h>
20 
21 #include <vector>
22 #include <fstream>
23 
24 
25 namespace evt {
26  class Event;
27 }
28 
29 namespace sevt {
30  class Station;
31 }
32 
33 namespace sdet {
34  class MuonProfile;
35 }
36 
37 class TVirtualPad;
38 
39 namespace SdSimMuonNumberFitterNS {
40 
41  struct StationData {
42  int fId;
44  unsigned int fNMuon;
46  };
47 
48 
49  class Likelihood {
50  public:
51  double fTheta;
52  double fPhi;
53 
55  int fId;
56  double fX,fY;
57  double fTheta;
58  unsigned int fNMuon;
59  InternalStationData(const int id, const double x, const double y, const double theta, const unsigned int nmu)
60  : fId(id), fX(x), fY(y), fTheta(theta), fNMuon(nmu) { }
61  };
62 
63  typedef std::vector<InternalStationData> InternalStationList;
65 
66  public:
68 
69  void SetTheta(const double theta) { fTheta = theta; }
70  void SetPhi(const double phi) { fPhi = phi; }
71 
72  void MinuitFnc(int& nPar, double* const grad, double& value, double* const par, const int flag);
73 
74  void AddStation(const int id, const utl::Point& sPos, const utl::Point& showerOrigin,
75  const utl::CoordinateSystemPtr& coreCS, const unsigned int nmuon);
76 
77  void GetChi2(double& chi2, unsigned int& ndof, const double n19, const double corex, const double corey);
78 
79  unsigned int GetNumberOfStations() { return fStationList.size(); }
80  };
81 
82 
84 
85  public:
87  virtual ~SdSimMuonNumberFitter();
88 
92 
94 
95  private:
97 
98  double fSilentRadius;
99 
101 
103  double fGamma;
104 
106 
107  utl::Point FindMuonDensityBaryCenter(const std::vector<StationData>& stationList) const;
108 
109  static void N19FitFnc(int& nPar, double* const grad, double& value, double* const par, const int flag);
110 
111  bool EnergyFit(const utl::CoordinateSystemPtr& localCS,
112  utl::Point& core, utl::Vector& coreError, double& n19, double& n19Error,
113  double& logLikelihoodMin, const bool fixedCore) const;
114 
115  void DrawLogLikelihood(TVirtualPad* const pad, const double n19, const char* const comment) const;
116 
117  void DrawMuonDensity(TVirtualPad* const pad, const double n19, const double theta, const double phi, const char* const comment) const;
118 
119  REGISTER_MODULE("SdSimMuonNumberFitter",SdSimMuonNumberFitter) ;
120 
121  };
122 
123 }
124 
125 
126 #endif
Point object.
Definition: Point.h:32
void AddStation(const int id, const utl::Point &sPos, const utl::Point &showerOrigin, const utl::CoordinateSystemPtr &coreCS, const unsigned int nmuon)
InternalStationData(const int id, const double x, const double y, const double theta, const unsigned int nmu)
void DrawLogLikelihood(TVirtualPad *const pad, const double n19, const char *const comment) const
bool EnergyFit(const utl::CoordinateSystemPtr &localCS, utl::Point &core, utl::Vector &coreError, double &n19, double &n19Error, double &logLikelihoodMin, const bool fixedCore) const
A TimeStamp holds GPS second and nanosecond for some event.
Definition: TimeStamp.h:110
boost::shared_ptr< const CoordinateTransformer > CoordinateSystemPtr
Shared pointer for coordinate systems.
utl::Point FindMuonDensityBaryCenter(const std::vector< StationData > &stationList) const
void DrawMuonDensity(TVirtualPad *const pad, const double n19, const double theta, const double phi, const char *const comment) const
fwk::VModule::ResultFlag Finish()
Finish: invoked at end of the run (NOT end of the event)
fwk::VModule::ResultFlag Init()
Initialize: invoked at beginning of run (NOT beginning of event)
Module interface.
Definition: VModule.h:53
static void N19FitFnc(int &nPar, double *const grad, double &value, double *const par, const int flag)
fwk::VModule::ResultFlag Run(evt::Event &event)
Run: invoked once per event.
void GetChi2(double &chi2, unsigned int &ndof, const double n19, const double corex, const double corey)
std::vector< InternalStationData > InternalStationList
ResultFlag
Flag returned by module methods to the RunController.
Definition: VModule.h:60
Vector object.
Definition: Vector.h:30
const int nPar
Definition: GeomAsym.h:37
void MinuitFnc(int &nPar, double *const grad, double &value, double *const par, const int flag)
REGISTER_MODULE("SdSimMuonNumberFitter", SdSimMuonNumberFitter)
Definition: XbArray.h:7

, generated on Tue Sep 26 2023.