1 |
mayorov |
1.1 |
|
2 |
|
|
|
3 |
|
|
/** |
4 |
|
|
* \file ToFPatch.h |
5 |
|
|
* \authors Wolfgang Menn |
6 |
|
|
*/ |
7 |
|
|
#ifndef tofpatch_h |
8 |
|
|
#define tofpatch_h |
9 |
|
|
|
10 |
|
|
#include <PamLevel2.h> |
11 |
|
|
|
12 |
|
|
#include <TTree.h> |
13 |
|
|
#include <TFriendElement.h> |
14 |
|
|
#include <TChain.h> |
15 |
|
|
#include <TFile.h> |
16 |
|
|
#include <TList.h> |
17 |
|
|
#include <TKey.h> |
18 |
|
|
#include <TSystemFile.h> |
19 |
|
|
#include <TSystemDirectory.h> |
20 |
|
|
#include <TSQLServer.h> |
21 |
|
|
|
22 |
|
|
#include <iostream> |
23 |
|
|
|
24 |
|
|
using namespace std; |
25 |
|
|
|
26 |
|
|
|
27 |
|
|
/** |
28 |
|
|
* |
29 |
|
|
* Class to store and calculate variables |
30 |
|
|
*/ |
31 |
|
|
class ToFPatch : public TObject { //class definition |
32 |
|
|
|
33 |
|
|
private: |
34 |
|
|
// |
35 |
|
|
PamLevel2 *L2; |
36 |
|
|
Int_t eNtr; // number of tracker tracks |
37 |
|
|
const char* trkAlg; |
38 |
|
|
// |
39 |
|
|
|
40 |
|
|
UInt_t OBT; |
41 |
|
|
UInt_t PKT; |
42 |
|
|
UInt_t atime; |
43 |
|
|
|
44 |
|
|
Int_t tr; |
45 |
|
|
|
46 |
|
|
Float_t adc_he; |
47 |
|
|
|
48 |
|
|
// Trk dependent values |
49 |
|
|
TArrayF eDEDXpmt; // 0-47 pmt dEdx |
50 |
|
|
TArrayF eDEDXpmtraw; // 0-47 pmt dEdx before 2nd corr |
51 |
|
|
TArrayF eDEDXpad; // 0-23 paddle dEdx |
52 |
|
|
TArrayF eDEDXlayer; // 0-5 layer dEdx |
53 |
|
|
|
54 |
|
|
TArrayF INFOpmt; // 0-47 pmt status |
55 |
|
|
TArrayF INFOlayer; //0-5 layer status |
56 |
|
|
|
57 |
|
|
// ToF standalone values |
58 |
|
|
TArrayF eDEDXpmtstd; // 0-47 pmt dEdx |
59 |
|
|
TArrayF eDEDXpmtrawstd; // 0-47 pmt dEdx before 2nd corr To |
60 |
|
|
TArrayF eDEDXpadstd; // 0-23 paddle dEdx |
61 |
|
|
TArrayF eDEDXlayerstd; // 0-5 layer dEdx |
62 |
|
|
|
63 |
|
|
TArrayF INFOpmtstd; // 0-47 pmt status |
64 |
|
|
TArrayF INFOlayerstd; //0-5 layer status |
65 |
|
|
|
66 |
|
|
// parameters: |
67 |
|
|
TArrayF PMTsat; // 0-47 saturation parameters |
68 |
|
|
|
69 |
|
|
|
70 |
|
|
TArrayF A0_array[100]; // 48 x 100 define an array of 48 elements per each time interval |
71 |
|
|
TArrayF A1_array[100]; |
72 |
|
|
TArrayF A2_array[100]; |
73 |
|
|
TArrayF A3_array[100]; |
74 |
|
|
|
75 |
|
|
Float_t A0[48]; |
76 |
|
|
Float_t A1[48]; |
77 |
|
|
Float_t A2[48]; |
78 |
|
|
Float_t A3[48]; |
79 |
|
|
|
80 |
|
|
UInt_t T_int_min[100]; |
81 |
|
|
UInt_t T_int_max[100]; |
82 |
|
|
UInt_t tmin_atten,tmax_atten; |
83 |
|
|
Int_t ical_atten; |
84 |
|
|
|
85 |
|
|
TArrayF dedx_corr_m[1500]; // 48 x 1500 define an array of 48 elements per each time interval |
86 |
|
|
|
87 |
|
|
UInt_t mtime[2000]; |
88 |
|
|
Int_t ical_2nd; |
89 |
|
|
UInt_t tmin_2nd,tmax_2nd; |
90 |
|
|
|
91 |
|
|
|
92 |
|
|
public: |
93 |
|
|
ToFPatch() {Clear();} // class constructor |
94 |
|
|
~ToFPatch(){ Delete(); }; // class distructor |
95 |
|
|
// |
96 |
|
|
void Clear(Option_t *option=""); |
97 |
|
|
void Delete(Option_t *option="") { Clear(); } |
98 |
|
|
|
99 |
|
|
void InitPar(const char *pardir, const char *param); // init parameters |
100 |
|
|
void Define_PMTsat(); |
101 |
|
|
|
102 |
|
|
void ReadParAtt(const char *pardir, const char *param); |
103 |
|
|
|
104 |
|
|
|
105 |
|
|
|
106 |
|
|
|
107 |
|
|
// void Process( PamLevel2 *l2p, Int_t itr=0 ); ///< Process data for track number itr |
108 |
|
|
void Process( PamLevel2 *l2p, const char* alg ); ///< Process data 10th red |
109 |
|
|
void Print(Option_t *option=""); |
110 |
|
|
// track dependent results |
111 |
|
|
Float_t GetdEdxraw_pmt(Int_t ipmt) { return eDEDXpmtraw[ipmt]; } // 0-47 dEdx for each PMT for tracked events before 2nd order corr |
112 |
|
|
Float_t GetdEdx_pmt(Int_t ipmt) { return eDEDXpmt[ipmt]; } // 0-47 dEdx for each PMT for tracked events |
113 |
|
|
Float_t GetdEdx_pad(Int_t ipad) {return eDEDXpad[ipad];} // 0-23 dEdx for each paddle for tracked events (no request of consistency between PMT's response when both on!) |
114 |
|
|
Float_t GetdEdx_layer(Int_t ilay) {return eDEDXlayer[ilay];} // 0-5 dEdx for each layer for tracked events |
115 |
|
|
// ToF standalone results |
116 |
|
|
Float_t GetdEdxraw_pmtstd(Int_t ipmt) { return eDEDXpmtrawstd[ipmt]; } // 0-47 dEdx for each PMT for tracked events before 2nd order corr |
117 |
|
|
Float_t GetdEdx_pmtstd(Int_t ipmt) { return eDEDXpmtstd[ipmt]; } // 0-47 dEdx for each PMT for tracked events |
118 |
|
|
Float_t GetdEdx_padstd(Int_t ipad) {return eDEDXpadstd[ipad];} // 0-23 dEdx for each paddle for tracked events (no request of consistency between PMT's response when both on!) |
119 |
|
|
Float_t GetdEdx_layerstd(Int_t ilay) {return eDEDXlayerstd[ilay];} // 0-5 dEdx for each layer for tracked events |
120 |
|
|
|
121 |
|
|
Float_t GetInfo_pmt(Int_t ipmt) {return INFOpmt[ipmt];} // 0-47 pmt status |
122 |
|
|
|
123 |
|
|
/* INFOpmt table: |
124 |
|
|
|
125 |
|
|
INFOpmt[ii]=0 ---> everything is ok! |
126 |
|
|
INFOpmt[ii]=1 ---> beta not good (<0.05 || >2) |
127 |
|
|
INFOpmt[ii]=2 ---> PMT OFF |
128 |
|
|
INFOpmt[ii]=3 ---> PMT saturated |
129 |
|
|
INFOpmt[ii]=4 ---> error during the correction for the incidence angle |
130 |
|
|
INFOpmt[ii]=5 ---> error during the correction for the dependence on the position |
131 |
|
|
INFOpmt[ii]=6 ---> error in dEdx reconstruction |
132 |
|
|
INFOpmt[ii]=7 ---> error in Z reconstruction |
133 |
|
|
*/ |
134 |
|
|
|
135 |
|
|
Float_t GetInfo_layer(Int_t ilay) {return INFOlayer[ilay];} // 0-5 layer status |
136 |
|
|
|
137 |
|
|
/* INFOlayer table: |
138 |
|
|
|
139 |
|
|
INFOlayer[ii]=0 ---> everithing is ok! |
140 |
|
|
INFOlayer[ii]=1 ---> beta not good (<0.05 || >2) |
141 |
|
|
INFOlayer[ii]=2 ---> only one PMT is OFF (but you get the other one to have the measurement) |
142 |
|
|
INFOlayer[ii]=3 ---> only one PMT is saturated (but you get the other one to have the measurement) |
143 |
|
|
INFOlayer[ii]=4 ---> only one PMT with a wrong reconstruction (but you get the other one to have the measurement) |
144 |
|
|
INFOlayer[ii]=5 ---> the 2 PMTs involved give different measurement (actually they differ for more then 1.5, to be tuned...) |
145 |
|
|
INFOlayer[ii]=6 ---> saturated layer (both PMTs) |
146 |
|
|
INFOlayer[ii]=7 ---> all PMTs show some error during reconstruction |
147 |
|
|
INFOlayer[ii]=8 ---> 1 PMT is OFF and 1 is saturated (it happens quiet only on S115...) |
148 |
|
|
INFOlayer[ii]=9 ---> OFF layer |
149 |
|
|
*/ |
150 |
|
|
|
151 |
|
|
private: |
152 |
|
|
double f_adcPC( float x ); |
153 |
|
|
double atten(float C0, float C1, float C2, float C3, float x ) ; |
154 |
|
|
|
155 |
|
|
|
156 |
|
|
ClassDef(ToFPatch,1); |
157 |
|
|
}; |
158 |
|
|
|
159 |
|
|
#endif |
160 |
|
|
|