/[PAMELA software]/DarthVader/CalorimeterLevel2/inc/CaloLevel0.h
ViewVC logotype

Contents of /DarthVader/CalorimeterLevel2/inc/CaloLevel0.h

Parent Directory Parent Directory | Revision Log Revision Log


Revision 1.12 - (show annotations) (download)
Mon Sep 28 17:06:39 2009 UTC (15 years, 2 months ago) by mocchiut
Branch: MAIN
CVS Tags: v9r00, v9r01
Changes since 1.11: +4 -1 lines
File MIME type: text/plain
Calorimeter: plane 18X now is on by default, variable CaloLevel2::selftrigger meaning changed, bug in selftrigger delay fixed

1 /**
2 * \file inc/CaloLevel0.h
3 * \author Emiliano Mocchiutti
4 **/
5 #ifndef CaloLevel0_h
6 #define CaloLevel0_h
7 #include <TObject.h>
8 #include <TROOT.h>
9 //
10 // YODA headers
11 //
12 #include <PamelaRun.h>
13 #include <physics/calorimeter/CalorimeterEvent.h>
14 #include <CalibCalPedEvent.h>
15 #include <CalibCalPulse1Event.h>
16 #include <CalibCalPulse2Event.h>
17 //
18 #include <CaloCore.h>
19 #include <CaloLevel1.h>
20 #include <CaloLevel2.h>
21
22 using namespace pamela::calorimeter;
23
24 /**
25 * \brief Class needed to calibrate calorimeter data.
26 *
27 * Calibrates data and connects to fortran routines using structures.
28 *
29 **/
30 class CaloLevel0 : public TObject {
31
32 private:
33
34 public:
35 Bool_t debug; ///< debugging flag
36 Bool_t verbose; ///< verbose flag
37 Bool_t crosst; ///< Cross talk correction flag (true apply false do not apply)
38 Bool_t ctground; ///< Cross talk correction type (true ground, false flight)
39 Bool_t noselfct; ///< Pre cross talk correction do not applied to the strip itself
40 //
41 Bool_t mask18; ///< Mask plane 18X flag
42 // variables in which it is stored the calibration information for the four sections
43 //
44 UInt_t idcalib[4]; ///< ID of root file containing calibrations (one per section)
45 UInt_t fromtime[4]; ///< lower validity time limit
46 UInt_t totime[4]; ///< upper validity time limit
47 Int_t calibno[4]; ///< entry of the file
48 TString fcalname[4]; ///< filename of calibrations
49 //
50 // variables needed to open level0 files
51 //
52 TTree *l0tr; ///< level0 tree
53 TBranch *l0calo; ///< level0 calorimeter branch
54 pamela::calorimeter::CalorimeterEvent *de; ///< level0 calorimeter object
55
56 void Set(){ de = new CalorimeterEvent(); };
57
58 void Clear(Option_t *t=""){};
59 void* GetPointerToCalorimeterEvent(){ return &de; };
60 CalorimeterEvent* GetCalorimeterEvent(){ return de; };
61 //
62 //
63 // variables from the calorimeter online calibration
64 //
65 Float_t calped[2][22][96]; ///< pedestals
66 Float_t calgood[2][22][96]; ///< used or not in the common noise calculation
67 Float_t calthr[2][22][6]; ///< thresholds
68 Float_t calrms[2][22][96]; ///< rms
69 Float_t calbase[2][22][6]; ///< baselines (common noise) during calibration
70 Float_t calvar[2][22][6]; ///< variance
71 Float_t cstwerr[4]; ///< status word
72 Float_t cperror[4]; ///< unpacking error flag
73 //
74 // variables needed to calibrate the calorimeter event by event basis
75 //
76 Float_t dexy[2][22][96]; ///< compressed ADC data
77 Float_t dexyc[2][22][96]; ///< RAW ADC data
78 Float_t base[2][22][6]; ///< baselines for this event
79 Float_t sbase[2][22][6]; ///< saved baselines from previous events
80 Float_t ctprecor[2][22][6]; ///< 'cross-talk' correction factor for each pre from pulse calibration or table file
81 Float_t ctneigcor[2][22][6]; ///< 'cross-talk' correction factor for each pre, neighbour strips from pulse calibration or table file
82 Float_t ctsicor[2][22][9]; ///< 'cross-talk' correction factor for each silicon detector
83 Int_t maxrms[2][22]; ///< max rms for each plane, strip with higher values are masked
84 //
85 // Energy vector
86 //
87 Int_t istrip; ///< number of strip above threshold
88 Int_t svstrip[4224]; ///< saved calibrated energy
89 //
90 // Variables needed to handle parameters files
91 //
92 Bool_t calopar1; ///< boolean, is true if parameter set number 101 has already been loaded
93 Bool_t calopar2; ///< boolean, is true if parameter set number 102 has already been loaded
94 Bool_t calopar3; ///< boolean, is true if parameter set number 103 has already been loaded
95 Bool_t calopar4; ///< boolean, is true if parameter set number 103 has already been loaded
96 Bool_t calopar5; ///< boolean, is true if parameter set number 103 has already been loaded
97 UInt_t ftcalopar1; ///< parameter set 101 lower limit validity
98 UInt_t ttcalopar1; ///< parameter set 101 upper limit validity
99 UInt_t ftcalopar2; ///< parameter set 102 lower limit validity
100 UInt_t ttcalopar2; ///< parameter set 102 upper limit validity
101 UInt_t ftcalopar3; ///< parameter set 103 lower limit validity
102 UInt_t ttcalopar3; ///< parameter set 103 upper limit validity
103 UInt_t ftcalopar4; ///< parameter set 103 lower limit validity
104 UInt_t ttcalopar4; ///< parameter set 103 upper limit validity
105 UInt_t ftcalopar5; ///< parameter set 103 lower limit validity
106 UInt_t ttcalopar5; ///< parameter set 103 upper limit validity
107 //
108 void ClearCalibVals(Int_t s); ///< clear calibration values for section s
109 void ClearCommonVar(); ///< clear common variables
110 void ClearTrkVar(); ///< clear track-related variables
111 void FindBaseRaw(Int_t l, Int_t m, Int_t pre); ///< calculate baselines starting from RAW data
112 void FindBaseCompress(Int_t l, Int_t m, Int_t pre); ///< calculate baselines starting from COMPRESS data
113 void FindBaseRaw(Int_t l, Int_t m, Int_t pre,Int_t &nst, Float_t &qp); ///< calculate baselines starting from RAW data
114 void FindBaseCompress(Int_t l, Int_t m, Int_t pre,Int_t &nst, Float_t &qp); ///< calculate baselines starting from COMPRESS data
115 Int_t Update(GL_TABLES *glt, UInt_t atime, Int_t s); ///< update calibration for this event
116 Int_t LoadCalib(Int_t s); ///< load calibrations
117
118 //
119 // ADC to MIP conversion values
120 //
121 Float_t mip[2][22][96]; ///< ADC to MIP conversion values
122 Int_t obadmask[2][22][96]; ///< Offline mask of bad strips (not used to calculate baselines and calorimeter variables)
123 Int_t obadpulsemask[2][22][96]; ///< Offline mask of bad pulser (not used to calculate crosstalk corrections)
124 Float_t emin; ///< Offline threshold to separate noise from signal
125 Float_t memin[2][22][96]; ///< Offline threshold to separate noise from signal
126 //
127 // Structures to pass data from/to F77
128 //
129 struct FlCaLevel1 *clevel1; ///< input structure
130 struct FlCaLevel2 *clevel2; ///< output structure
131 /* // */
132 /* struct FlEventi *eventi; */
133 /* struct FlGruppo *gruppo; */
134 /* struct FlGruppo2 *gruppo2; */
135 /* struct FlGruppo4 *gruppo4; */
136 /* struct FlTaglioen *taglioen; */
137 /* struct FlAngolo *angolo; */
138 /* struct FlWhere *where; */
139 /* struct FlGeneral *general; */
140 /* struct FlCh *ch; */
141 /* struct FlCalofit *calofit; */
142 /* struct FlPawcd *pawcd; */
143 /* struct FlQuestd *questd; */
144 /* // */
145 //
146 //
147 //
148 Int_t trkseqno; ///< tracker track sequential number (-1 if calorimeter selftrigger)
149 //
150 // useful methods
151 //
152 Int_t ChkParam(GL_TABLES *glt, UInt_t runheader, Bool_t mech); ///< check and load parameters data
153 Int_t ChkParam(TSQLServer *dbc, UInt_t runheader, Bool_t mech); ///< check and load parameters data
154 Int_t ChkParamDo(TSQLServer *dbc, UInt_t runheader, Bool_t mech); ///< check and load parameters data
155 Int_t ChkCalib(GL_TABLES *glt, UInt_t atime); ///< check and load calibration data
156 Int_t CalcCrossTalkCorr(GL_TABLES *glt, UInt_t runheader); ///< calculate the cross talk corretion using CaloPulse information from flight calibrations
157 Int_t CalcCrossTalkCorr(TSQLServer *dbc, UInt_t runheader); ///< calculate the cross talk corretion using CaloPulse information from flight calibrations
158 Int_t CalcCrossTalkCorr(GL_TABLES *glt, UInt_t runheader, Bool_t usetable); ///< calculate the cross talk corretion using CaloPulse information from flight calibrations
159 Int_t CalcCrossTalkCorr(TSQLServer *dbc, UInt_t runheader, Bool_t usetable); ///< calculate the cross talk corretion using CaloPulse information from flight calibrations
160 Int_t CalcCrossTalkCorrDo(TSQLServer *dbc, UInt_t runheader, Bool_t usetable); ///< calculate the cross talk corretion using CaloPulse information from flight calibrations
161 Int_t Calibrate(Int_t ei); ///< perform data calibration
162 void GetCommonVar(); ///< call fortran common variables program
163 void GetTrkVar(); ///< call fortran track-related variables program
164 void ClearStructs(); ///< clear input and output structures
165 void FillCommonVar(CaloLevel1 *c1, CaloLevel2 *ca); ///< copy common variables from structure to class
166 void FillTrkVar(CaloLevel2 *ca, Int_t nutrk); ///< copy track-related variables from structure to class
167 void RunClose(); ///< clear variables which could change from one run to another
168 void SetCrossTalk(Bool_t ct);
169 void SetCrossTalkType(Bool_t ct);
170 void SetCrossTalkType(Int_t ct);
171 void SetVerbose(Bool_t ct);
172 void MaskPlane18X(){ mask18 = true;};
173 void UnMaskPlane18X(){ mask18 = false;};
174 //
175 // constructor
176 //
177 CaloLevel0(); ///< contructor
178 void Delete(Option_t *t=""); //ELENA
179 void ProcessingInit(GL_TABLES *glt, UInt_t hs, Int_t &sgnl, TTree *l0tree, Bool_t debug, Bool_t verbose); ///< initialize caloprocessing object
180 void ProcessingInit(TSQLServer *dbc, UInt_t hs, Int_t &sgnl, TTree *l0tree, Bool_t debug, Bool_t verbose); ///< initialize caloprocessing object
181 void InitDo(TSQLServer *dbc, UInt_t hs, Int_t &sgnl, TTree *l0tree, Bool_t debug, Bool_t verbose); ///< initialize caloprocessing object
182 //
183 // destructor
184 //
185 ~CaloLevel0();///< destructor
186 //
187 ClassDef(CaloLevel0,5);
188 };
189
190 #endif

  ViewVC Help
Powered by ViewVC 1.1.23