| 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 |
|