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

Annotation of /DarthVader/CalorimeterLevel2/inc/CaloProcessing.h

Parent Directory Parent Directory | Revision Log Revision Log


Revision 1.1 - (hide annotations) (download)
Fri May 19 13:15:49 2006 UTC (18 years, 6 months ago) by mocchiut
Branch: MAIN
Branch point for: DarthVader
File MIME type: text/plain
Initial revision

1 mocchiut 1.1 /**
2     * \file inc/CaloProcessing.h
3     * \author Emiliano Mocchiutti
4     **/
5     #ifndef CaloProcessing_h
6     #define CaloProcessing_h
7     #include <TObject.h>
8     #include <TROOT.h>
9     //
10     // YODA headers
11     //
12     #include <PamelaRun.h>
13     #include <RegistryEvent.h>
14     #include <physics/calorimeter/CalorimeterEvent.h>
15     #include <CalibCalPedEvent.h>
16     //
17     #include <CaloCore.h>
18     #include <CaloLevel2.h>
19    
20     /**
21     * \brief Class needed to calibrate calorimeter data.
22     *
23     * Calibrates data and connects to fortran routines using structures.
24     *
25     **/
26     class CaloProcessing : public TObject {
27    
28     private:
29     Bool_t debug; ///< debugging flag
30     Bool_t verbose; ///< verbose flag
31     //
32     // variables in which it is stored the calibration information for the four sections
33     //
34     ULong64_t idcalib[4]; ///< ID of root file containing calibrations (one per section)
35     ULong64_t fromtime[4]; ///< lower validity time limit
36     ULong64_t totime[4]; ///< upper validity time limit
37     Int_t calibno[4]; ///< entry of the file
38     TString fcalname[4]; ///< filename of calibrations
39     //
40     // variables needed to open level0 files
41     //
42     TTree *l0tr; ///< level0 tree
43     TBranch *l0calo; ///< level0 calorimeter branch
44     pamela::calorimeter::CalorimeterEvent *de; ///< level0 calorimeter object
45     //
46     //
47     // variables from the calorimeter online calibration
48     //
49     Float_t calped[2][22][96]; ///< pedestals
50     Float_t calgood[2][22][96]; ///< used or not in the common noise calculation
51     Float_t calthr[2][22][6]; ///< thresholds
52     Float_t calrms[2][22][96]; ///< rms
53     Float_t calbase[2][22][6]; ///< baselines (common noise) during calibration
54     Float_t calvar[2][22][6]; ///< variance
55     Float_t cstwerr[4]; ///< status word
56     Float_t cperror[4]; ///< unpacking error flag
57     //
58     // variables needed to calibrate the calorimeter event by event basis
59     //
60     Float_t dexy[2][22][96]; ///< compressed ADC data
61     Float_t dexyc[2][22][96]; ///< RAW ADC data
62     Float_t base[2][22][6]; ///< baselines for this event
63     Float_t sbase[2][22][6]; ///< saved baselines from previous events
64     //
65     // Energy vector
66     //
67     Int_t istrip; ///< number of strip above threshold
68     Float_t svstrip[4224]; ///< saved calibrated energy
69     //
70     // Empty structs to clear faster vectors and arrays
71     //
72     struct FlCaLevel1 *e_clevel1; ///< input structure
73     struct FlCaLevel2 *e_clevel2; ///< output structure
74     //
75     // Variables needed to handle parameters files
76     //
77     Bool_t calopar1; ///< boolean, is true if parameter set number 1 has already been loaded
78     Bool_t calopar2; ///< boolean, is true if parameter set number 2 has already been loaded
79     ULong64_t ftcalopar1; ///< parameter set 1 lower limit validity
80     ULong64_t ttcalopar1; ///< parameter set 1 upper limit validity
81     ULong64_t ftcalopar2; ///< parameter set 2 lower limit validity
82     ULong64_t ttcalopar2; ///< parameter set 2 upper limit validity
83     //
84     // private methods
85     //
86     /**
87     * \param s calorimeter section.
88     **/
89     void ClearCalibVals(Int_t s); ///< clear calibration values for section s
90     void ClearCommonVar(); ///< clear common variables
91     void ClearTrkVar(); ///< clear track-related variables
92     void FindBaseRaw(Int_t l, Int_t m, Int_t pre); ///< calculate baselines starting from RAW data
93     Int_t Update(TSQLServer *dbc, ULong64_t atime, Int_t s); ///< update calibration for this event
94     Int_t LoadCalib(Int_t s); ///< load calibrations
95    
96     public:
97     //
98     // ADC to MIP conversion values
99     //
100     Float_t mip[2][22][96]; ///< ADC to MIP conversion values
101     Float_t emin; ///< Offline threshold to separate noise from signal
102     //
103     // Structures to pass data from/to F77
104     //
105     struct FlCaLevel1 *clevel1; ///< input structure
106     struct FlCaLevel2 *clevel2; ///< output structure
107     //
108     //
109     //
110     Int_t trkseqno; ///< tracker track sequential number (-1 if calorimeter selftrigger)
111     //
112     // useful methods
113     //
114     Int_t ChkParam(TSQLServer *dbc, ULong64_t runheader); ///< check and load parameters data
115     Int_t ChkCalib(TSQLServer *dbc, ULong64_t atime); ///< check and load calibration data
116     Int_t Calibrate(Int_t ei); ///< perform data calibration
117     void GetCommonVar(); ///< call fortran common variables program
118     void GetTrkVar(); ///< call fortran track-related variables program
119     void ClearStructs(); ///< clear input and output structures
120     void FillCommonVar(CaloLevel2 *ca); ///< copy common variables from structure to class
121     void FillTrkVar(CaloLevel2 *ca, Int_t nutrk); ///< copy track-related variables from structure to class
122     void RunClose(); ///< clear variables which could change from one run to another
123     //
124     // constructor
125     //
126     CaloProcessing(); ///< contructor
127     void ProcessingInit(TSQLServer *dbc, ULong64_t hs, Int_t &sgnl, TTree *l0tree, Bool_t debug, Bool_t verbose); ///< initialize caloprocessing object
128     //
129     // virtual destructor
130     //
131     virtual ~CaloProcessing();
132     //
133     };
134    
135     #endif

  ViewVC Help
Powered by ViewVC 1.1.23