RdGeoCeLDFFitter.h
Go to the documentation of this file.
1 #ifndef _RdGeoCeLDFFitter_RdGeoCeLDFFitter_h_
2 #define _RdGeoCeLDFFitter_RdGeoCeLDFFitter_h_
3 
4 #include <fwk/VModule.h>
5 
6 #include <utl/CoordinateSystemPtr.h>
7 
8 #include <revt/REvent.h>
9 #include <evt/ShowerRRecData.h>
10 
11 #include <rdet/RDetector.h>
12 
13 #include <string>
14 #include <vector>
15 #include <algorithm>
16 #include <cmath>
17 
18 #include <TF2.h>
19 #include <TRandom3.h>
20 
21 
22 namespace evt {
23  class Event;
24 }
25 
26 namespace revt {
27  class Station;
28 }
29 
30 
31 namespace RdGeoCeLDFFitter {
32 
33  class CorRand {
34 
35  TRandom3* rnd = nullptr;
36  Double_t RT[2][2] = { { 0 } };
37  Double_t myMu[2] = { 0 };
38  TF2* gausFkt = nullptr;
39 
40  public:
41  CorRand(const Double_t mu[2], const Double_t sig[2], const Double_t rho, unsigned int seed)
42  {
43  myMu[0] = mu[0];
44  myMu[1] = mu[1];
45  rnd = new TRandom3(seed);
46  RT[0][0] = sig[0];
47  RT[1][0] = 0;
48  RT[0][1] = rho * sig[1];
49  RT[1][1] = sig[1] * sqrt(1 - rho * rho);
50  gausFkt = new TF2(
51  "2Dim Gauss",
52  "exp( -0.5 / (1.-[4]**2) * ( ((x-[0])/[1])**2 + ((y-[2])/[3])**2 - 2.*[4]*((x-[0])/[1])*((y-[2])/[3])) ) / ( 2.*TMath::Pi()*[1]*[3]*sqrt(1.-[4]**2) )",
53  mu[0] - 10 * sig[0], mu[0] + 10 * sig[0], mu[1] - 10 * sig[1], mu[1] + 10 * sig[1]
54  );
55  gausFkt->SetParameters(mu[0], sig[0], mu[1], sig[1], rho);
56  }
57 
58  void
59  GetRnd(double* const a, double* const b)
60  {
61  const Double_t normRnd[2] = { rnd->Gaus(0, 1), rnd->Gaus(0, 1) };
62  const Double_t corRnd[2] = {
63  myMu[0] + RT[0][0] * normRnd[0], // RT[1][0]=0!
64  myMu[1] + RT[0][1] * normRnd[0] + RT[1][1] * normRnd[1]
65  };
66  *a = corRnd[0];
67  *b = corRnd[1];
68  }
69 
70  TF2* GetFkt() { return gausFkt; }
71 
73  {
74  delete rnd;
75  delete gausFkt;
76  }
77 
78  };
79 
80  class RdGeoCeLDFFitter : public fwk::VModule {
81 
82  public:
83  fwk::VModule::ResultFlag Init() override;
84  fwk::VModule::ResultFlag Run(evt::Event& event) override;
86 
87  private:
88  bool fFixCore = false;
91  unsigned int fRandomSeed = 0;
92 
93  REGISTER_MODULE("RdGeoCeLDFFitter", RdGeoCeLDFFitter);
94  };
95 
96 }
97 
98 #endif
fwk::VModule::ResultFlag Finish() override
Finish: invoked at end of the run (NOT end of the event)
Module interface.
Definition: VModule.h:53
REGISTER_MODULE("RdGeoCeLDFFitter", RdGeoCeLDFFitter)
ResultFlag
Flag returned by module methods to the RunController.
Definition: VModule.h:60
CorRand(const Double_t mu[2], const Double_t sig[2], const Double_t rho, unsigned int seed)
fwk::VModule::ResultFlag Run(evt::Event &event) override
Run: invoked once per event.
fwk::VModule::ResultFlag Init() override
Initialize: invoked at beginning of run (NOT beginning of event)
void GetRnd(double *const a, double *const b)
Definition: XbArray.h:7

, generated on Tue Sep 26 2023.