1 | #ifndef MARS_MSupercutsCalcONOFF
|
---|
2 | #define MARS_MSupercutsCalcONOFF
|
---|
3 |
|
---|
4 | #ifndef MARS_MTask
|
---|
5 | #include "MTask.h"
|
---|
6 | #endif
|
---|
7 |
|
---|
8 | #ifndef ROOT_TArrayD
|
---|
9 | #include <TArrayD.h>
|
---|
10 | #endif
|
---|
11 |
|
---|
12 | class MParList;
|
---|
13 | class MHillas;
|
---|
14 | class MHillasSrc;
|
---|
15 | class MHillasExt;
|
---|
16 | class MNewImagePar;
|
---|
17 | class MPointingPos;
|
---|
18 | class MCerPhotEvt;
|
---|
19 | class MGeomCam;
|
---|
20 | class MHadronness;
|
---|
21 | class MHMatrix;
|
---|
22 | class MSupercuts;
|
---|
23 | class MTSupercutsApplied;
|
---|
24 |
|
---|
25 | class MSupercutsCalcONOFF : public MTask
|
---|
26 | {
|
---|
27 | private:
|
---|
28 | MHillas *fHil;
|
---|
29 | MHillasSrc *fHilSrc;
|
---|
30 | MHillasExt *fHilExt;
|
---|
31 | MNewImagePar *fNewPar;
|
---|
32 | MPointingPos *fPointPos;
|
---|
33 | MHadronness *fHadronness; //! output container for hadronness
|
---|
34 | MTSupercutsApplied *fSupercutsApplied; // output container for applied supercuts
|
---|
35 | MSupercuts *fSuper; // container for supercut parameters
|
---|
36 |
|
---|
37 | TString fHadronnessName; // name of container to store hadronness
|
---|
38 | TString fSupercutsAppliedName; // name of the container to store applied supercuts
|
---|
39 | TString fHilName;
|
---|
40 | TString fHilSrcName;
|
---|
41 | TString fHilExtName;
|
---|
42 | TString fNewParName;
|
---|
43 | TString fSuperName; // name of container for supercut parameters
|
---|
44 |
|
---|
45 | Double_t fMm2Deg; //!
|
---|
46 |
|
---|
47 | Int_t fMap[11]; //!
|
---|
48 | MHMatrix *fMatrix; //!
|
---|
49 |
|
---|
50 | Bool_t fStoreAppliedSupercuts; // Boolean variable used to decided wether to store (kTRUE) or not (kFALSE) the supercuts applied
|
---|
51 |
|
---|
52 |
|
---|
53 | // Boolean variable used to control decide wether to use theta information
|
---|
54 | // in the computation of teh dynamical cuts.
|
---|
55 | Bool_t fNotUseTheta;
|
---|
56 |
|
---|
57 | // Boolean variable used to decide wether to use dynamical cuts or static cuts
|
---|
58 | // kTRUE means that static cuts are used
|
---|
59 | Bool_t fUseStaticCuts;
|
---|
60 |
|
---|
61 |
|
---|
62 | // Boolean variable that allows to use/not use the dist info in the cuts parameterization
|
---|
63 | // kTRUE for use it.
|
---|
64 | // For the time being this variable is set in the constructor
|
---|
65 |
|
---|
66 | Bool_t fUseDist;
|
---|
67 |
|
---|
68 |
|
---|
69 |
|
---|
70 | // OFFSETS FOR THE DYNAMICAL CUTS
|
---|
71 | // Values of Size (photons), Dist (degrees) and Theta (degrees)
|
---|
72 | // for which the value of the dynamical cut is equal to the
|
---|
73 | // non dependent parameter; i.e. to the static cut.
|
---|
74 | // By adjusting these offsets the user can set the value in size,
|
---|
75 | // dist and theta for which the dynamical cuts will be given by
|
---|
76 | // the term that DOES not depend on size, dist and theta.
|
---|
77 |
|
---|
78 | // For the time being, these quantities are set in the constructor.
|
---|
79 | // In future, if they show to be useful, I will make them available
|
---|
80 | // as external variables.
|
---|
81 |
|
---|
82 | Double_t fSizeOffset; // photons
|
---|
83 | Double_t fDistOffset; // degrees NOT USED FOR THE TIME BEING
|
---|
84 | Double_t fThetaOffset; // degrees NOT USED FOR THE TIME BEING
|
---|
85 |
|
---|
86 |
|
---|
87 |
|
---|
88 |
|
---|
89 | // Variables defining upper/lower limits for some of the hillas params
|
---|
90 | // Variables in degrees !!
|
---|
91 |
|
---|
92 | Double_t fDistUpperLimit;
|
---|
93 | Double_t fLengthUpperLimit;
|
---|
94 | Double_t fWidthUpperLimit;
|
---|
95 |
|
---|
96 | Double_t fLog10ConcUpperLimit;
|
---|
97 |
|
---|
98 | Double_t fDistLowerLimit;
|
---|
99 | Double_t fLengthLowerLimit;
|
---|
100 | Double_t fWidthLowerLimit;
|
---|
101 |
|
---|
102 | // tmp
|
---|
103 |
|
---|
104 | Double_t fLeakage1UpperLimit;
|
---|
105 |
|
---|
106 | Double_t fLengthOverWidthUpperLimit;
|
---|
107 |
|
---|
108 | //endtemp
|
---|
109 |
|
---|
110 | Int_t PreProcess(MParList *pList);
|
---|
111 | Int_t Process();
|
---|
112 |
|
---|
113 | Double_t GetVal(Int_t i) const;
|
---|
114 |
|
---|
115 | Double_t CtsMCut(const Double_t* a, Double_t ls, Double_t ct,
|
---|
116 | Double_t ls2, Double_t dd2) const;
|
---|
117 | /*
|
---|
118 | Bool_t StoreSupercutsAppliedToThisEvent(Double_t lengthup, Double_t lengthlow,
|
---|
119 | Double_t widthup, Double_t widthlow,
|
---|
120 | Double_t distup, Double_t distlow);
|
---|
121 | */
|
---|
122 | public:
|
---|
123 | MSupercutsCalcONOFF(const char *hilname="MHillas",
|
---|
124 | const char *hilsrcname="MHillasSrc",
|
---|
125 | const char *name=NULL, const char *title=NULL);
|
---|
126 |
|
---|
127 | void SetHadronnessName(const TString name) { fHadronnessName = name; }
|
---|
128 | TString GetHadronnessName() const { return fHadronnessName; }
|
---|
129 |
|
---|
130 | void SetSupercutsAppliedName(const TString name) { fSupercutsAppliedName = name; }
|
---|
131 | TString GetSupercutsAppliedName() const { return fSupercutsAppliedName; }
|
---|
132 |
|
---|
133 |
|
---|
134 | void SetStoreAppliedSupercuts(Bool_t b);
|
---|
135 | Bool_t GetStoreAppliedSupercuts() {return fStoreAppliedSupercuts;}
|
---|
136 |
|
---|
137 |
|
---|
138 | void SetVariableNotUseTheta(Bool_t b);
|
---|
139 | Bool_t GetVariableNotUseTheta() { return fNotUseTheta;}
|
---|
140 |
|
---|
141 | void SetVariableUseStaticCuts(Bool_t b);
|
---|
142 | Bool_t GetVariableUseStaticCuts() { return fUseStaticCuts;}
|
---|
143 |
|
---|
144 |
|
---|
145 |
|
---|
146 | void SetHillasDistLengthWidthUpperLowerLimits(Double_t distup,
|
---|
147 | Double_t lengthup,
|
---|
148 | Double_t widthup,
|
---|
149 | Double_t distlow,
|
---|
150 | Double_t lengthlow,
|
---|
151 | Double_t widthlow);
|
---|
152 |
|
---|
153 | // Function implementing a filter for muon induced images
|
---|
154 | // (Keichi cuts October 18th 2004)
|
---|
155 |
|
---|
156 | Bool_t MuonFilter (Double_t Size,
|
---|
157 | Double_t Length);
|
---|
158 |
|
---|
159 |
|
---|
160 |
|
---|
161 | void InitMapping(MHMatrix *mat); // use quantity ThetaOrig.fVal at theta
|
---|
162 |
|
---|
163 | void StopMapping() { InitMapping(NULL); }
|
---|
164 |
|
---|
165 |
|
---|
166 |
|
---|
167 |
|
---|
168 | ClassDef(MSupercutsCalcONOFF, 0) // A class to evaluate the Supercuts
|
---|
169 | };
|
---|
170 |
|
---|
171 | #endif
|
---|
172 |
|
---|
173 |
|
---|
174 |
|
---|
175 |
|
---|
176 |
|
---|
177 |
|
---|
178 |
|
---|
179 |
|
---|
180 |
|
---|
181 |
|
---|
182 |
|
---|
183 |
|
---|