/[PAMELA software]/calo/flight/CaloElectron/inc/CaloElectron.h
ViewVC logotype

Annotation of /calo/flight/CaloElectron/inc/CaloElectron.h

Parent Directory Parent Directory | Revision Log Revision Log


Revision 1.1.1.1 - (hide annotations) (download) (vendor branch)
Fri Mar 13 15:23:20 2009 UTC (15 years, 8 months ago) by pam-fi
Branch: MAIN, pamela
CVS Tags: beta, HEAD
Changes since 1.1: +0 -0 lines
File MIME type: text/plain
CaloElectron beta version

1 pam-fi 1.1 #ifndef caloelectron_h
2     #define caloelectron_h
3    
4    
5     #if !defined(__CINT__) || defined(__MAKECINT__)
6    
7     #include <PamLevel2.h>
8    
9     //#include <TMinuit.h>
10     #include <TPaveStats.h>
11     #include <TStyle.h>
12     #include <TSystem.h>
13     #include <TCanvas.h>
14     #include <TGraphErrors.h>
15     #include <TH1F.h>
16     #include <TF2.h>
17     #include <TH2F.h>
18     #include <TProfile.h>
19     #include <TBenchmark.h>
20    
21     #include <iostream>
22     #include <iomanip>
23     using namespace std;
24    
25     #endif
26    
27     //CaloLevel1* cl1;
28    
29     #define NTAUBINMAX 100
30    
31     #define WX0 0.350 //cm
32     #define WTICK 0.26 //cm
33     #define PITCH 0.244 //cm
34     #define DEAD 0.096 //cm
35     #define GLUE 0.05 //cm
36    
37     #define CALIBNBIN 600
38     #define CALIBRANGE 15.//cm
39    
40     double fradpro(Double_t *xi, Double_t *parmin);
41    
42     ///////////////////////////////////////////////////
43     ///
44     ///
45     /// CLASS FOR INITIALIZATIONS & PARAMETERS
46     ///
47     ///
48     ///////////////////////////////////////////////////
49    
50     class CaloElectron_parameters : public TObject{
51    
52     private:
53    
54     CaloElectron_parameters(){ SetDefault(); };
55    
56     static CaloElectron_parameters * _parameters;
57    
58     public:
59    
60     static CaloElectron_parameters *Get(){
61     if(_parameters==0) {
62     // cout << "**NEW**"<<endl;
63     _parameters = new CaloElectron_parameters();
64     }
65     return _parameters;
66     }
67    
68     // ------
69     //general
70     // ------
71    
72     bool debug;
73    
74     int isimu; //simulation flag
75     int dolongfit; //longitudinal-fit flag
76     int dolatcorr; //lateral-correction flag
77     int calibmode; //calibration flag
78    
79     float TAUMAX; // max longitudinal depth to evaluate qtot (TAU=t/T)
80     float RMAX; // max radius around the track to evaluate qtot
81    
82     float RMAXsp; // radius around the track to integrate the profile
83    
84     int ipmin; // first plane (0-21)
85     int ipmax; // last plane (0-21)
86    
87     bool maskpl[22][2]; // plane masks
88    
89     CaloLevel1* cl1;
90    
91     // -----------------------
92     // plots of energy deposit
93     // -----------------------
94     TH2F *h_qtot[2]; //matrix of energy deposits (measured) 192x22
95     TH2F *h_qfit[2]; //matrix of energy deposits (fit) 192x22
96    
97     // --------------------------------------
98     // parameters for lateral profile (fixed)
99     // --------------------------------------
100    
101     float file_rt[12][3];
102     float file_rc[12][3];
103     float file_p[12][3];
104     float file_tau[12];
105    
106     void Dump();
107    
108     void SetCalo(int icalo,int notused);
109     void SetPar();
110     void SetPar(TString pathx,TString pathyd,TString pathyp);
111     void SetRMAX(float setRMAX) {RMAX = setRMAX;};
112     void SetRMAXsp(float setRMAX) {RMAXsp = setRMAX;};
113     void SetTAUMAX(float setTAUMAX){TAUMAX = setTAUMAX;};
114     void Setsimu(int isetsimu) {isimu=isetsimu; SetPar();};
115     void SetLongitudinalFit(int isetdolongfit) {dolongfit = isetdolongfit;};
116     void SetLateralCorrection(int isetdolatcorr) {dolatcorr = isetdolatcorr;};
117     void SetCalibrationMode(int icalibmode){calibmode=icalibmode;};
118     void SetDebug(bool isetdebug) {debug = isetdebug;};
119     //
120     void SetCaloLevel1(CaloLevel1 *cl1in) {cl1 = cl1in; };
121    
122     void SetDefault();
123    
124    
125     // --------------------------------------
126     // tools for calibration (NTAUBINMAX)
127     // --------------------------------------
128     //
129     TH2F *h_qtot_tau[100][3];///< profile histos for x,yodd,yeven
130     TH1F *h_qtot_tau_wav[100][3];///< profile histos for x,yodd,yeven (weighted average)
131     double summW[100][3][1000];
132     double summWF[100][3][1000];
133     //
134     float par_rt[100][3];
135     float par_rc[100][3];
136     float par_p[100][3];
137     int par_ntau;
138     float par_taubin[101];
139     //
140     void Calibration_SetTools();
141     void Calibration_SetTools(int ntau, float* taubin);
142     void Calibration_Fit();
143     void Calibration_Save(TFile* file);
144     void Calibration_Load(TFile* file);
145    
146     ClassDef(CaloElectron_parameters,2);
147    
148     };
149    
150     ///////////////////////////////////////////////////
151     ///
152     ///
153     /// CLASS INPLEMENTATION
154     ///
155     ///
156     ///////////////////////////////////////////////////
157     class CaloElectron : public TObject{
158    
159     private:
160    
161     public:
162    
163    
164     // -----------
165     // shower axis
166     // -----------
167     float trkcoordx[22][2]; ///< track coordinates (PAMELA r.s.)
168     float trkcoordy[22][2]; ///< track coordinates (PAMELA r.s.)
169     float trkstrip[22][2]; ///< strip traversed by the track
170     float tgx,tgy,tg;
171     // --------------
172     // energy deposit
173     // --------------
174     float qtot; ///< total collected charge
175     float qplane0[22][2]; ///< collected charge (within RMAX & TAUMAX)
176     float qplane1[22][2]; ///< corrected charge (lateral leakage & gaps)
177     float qplanefit[22][2]; ///< fitted values
178     float tplane[22][2]; ///< shower depth (in units of radiation lenth)
179     // --------------------------------
180     // parameters from longitudinal fit
181     // --------------------------------
182     float chi2__l; // output longitudinal fit (chi2)
183     float par__l[4]; // parameters (E,alpha,T,t0)
184     int err__l; // minuit flag (0=ok ecc...)
185     float corr__l; // longitudinal correction factor
186    
187     float chi2; ///< global chi2 (lateral+longitudinal)
188    
189     // --------------
190     // new variables
191     // --------------
192     float RMS[22][2];
193     float SKEW[22][2];
194     float KURT[22][2];
195     float TAU[22][2];
196    
197    
198     CaloElectron(){ Reset(); };
199     CaloElectron(PamLevel2 *l2, int ntr){ Reset(); Set(l2,ntr); };
200    
201     /* CaloElectron(){ Reset(); SetDefault(); SetPar(); }; */
202     /* CaloElectron(PamLevel2 *l2, int ntr){ Reset(); SetPar(); Set(l2,ntr); SetDefault();}; */
203     /* CaloElectron(PamLevel2 *l2){ Reset(); SetPar(); Set(l2); SetDefault();}; */
204    
205     ~CaloElectron(){ Reset(); };
206    
207     void Reset();
208     void Clear(){ Reset(); };
209     void Delete(){ Reset(); };
210    
211     bool Set(CaloLevel1*,float tracoo[][2]);//main set
212     bool Set(CaloLevel1*,CaloTrkVar*);
213     bool Set(PamLevel2*,int);
214    
215     // bool Set(PamLevel2* l2){ return Set(l2,0); };
216     // bool Set(CaloLevel1*,float tracoo[][2]);
217     // bool Set(CaloLevel1*,CaloLevel2*);
218    
219     // -------------------------------------
220     // methods to perform lateral correction
221     // -------------------------------------
222     double GetLateralCorrection(double,double,int,int);
223     double GetLateralCorrection(double,double,TF2*,int);
224     float ApplyLateralCorrection(float);
225     void GetProfile(int,int,float xx[],float qq[],float errxx[],float errqq[]);
226     // float GetLateralFactor(){return corr;};
227     TGraphErrors* GetGraph_Lateral(int, int);
228     TGraphErrors* GetFunc_Lateral(int,int);
229     // ------------------------------------------
230     // methods to perform longitudinal correction
231     // ------------------------------------------
232     int ApplyLongitudinalFit(int longto);//return the ierflg value of gminuit minimization
233     float GetLongitudinalCorrection();
234     // float GetLongitudinalFactor(){return corr__l;};
235     // float GetLongitudinalFcnout(){return chi2__l;};
236     float GetIerflg(){return err__l;};
237     TGraphErrors* GetGraph_Longitudinal();
238     TGraphErrors* GetGraph_Longitudinal_Fit();
239     TGraphErrors* GetGraph_Longitudinal_Integral();
240     TGraphErrors* GetGraph_Longitudinal_Integral_Fit();
241     TF1* GetFunc_Longitudinal();
242     float GetMaxResidual();
243     int GetNRun();
244     float GetMaxRun();
245     // ------------------------------------
246     // other methods
247     // ------------------------------------
248     float ProfileTest();
249     void GetCornerCoord(int,int,float&,float&);
250     void Print();
251     int GetNWLayers(int ip,int iv){ return ip+(1-iv);}; ///< n.W-layers above an active layer
252     // ------------------------------------
253     // methods to get some shower variables
254     // ------------------------------------
255     float GetQ(int icorr); ///< shower charge (within RMAX and TAUMAX)
256     float GetQ(){ return GetQ(1); }; ///< shower charge (within RMAX and TAUMAX)
257     float GetQView(int icorr,int iv);///< shower charge on x or y view
258     /* float GetQW(int icorr,int iw); */
259     /* float GetQW(int icorr,int iw,int iv); */
260     /* float GetQipiv(int icorr,int ip,int iv); */
261     float GetEnergy(int icorr); ///< shower energy
262     float GetEnergy(){ return GetEnergy(1); };///< shower energy
263     float GetShowerMaximum(float qplane[][2]);
264     float GetShowerMaximum(int icorr);///< shower maximum (in units of W-layers)
265     float GetShowerMaximumX0(int icorr);///< shower maximum (in units of X0)
266     float GetShowerMaximumView(int view,float qplane[][2]);
267     float GetShowerMaximumView(int view,int icorr);///< shower maximum (in units of W-layers)
268     float GetShowerMaximumViewX0(int view,int icorr);///< shower maximum (in units of X0)
269     /* float GetStripMaximum(int iv,int icorr);///< strip traversed by track on maximum plane */
270     /* float GetCoordMaximum(int iv,int icorr);///< coordinate traversed by track on maximum plane */
271     /* float GetStripW(int iw,int iv);///< coordinate traversed by track after iw tungsten planes */
272     /* float GetCoordW(int iw,int iv,int ixy);///< coordinate traversed by track after iw tungsten planes */
273     /* float GetmaxStrip(int ip,int iv); */
274    
275    
276     bool IsInsideFiducial(int level);
277    
278     // ------------------------------------
279     // methods to perform calibration
280     // ------------------------------------
281     void Calibration_Fill();
282    
283    
284     ClassDef(CaloElectron,4);
285    
286     };
287    
288    
289    
290     #endif

  ViewVC Help
Powered by ViewVC 1.1.23