File indexing completed on 2023-10-25 09:33:27
0001 #ifndef CalibCalorimetry_EcalLaserAnalyzer_MELaserPrim_h
0002 #define CalibCalorimetry_EcalLaserAnalyzer_MELaserPrim_h
0003
0004 #include <iostream>
0005 #include <fstream>
0006 #include <vector>
0007 #include <map>
0008
0009 #include "TROOT.h"
0010 #include "TChain.h"
0011 #include "TH2I.h"
0012 #include "TH2F.h"
0013 #include "TFile.h"
0014 #include "TString.h"
0015
0016 #include "ME.h"
0017
0018 class MELaserPrim {
0019 public:
0020
0021 enum { iAPD, iAPDoPN, iAPDoPNA, iAPDoPNB, iAPDoAPD, iAPDoAPDA, iAPDoAPDB, iTime, iSizeArray_apdpn };
0022 enum { iMean, iRMS, iM3, iNevt, iMin, iMax, iSize_apdpn };
0023 enum { iShapeCor, iSizeExtra_apdpn };
0024 enum { iAlpha, iBeta, iWidth, iChi2, iSize_ab };
0025 enum { iPeak, iSigma, iFit, iAmpl, iTrise, iFwhm, iFw20, iFw80, iSlide, iSize_mtq };
0026
0027 enum { iGain0, iGain1, iGain2, iGain3, iSize_gain };
0028
0029
0030 enum {
0031 iECAL,
0032 iECAL_LMR,
0033 iEB_crystal_number,
0034 iEB_LM_LMM,
0035 iEB_LM_PN,
0036 iEE_crystal_number,
0037 iEE_LM_LMM,
0038 iEE_LM_PN,
0039 iSize_cv
0040 };
0041 static TString channelViewName(int);
0042 static int logicId(int channelView, int id1, int id2 = 0);
0043 static bool getViewIds(int logicId, int &channelView, int &id1, int &id2);
0044
0045
0046 MELaserPrim(ME::Header header, ME::Settings settings, const char *inpath, const char *outfile);
0047
0048
0049 virtual ~MELaserPrim();
0050
0051
0052 bool init_ok;
0053 void init();
0054 void bookHistograms();
0055 void fillHistograms();
0056 void writeHistograms();
0057 void print(std::ostream &o);
0058
0059
0060 static TString lmfLaserName(int table, int type, int color = ME::iBlue);
0061
0062
0063 bool setInt(const char *, int ix, int iy, int ival);
0064 bool setVal(const char *, int ix, int iy, float val);
0065
0066
0067 bool setInt(const char *tname, const char *vname, int ival);
0068 bool setVal(const char *tname, const char *vname, float val);
0069
0070 bool fill(const char *tname);
0071
0072
0073 Int_t getInt(const char *, int ix, int iy);
0074 Float_t getVal(const char *, int ix, int iy);
0075
0076 static const TString separator;
0077
0078 private:
0079
0080 int _reg;
0081 bool _isBarrel;
0082 int _lmr;
0083 int _dcc;
0084 int _side;
0085 int _run;
0086 int _lb;
0087 int _events;
0088
0089 int _type;
0090 int _color;
0091 int _power;
0092 int _filter;
0093 int _delay;
0094
0095
0096 ME::TimeStamp _ts;
0097 ME::TimeStamp _ts_beg;
0098 ME::TimeStamp _ts_end;
0099
0100 int _mgpagain;
0101 int _memgain;
0102
0103
0104 int _ecal_region;
0105 int _sm;
0106
0107
0108 TString _sectorStr;
0109 TString _regionStr;
0110 TString _primStr;
0111 TString _pnPrimStr;
0112 TString _pulseStr;
0113 TString _tpPrimStr;
0114 TString _tpPnPrimStr;
0115
0116
0117 TFile *apdpn_file;
0118 TFile *ab_file;
0119 TFile *pn_file;
0120 TFile *mtq_file;
0121 TFile *tpapd_file;
0122 TFile *out_file;
0123
0124
0125 TTree *apdpn_tree;
0126 TTree *ab_tree;
0127 TTree *pn_tree;
0128 TTree *mtq_tree;
0129 TTree *tpapd_tree;
0130 TTree *tppn_tree;
0131
0132
0133 TString _inpath;
0134
0135
0136 TString _outfile;
0137
0138
0139 int nx;
0140 int ixmin;
0141 int ixmax;
0142 int ny;
0143 int iymin;
0144 int iymax;
0145
0146
0147 std::map<TString, TH2 *> i_h;
0148 std::map<TString, TH2 *> f_h;
0149
0150
0151 std::map<TString, TTree *> t_t;
0152 std::map<TString, int> i_t;
0153 std::map<TString, float> f_t;
0154 std::map<TString, const char *> c_t;
0155
0156
0157 Int_t apdpn_dccID;
0158 Int_t apdpn_towerID;
0159 Int_t apdpn_channelID;
0160 Int_t apdpn_moduleID;
0161
0162 Int_t apdpn_side;
0163 Int_t apdpn_ieta;
0164 Int_t apdpn_iphi;
0165 Int_t apdpn_flag;
0166 Double_t apdpn_ShapeCor;
0167 Double_t apdpn_apdpn[iSizeArray_apdpn][iSize_apdpn];
0168
0169
0170 Int_t ab_dccID;
0171 Int_t ab_towerID;
0172 Int_t ab_channelID;
0173 Int_t ab_ieta;
0174 Int_t ab_iphi;
0175 Int_t ab_flag;
0176 Double_t ab_ab[iSize_ab];
0177
0178
0179 Int_t pn_side;
0180 Int_t pn_pnID;
0181 Int_t pn_moduleID;
0182 Double_t pn_PN[iSize_apdpn];
0183 Double_t pn_PNoPN[iSize_apdpn];
0184 Double_t pn_PNoPNA[iSize_apdpn];
0185 Double_t pn_PNoPNB[iSize_apdpn];
0186
0187
0188 Int_t mtq_side;
0189 Int_t mtq_color;
0190 Double_t mtq_mtq[iSize_mtq];
0191
0192
0193 Int_t tpapd_iphi;
0194 Int_t tpapd_ieta;
0195 Int_t tpapd_dccID;
0196 Int_t tpapd_side;
0197 Int_t tpapd_towerID;
0198 Int_t tpapd_channelID;
0199 Int_t tpapd_moduleID;
0200 Int_t tpapd_flag;
0201 Int_t tpapd_gain;
0202 Double_t tpapd_APD[iSize_apdpn];
0203
0204
0205 Int_t tppn_side;
0206 Int_t tppn_pnID;
0207 Int_t tppn_moduleID;
0208 Int_t tppn_gain;
0209 Double_t tppn_PN[iSize_apdpn];
0210
0211
0212 TBranch *b_apdpn_dccID;
0213 TBranch *b_apdpn_towerID;
0214 TBranch *b_apdpn_channelID;
0215 TBranch *b_apdpn_moduleID;
0216
0217 TBranch *b_apdpn_side;
0218 TBranch *b_apdpn_ieta;
0219 TBranch *b_apdpn_iphi;
0220 TBranch *b_apdpn_flag;
0221 TBranch *b_apdpn_ShapeCor;
0222 TBranch *b_apdpn_apdpn[iSizeArray_apdpn];
0223
0224
0225 TBranch *b_ab_dccID;
0226 TBranch *b_ab_towerID;
0227 TBranch *b_ab_channelID;
0228 TBranch *b_ab_ieta;
0229 TBranch *b_ab_iphi;
0230 TBranch *b_ab_flag;
0231 TBranch *b_ab_ab[iSize_ab];
0232
0233
0234 TBranch *b_pn_side;
0235 TBranch *b_pn_pnID;
0236 TBranch *b_pn_moduleID;
0237 TBranch *b_pn_PN;
0238 TBranch *b_pn_PNoPN;
0239 TBranch *b_pn_PNoPNA;
0240 TBranch *b_pn_PNoPNB;
0241
0242
0243 TBranch *b_mtq_side;
0244 TBranch *b_mtq_color;
0245 TBranch *b_mtq_mtq[iSize_mtq];
0246
0247
0248 TBranch *b_tpapd_iphi;
0249 TBranch *b_tpapd_ieta;
0250 TBranch *b_tpapd_dccID;
0251 TBranch *b_tpapd_side;
0252 TBranch *b_tpapd_towerID;
0253 TBranch *b_tpapd_channelID;
0254 TBranch *b_tpapd_moduleID;
0255 TBranch *b_tpapd_flag;
0256 TBranch *b_tpapd_gain;
0257 TBranch *b_tpapd_APD;
0258
0259
0260 TBranch *b_tppn_side;
0261 TBranch *b_tppn_pnID;
0262 TBranch *b_tppn_moduleID;
0263 TBranch *b_tppn_gain;
0264 TBranch *b_tppn_PN;
0265
0266 static const TString apdpn_arrayName[iSizeArray_apdpn];
0267 static const TString apdpn_varName[iSize_apdpn];
0268 static const TString apdpn_varUnit[iSizeArray_apdpn][iSize_apdpn];
0269 static const TString apdpn_extraVarName[iSizeExtra_apdpn];
0270 static const TString apdpn_extraVarUnit[iSizeExtra_apdpn];
0271 static const TString ab_varName[iSize_ab];
0272 static const TString mtq_varName[iSize_mtq];
0273 static const TString mtq_varUnit[iSize_mtq];
0274
0275 void setHistoStyle(TH1 *);
0276 void refresh();
0277 void addBranchI(const char *t_name, const char *v_name);
0278 void addBranchF(const char *t_name, const char *v_name);
0279 void addBranchC(const char *t_name, const char *v_name);
0280 void bookHistoI(const char *t_name, const char *v_name);
0281 void bookHistoF(const char *t_name, const char *v_name);
0282
0283
0284 };
0285
0286 #endif