1 | #ifndef MARS_MMuonCalibPar
|
---|
2 | #define MARS_MMuonCalibPar
|
---|
3 |
|
---|
4 | #ifndef MARS_MParContainer
|
---|
5 | #include "MParContainer.h"
|
---|
6 | #endif
|
---|
7 |
|
---|
8 | #ifndef ROOT_TH1
|
---|
9 | #include <TH1.h>
|
---|
10 | #endif
|
---|
11 |
|
---|
12 | class MGeomCam;
|
---|
13 | class MCerPhotEvt;
|
---|
14 | class MMuonSearchPar;
|
---|
15 |
|
---|
16 | class MMuonCalibPar : public MParContainer
|
---|
17 | {
|
---|
18 | private:
|
---|
19 | Float_t fArcLength; // An arc length of a muon along the arc [deg.]
|
---|
20 | Float_t fArcPhi; // A opening angle of a muon arc [deg.]
|
---|
21 | Float_t fArcWidth; // A width of a muon [deg.] (1 sigma of gaussian fit)
|
---|
22 | Float_t fChiArcPhi; // A chisquare value of the cosine fit for arc phi
|
---|
23 | Float_t fChiArcWidth; // A chisquare value of the cosine fit for arc wid
|
---|
24 | Float_t fMuonSize; // A SIZE of muon which is defined as a SIZE around the estimated circle
|
---|
25 | Float_t fEstImpact; // An estimated impact parameter from the photon distribution along the arc image
|
---|
26 | Float_t fMargin; // margin to evaluate muons [mm]. The defaut value is 60 mm, corresponding to 0.2 deg. This value can be changed by using the function of SetMargin
|
---|
27 | Bool_t fUseUnmap; // This is a flag to know the Unmapped pixels are used. Refer to the class of MImgCleanStd
|
---|
28 | Float_t fPeakPhi; // The angle which indicates the peak position in the estimated circle
|
---|
29 | Float_t fArcPhiThres; // The threshold value to define arc phi
|
---|
30 | Float_t fArcWidthThres; // The threshold value to define arc width
|
---|
31 | Int_t fArcPhiBinNum; // The bin number for the histogram of arc phi. You may change this value. However, if you change this, YOU ALSO HAVE TO CHANGE THE THRESHOLD VALUE TO GET ARC LENGTH.
|
---|
32 | Int_t fArcWidthBinNum; // The bin number for the histogram of arc wid
|
---|
33 | Float_t fArcPhiHistStartVal; // The starting value for the histogram of arc phi
|
---|
34 | Float_t fArcPhiHistEndVal; // The end value for the histogram of arc phi
|
---|
35 | Float_t fArcWidthHistStartVal; // The starting value for the histogram of arc width
|
---|
36 | Float_t fArcWidthHistEndVal; // The end value for the histogram of arc width
|
---|
37 | Bool_t fEnableImpactCalc; // If true, the impact calculation will be done, which will consume a lot of time.
|
---|
38 | Bool_t fDisablePreCuts; // If true, the pre cuts to select muons for the calibration will be disabled.
|
---|
39 | Bool_t fUseCleanForWidth; // If true, the only signal after image cleaningwill be used for the histogram of arc width
|
---|
40 |
|
---|
41 | TH1F *fHistPhi; // Histogram of photon distribution along the arc.
|
---|
42 | TH1F *fHistWidth; // Histogram of radial photon distribution of the arc.
|
---|
43 |
|
---|
44 | public:
|
---|
45 | MMuonCalibPar(const char *name=NULL, const char *title=NULL);
|
---|
46 | ~MMuonCalibPar();
|
---|
47 |
|
---|
48 | void Reset();
|
---|
49 |
|
---|
50 | Float_t GetArcLength() const { return fArcLength; }
|
---|
51 | Float_t GetArcPhi() const { return fArcPhi; }
|
---|
52 | Float_t GetArcWidth() const { return fArcWidth; }
|
---|
53 | Float_t GetChiArcPhi() const { return fChiArcPhi; }
|
---|
54 | Float_t GetChiArcWidth() const { return fChiArcWidth; }
|
---|
55 | Float_t GetMargin() const { return fMargin; }
|
---|
56 | Float_t GetMuonSize() const { return fMuonSize; }
|
---|
57 | Float_t GetEstImpact() const { return fEstImpact; }
|
---|
58 | Bool_t IsUseUnmap() const { return fUseUnmap; }
|
---|
59 | Float_t GetPeakPhi() const { return fPeakPhi; }
|
---|
60 | Float_t GetArcPhiThres() const { return fArcPhiThres; }
|
---|
61 | Float_t GetArcWidthThres() const { return fArcWidthThres; }
|
---|
62 | Float_t GetArcPhiBinNum() const { return fArcPhiBinNum; }
|
---|
63 | Float_t GetArcWidthBinNum() const { return fArcWidthBinNum; }
|
---|
64 | TH1F *GetHistPhi() { return fHistPhi; }
|
---|
65 | TH1F *GetHistWidth() { return fHistWidth; }
|
---|
66 |
|
---|
67 | void SetMargin(Float_t margin) { fMargin = margin; }
|
---|
68 | void SetArcPhiThres(Float_t thres) { fArcPhiThres = thres; }
|
---|
69 | void SetArcWidthThres(Float_t thres) { fArcWidthThres = thres; }
|
---|
70 | void SetArcPhiBinNum(Int_t num) { fArcPhiBinNum = num; }
|
---|
71 | void SetArcWidthBinNum(Int_t num) { fArcWidthBinNum = num; }
|
---|
72 |
|
---|
73 | void EnableImpactCalc() { fEnableImpactCalc = kTRUE; }
|
---|
74 | Bool_t IsEnableImpactCalc() { return fEnableImpactCalc; }
|
---|
75 | void DisablePreCuts() { fDisablePreCuts = kTRUE; }
|
---|
76 | Bool_t IsDisablePreCuts() { return fDisablePreCuts; }
|
---|
77 | void UseCleanForWidth() { fUseCleanForWidth = kTRUE; }
|
---|
78 | Bool_t IsUseCleanForWidth() { return fUseCleanForWidth; }
|
---|
79 |
|
---|
80 | void Print(Option_t *opt=NULL) const;
|
---|
81 |
|
---|
82 | void FillHist(const MGeomCam &geom, const MCerPhotEvt &evt,
|
---|
83 | const MMuonSearchPar &musearch);
|
---|
84 | void CalcPhi(const MGeomCam &geom, const MCerPhotEvt &evt,
|
---|
85 | const MMuonSearchPar &musearch);
|
---|
86 | void CalcImpact(const MGeomCam &geom, const MMuonSearchPar &musearch,
|
---|
87 | Int_t effbinnum, Float_t startfitval, Float_t endfitval);
|
---|
88 | Float_t CalcWidth(const MGeomCam &geom, const MCerPhotEvt &evt,
|
---|
89 | const MMuonSearchPar &musearch);
|
---|
90 | Int_t Calc(const MGeomCam &geom, const MCerPhotEvt &evt,
|
---|
91 | MMuonSearchPar &musearch, const Float_t *cuts);
|
---|
92 |
|
---|
93 | ClassDef(MMuonCalibPar, 1) // Container to hold muon calibration parameters
|
---|
94 | };
|
---|
95 |
|
---|
96 | #endif
|
---|